MagicMeme exposes a Model Context Protocol server so Cursor, Claude, and other clients can search templates and render stills the same way they call a database.
The server URL is:
{
"mcpServers": {
"magicmeme": {
"type": "http",
"url": "https://magicmeme.com/api/mcp"
}
}
}
Use HTTPS in production. The client should speak Streamable HTTP (POST). GET and DELETE are not used.
There is no OAuth dance on this URL. Catalog tools run without a user. generate_meme_captions on hosted HTTP uses our models (guest / session rules match POST /api/ai/captions when you go through HTTP). Production face swap is not "bring your OpenRouter key": use credits or MPP.
Local stdio (this repository, Cursor Cloud / internal):
bun run scripts/mcp-server.ts
Omit settlement on face_swap_meme there and the process OPENROUTER_API_KEY generates. Don't ship that to a customer agent.
What the tools can do
Once connected, the agent can:
- Search the live catalog by situation, tag, or keywords
- Read one template: boxes, formula, example captions, CDN
imageUrl - Generate caption variants (not pixels)
- Render a composed still (
imageBase64, jpeg by default) - Start a face-swap settlement (MPP link, credits URLs, or local generate)
- Build a
/createstudio URL
It cannot invent a hosted URL for a finished meme. It cannot publish face/reference outputs via POST /api/shares.
The six tools
- search_templates: which templates fit this situation?
- get_template: how many boxes, and what is the formula?
- generate_meme_captions: write four caption sets
- render_meme_still: show the finished jpeg
- face_swap_meme: swap a face, pay or use credits
- get_create_url: link for a human to edit
Each tool page has a request and a real-shaped response. Caption JSON is not a still. Call render_meme_still when the user should see pixels.
Pair MCP with a skill
Connecting MCP is not the same as knowing the workflow. Point the agent at llms.txt or the agent skill so it does not reply with ASCII.
What to read next
- Tools for arguments
- Get started if you have not connected yet
- Troubleshooting for empty stills and 402