Meme Generator MCP
An MCP (Model Context Protocol) server that generates memes with custom text overlays. Built with FastMCP and Pillow.
https://github.com/user-attachments/assets/9b8b47f3-ec54-41ed-913c-a2807cbc93d4
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+
MCP Configuration
Add the server to your MCP client configuration:
Local Development
MCP configuration for local development:
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:
generate_meme
Generate a meme with custom text overlays.
Parameters:
meme_name: The type of meme to generatetexts: Dictionary mapping placeholder names to text values
Example:
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 |
| Custom path to meme templates directory |
|
| Custom path for generated memes |
|
| Custom path to 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 imagesapp/meme_configs.json- add meme configurations
Configuration example:
Placeholder Options
Option | Type | Default | Description |
| int | required | X coordinate for text position |
| int | required | Y coordinate for text position |
| int | required | Maximum width before text wraps |
| string |
| Text alignment:
,
, or
|
| int |
| Font size in pixels |
| string |
| Text color |
| string |
| Outline color |
| int |
| Outline width in pixels |
License
MIT