Skip to content

MCP server for generating memes with custom text overlays

License

Notifications You must be signed in to change notification settings

t0ster/meme-generator-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meme Generator MCP

An MCP (Model Context Protocol) server that generates memes with custom text overlays. Built with FastMCP and Pillow.

Screen.Recording.2025-12-19.at.02.20.44.mov

Features

  • Generate memes from pre-configured templates
  • Customizable text overlays with automatic word wrapping
  • Extensible configuration for adding custom templates

Available Memes

See meme_configs.json for the list of available memes and their text placeholders, and meme_templates/ for the template images.

Requirements

  • Python 3.12+
  • uv

MCP Configuration

Add the server to your MCP client configuration:

{
  "mcpServers": {
    "meme-generator": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/t0ster/meme-generator-mcp",
        "meme-generator-mcp"
      ]
    }
  }
}

Local Development

git clone https://github.com/t0ster/meme-generator-mcp.git
cd meme-generator-mcp
uv sync

MCP configuration for local development:

{
  "mcpServers": {
    "meme-generator": {
      "command": "uv",
      "args": ["run", "meme-generator-mcp", "--dev"]
    }
  }
}

The --dev flag uses local app/meme_templates/ and app/meme_configs.json instead of copying to the config directory.

Tools

get_meme_info

Get information about available memes and their placeholder requirements.

Parameters:

  • meme_name (optional): Get info for a specific meme

Example:

{
  "meme_name": "drake_pointing"
}

generate_meme

Generate a meme with custom text overlays.

Parameters:

  • meme_name: The type of meme to generate
  • texts: Dictionary mapping placeholder names to text values

Example:

{
  "meme_name": "drake_pointing",
  "texts": {
    "disapprove": "Writing documentation",
    "approve": "Generating memes"
  }
}

Generated memes are saved to ~/.config/meme-generator-mcp/generated_memes/ by default (customizable via MEME_GENERATOR_MCP_OUTPUT_PATH).

Environment Variables

Variable Description Default
MEME_GENERATOR_MCP_TEMPLATES_PATH Custom path to meme templates directory ~/.config/meme-generator-mcp/meme_templates
MEME_GENERATOR_MCP_OUTPUT_PATH Custom path for generated memes ~/.config/meme-generator-mcp/generated_memes
MEME_GENERATOR_MCP_CONFIGS_PATH Custom path to meme configs JSON ~/.config/meme-generator-mcp/meme_configs.json

On Windows, the default config directory is %LOCALAPPDATA%\meme-generator-mcp.

Adding Custom Memes

For personal use: Edit files in your config directory:

  • ~/.config/meme-generator-mcp/meme_templates/ - add template images
  • ~/.config/meme-generator-mcp/meme_configs.json - add meme configurations

For contributing (dev mode): Edit files in the repo:

  • app/meme_templates/ - add template images
  • app/meme_configs.json - add meme configurations

Configuration example:

{
  "my_custom_meme": {
    "template_file": "my_template.jpg",
    "placeholders": {
      "top_text": {
        "x": 300,
        "y": 20,
        "max_width": 500,
        "align": "center",
        "font_size": 40,
        "fill": "white",
        "stroke_fill": "black",
        "stroke_width": 2
      }
    }
  }
}

Placeholder Options

Option Type Default Description
x int required X coordinate for text position
y int required Y coordinate for text position
max_width int required Maximum width before text wraps
align string "center" Text alignment: "left", "center", or "right"
font_size int 40 Font size in pixels
fill string "white" Text color
stroke_fill string "black" Outline color
stroke_width int 2 Outline width in pixels

License

MIT

About

MCP server for generating memes with custom text overlays

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages