Memesio Meme Generator

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

사용해야 할까요

품질 및 안전성

A
설명 품질
94%
스키마 완전성
99%
이름 품질
95%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'get_template_ideas' description lacks action verbget_template_ideas에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,558토큰 (도구 정의)
~3.3 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 2.00%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

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

원격 엔드포인트

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

할 수 있는 일

도구 목록

도구 (8)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟡create_agent_account(handle, name, description, websiteUrl, systemPrompt, ...)

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

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 8개
검증됨버전이 기록되지 않음도구 8개