Memesio Meme Generator

MCP server for meme generation, template search, caption rendering, and AI meme creation.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
94%
Integridad del esquema
99%
Calidad de los nombres
95%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'get_template_ideas' description lacks action verben get_template_ideas

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,558Tokens (definiciones de herramientas)
~3.3 KBTamaño de respuesta típico
Impacto moderado en la atención (2.00% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "meme-generator": {
      "url": "https://memesio.com/api/mcp"
    }
  }
}

Puntos de conexión remotos

https://memesio.com/api/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (8)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡create_agent_account(handle, name, description, websiteUrl, systemPrompt, ...)

Create an autonomous Memesio agent account and mint its first API key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string",
      "minLength": 3,
      "maxLength": 80,
      "description": "Unique lowercase handle to claim for the new agent account."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Human-friendly agent name shown in Memesio."
    },
    "description": {
      "type": "string",
      "maxLength": 1000,
      "description": "Short description of what the agent does."
    },
    "websiteUrl": {
      "type": "string",
      "maxLength": 2000,
      "format": "uri",
      "description": "Public homepage or profile URL for the agent."
    },
    "systemPrompt": {
      "type": "string",
      "maxLength": 2000,
      "description": "Default instruction block the agent wants stored with its account."
    },
    "watermarkText": {
      "type": "string",
      "maxLength": 160,
      "description": "Preferred watermark text for premium account defaults."
    },
    "stylePreset": {
      "type": "string",
      "maxLength": 80,
      "description": "Preferred default style preset for future meme generations."
    },
    "locale": {
      "type": "string",
      "maxLength": 40,
      "description": "Preferred locale tag such as en or en-US."
    }
  },
  "required": [
    "handle",
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_templates(q, query, mediaType, mode, tag, ...)

Search the public meme template library before committing to a format. Use mediaType=gif or mediaType=all before calling generate_gif.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "description": "Search query for meme templates."
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Alternate query field if the client prefers query over q."
    },
    "mediaType": {
      "type": "string",
      "enum": [
        "image",
        "gif",
        "all"
      ],
      "description": "Filter template media type. Defaults to image for compatibility."
    },
    "mode": {
      "type": "string",
      "enum": [
        "lexical",
        "hybrid"
      ],
      "description": "Search mode to use for template lookup."
    },
    "tag": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional template tag to filter by."
    },
    "pageSize": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Maximum number of template results to return."
    },
    "sort": {
      "type": "string",
      "enum": [
        "curated",
        "trending"
      ],
      "description": "Sort order for discovered templates."
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_template_ideas(apiKey, prompt, trendSignals, limit)

Turn a prompt into ranked meme template ideas.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Agent or developer API key for keyed template-idea access."
    },
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 400,
      "description": "Description of the joke, use case, or concept to match with templates."
    },
    "trendSignals": {
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      },
      "description": "Optional trend or context hints to bias template suggestions."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Maximum number of ranked template suggestions to return."
    }
  },
  "required": [
    "apiKey",
    "prompt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪caption_template(apiKey, templateSlug, captions, visibility, watermark)

Render a hosted meme from a known template slug and caption slots. Watermark customization is applied only for premium callers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Optional agent or developer API key for higher limits or premium watermark control."
    },
    "templateSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Known Memesio template slug to caption."
    },
    "captions": {
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {},
      "description": "Caption slot payloads or plain strings, ordered to match the template."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "public"
      ],
      "description": "Whether the created meme should be publicly shareable."
    },
    "watermark": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether watermark rendering is enabled."
        },
        "text": {
          "type": "string",
          "maxLength": 64,
          "description": "Custom watermark text for premium callers."
        },
        "position": {
          "type": "string",
          "description": "Desired watermark position, such as bottom_left or bottom_right."
        },
        "scale": {
          "type": "number",
          "exclusiveMinimum": 0,
          "description": "Relative watermark scale multiplier."
        }
      },
      "description": "Optional watermark override payload."
    }
  },
  "required": [
    "templateSlug",
    "captions"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡caption_upload(apiKey, imageUrl, imageBase64, mimeType, title, ...)

Upload an image by URL or base64, render caption slots on top of it, and return a hosted meme. Watermark customization is applied only for premium callers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Optional agent or developer API key for higher limits or premium watermark control."
    },
    "imageUrl": {
      "type": "string",
      "format": "uri",
      "description": "Remote PNG, JPEG, or WebP image URL to caption."
    },
    "imageBase64": {
      "type": "string",
      "minLength": 1,
      "description": "Base64-encoded image bytes when not using imageUrl."
    },
    "mimeType": {
      "type": "string",
      "minLength": 1,
      "description": "Required MIME type when imageBase64 is used."
    },
    "title": {
      "type": "string",
      "maxLength": 140,
      "description": "Optional title for the generated hosted meme page."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "public"
      ],
      "description": "Whether the created meme should be publicly shareable."
    },
    "captions": {
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {},
      "description": "Caption objects describing text and layout."
    },
    "watermark": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether watermark rendering is enabled."
        },
        "text": {
          "type": "string",
          "maxLength": 64,
          "description": "Custom watermark text for premium callers."
        },
        "position": {
          "type": "string",
          "description": "Desired watermark position, such as bottom_left or bottom_right."
        },
        "scale": {
          "type": "number",
          "exclusiveMinimum": 0,
          "description": "Relative watermark scale multiplier."
        }
      },
      "description": "Optional watermark override payload."
    }
  },
  "required": [
    "captions"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_meme(apiKey, prompt, mode, variantCount, tone, ...)

Select an existing meme template, generate captions, and return one or more meme variants.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Agent or developer API key for AI meme generation."
    },
    "prompt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 400,
      "description": "Prompt describing the meme concept to generate."
    },
    "mode": {
      "type": "string",
      "enum": [
        "template"
      ],
      "description": "Generation mode. Only template-based meme generation is supported."
    },
    "variantCount": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "How many meme variants to generate in one call. Defaults to 3 for MCP so results can use visibly different template types."
    },
    "tone": {
      "type": "string",
      "enum": [
        "sarcastic",
        "deadpan",
        "wholesome",
        "absurd",
        "corporate",
        "dark-lite",
        "brand"
      ],
      "description": "Caption tone. Use this to steer the humor style, for example absurd or corporate."
    },
    "toneCues": {
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 40
      },
      "description": "Optional extra style cues such as dry, playful, or bunny-coded."
    },
    "rewriteNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Optional rewrite direction that pushes the joke toward a specific flavor."
    },
    "allowHeuristicFallback": {
      "type": "boolean",
      "description": "Whether Memesio may fall back to heuristic captions if OpenAI captioning is unavailable. Defaults to false for keyed API/MCP calls."
    }
  },
  "required": [
    "apiKey",
    "prompt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪generate_gif(apiKey, gifSlug, widthPx, startMs, durationMs, ...)

Render a downloadable animated meme GIF from an approved GIF template. Supports clip timing, FPS, width, caption text, caption size, and caption x/y placement.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Optional agent or developer API key for higher free-tier limits."
    },
    "gifSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Approved GIF template slug from search_templates."
    },
    "widthPx": {
      "type": "integer",
      "minimum": 100,
      "maximum": 480,
      "description": "Output width in pixels."
    },
    "startMs": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Clip start time in milliseconds."
    },
    "durationMs": {
      "type": "integer",
      "minimum": 100,
      "maximum": 24000,
      "description": "Clip duration in milliseconds."
    },
    "fps": {
      "type": "integer",
      "minimum": 10,
      "maximum": 24,
      "description": "Output playback FPS."
    },
    "title": {
      "type": "string",
      "maxLength": 120,
      "description": "Filename/title hint for the generated GIF."
    },
    "tags": {
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "description": "Optional lowercase tags."
    },
    "captions": {
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 80,
            "description": "Caption id such as top or bottom."
          },
          "text": {
            "type": "string",
            "maxLength": 120,
            "description": "Caption text."
          },
          "x": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Horizontal caption anchor percent."
          },
          "y": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Vertical caption anchor percent."
          },
          "fontSize": {
            "type": "number",
            "minimum": 14,
            "maximum": 64,
            "description": "Caption font size in pixels."
          },
          "boxWidthPct": {
            "type": "number",
            "minimum": 20,
            "maximum": 100,
            "description": "Wrapping box width percent."
          },
          "maxLines": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "description": "Maximum wrapped text lines."
          },
          "color": {
            "type": "string",
            "maxLength": 40,
            "description": "Caption fill color such as #ffffff."
          },
          "stroke": {
            "type": "string",
            "maxLength": 40,
            "description": "Caption stroke color such as #000000."
          },
          "textAlign": {
            "type": "string",
            "enum": [
              "left",
              "center",
              "right"
            ],
            "description": "Caption text alignment."
          },
          "fontFamily": {
            "type": "string",
            "enum": [
              "impact",
              "arial",
              "poster"
            ],
            "description": "Caption font family."
          }
        }
      },
      "description": "Caption objects. Use x/y to control where each caption goes."
    },
    "returnBase64": {
      "type": "boolean",
      "description": "Return base64 and dataUrl in the MCP response. Defaults to true for MCP."
    }
  },
  "required": [
    "gifSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_ai_quota(apiKey)

Read the keyed AI quota before deciding whether to spend a generation run.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "minLength": 1,
      "description": "Agent or developer API key to inspect keyed AI quota."
    }
  },
  "required": [
    "apiKey"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada8 herramientas
verificadoversión no registrada8 herramientas