# Meme Studio

> A meme editor that runs in the browser, in Spanish and English, with an MCP server for AI agents: the agent finds a template in the catalog, or uses a photo of the person's, writes the captions and gets back the finished meme and a link that opens it in the editor, where the person can adjust it and download it with an invisible watermark.

## Connect an agent

The MCP server is remote and stateless (streamable HTTP, JSON responses, no sessions) at `https://memes.mrhyde.dev/mcp`. There is no key, account or sign-up.

Claude Code:

```sh
claude mcp add --transport http memes https://memes.mrhyde.dev/mcp
```

Clients that read an `mcpServers` file:

```json
{
  "mcpServers": {
    "memes": {
      "type": "http",
      "url": "https://memes.mrhyde.dev/mcp"
    }
  }
}
```

The help page explains it for each client (claude.ai, Claude Desktop, Claude Code, opencode, VS Code, Cursor and Gemini CLI): https://memes.mrhyde.dev/en/?conectar

## Tools

- `search_templates`: search the catalog by name, keywords or what the meme is used for, in Spanish or English.
- `get_template`: one template with its slots (the boxes where captions go) and how many characters fit in each, optionally with the picture of the numbered slots; or the slots found in your own photo.
- `popular_templates`: the templates people choose most in Meme Studio, this week or overall.
- `create_meme`: the meme on a template or on your own photo, with a preview to check it or the finished picture (an animated GIF for an animated template), `deliver` saying what to give the person and `edit_url`, the link that opens it in the editor.

## Your own photo

Instead of a template, `get_template` and `create_meme` take `image` (the photo in base64, or a data: URL) or `image_url` (an https address the server downloads). An agent with a terminal sends a file from disk by piping the `tools/call` JSON into `curl --data-binary @-` to the MCP address, without an `initialize`; the tool descriptions give the sizes and formats it accepts.

## Privacy and fair use

- Nothing the agent sends is stored: searches, captions, handles and photos are used to answer and then dropped. The link carries the meme in its fragment, except a photo, which the editor asks for again. The server keeps only daily counts, with no text and no address.
- Every person and the whole server have quotas. A refused tool call says `rate_limited` or `busy` with `retry_after` in seconds; Tor exits share one person's quota, and addresses that abuse the server can be blocked.

## Machine-readable

- [Server card](https://memes.mrhyde.dev/mcp/server-card): the MCP server's name, version and endpoint, before connecting
- [AI catalog](https://memes.mrhyde.dev/.well-known/ai-catalog.json): the MCP servers this site lists
