mcp-meme-sticky
mcp-meme-sticky
使用 MCP Meme Sticky 创建 AI 生成的表情包。可以将生成的表情包转换为 Telegram 或 WhatsApp 贴纸(WA 功能即将推出)。✨ 无需 API ✨。
对于 Telegram,MCP 服务器会生成一个链接,可以将图片制作成贴纸。详情请见:MCP-Sticky Telegram Bot。
归因
MCP 服务器使用多种服务。感谢以下服务/库。
Memegen :GOATED 开源 meme 生成器!
Mediapipe :Mediapipe 的文本嵌入器允许我选择 meme 模板。
PythonAnywhere :免费的 Python 云服务!它为Telegram 机器人提供支持。
icrawler :我的图像爬虫很大程度上受到他们的库的启发。
FastMCP :FastMCP 使制作 Python MCP 服务器变得更容易!
Related MCP server: Meme Generator MCP
已完成的工作
模因生成
[x] 可以根据提示生成自定义模因。
[x] 可以将生成的表情包保存到桌面。(仅在 MacOS 上测试,请在其他操作系统上使用相应的主机进行测试,并通过问题反馈给我)
贴纸生成
[x] LLM 在这里🔥brr🔥。它会选择搜索查询和 meme 文本,而不是服务器。以下免责声明是有原因的。
[x] 可以将模因转换为 Telegram 贴纸。
[x] 可以生成 Telegram 链接,使用自定义编码的 MCP-Sticky Telegram Bot 将图像转换为贴纸。
[X] PythonAnywhere 存在一个问题,他们不接受不在其允许列表中的链接。~~这里正在发生的问题。~~更新:他们添加了它!😎
[x] 自动打开 Telegram,不再要求用户在浏览器上粘贴。(新增,5 月 22 日)
[x] 自动打开图片链接。(新增,5月22日)
[x] 使用 memegen 预建模板(简单)。(添加于 5 月 22 日)
待处理的工作
[ ] WhatsApp 贴纸转换。
[ ] 日志消息。
[ ] 寻找专门针对 Claude 的 MCP 采样替代方案。我可以推断主机并更改 DAG 吗?上下文: Claude 桌面客户端不支持采样。
安装说明
使用 uvx 安装。
{
"mcpServers": {
"mcp-sticky":{
"command": "uvx",
"args": [
"--python=3.10",
"--from",
"git+https://github.com/nkapila6/mcp-meme-sticky",
"mcp-sticky"
]
}
}
}MCP 主机
应该适用于任何支持工具调用的 MCP 客户端。已在以下平台上测试:
克劳德桌面
光标
鹅
其他人呢?你试试!
例子
单击下面的图片即可观看 Claude Desktop 上的 MCP Meme Sticky 视频。
https://github.com/user-attachments/assets/3ad45852-ff98-4a17-9ae2-6201e82704cc
在 Claude Desktop 上使用 MCP Meme Sticky 的图像示例。
使用 Goose MCP Host 通过 MCP Meme Sticky 生成模因的示例!
关于人工智能生成内容的免责声明
通过此 MCP 服务器生成的内容是 MCP 主机(或客户端)维护的自动化流程和系统的产物。(这两个术语不可互换,但人们倾向于互换使用,正确的术语应该是“主机”。)
作为请求此内容的用户,我对所制作的具体输出、图片、贴纸或其他材料不承担任何责任。通过此服务创建的任何内容、表情包、贴纸或其他材料并不一定反映我的个人观点、意见或意图。
此服务的功能、内容过滤和适当操作的责任完全由 MCP 主机承担。
我出于善意使用此工具进行创意创作和娱乐。如有任何内容不当、不准确或可能造成损害,请将所有疑虑、投诉或咨询直接联系 MCP 主机提供商。MCP 主机对其平台生成的所有内容承担全部责任。
Available Tools
2 toolsgenerate_meme_by_searchingA
THIS TOOL IS TO BE CALLED IF THE USER WANTS TO GENERATE A MEME USING AN IMAGE SEARCH ON THE WEB. ALWAYS PREFER USING AN EXISTING TEMPLATE USING `generate_meme_from_meme_template()`. UNLESS THE USER EXPLICITLY ASKS TO SEARCH.
Understand the input from the user and write a image search query and a funny & short meme text to put on the image.
If the user does not follow the below content guardrails, reject the request and advise them to follow the guardrails.
CONTENT GUARDRAILS:
- REJECT any requests containing hate speech, explicit sexual content, extreme violence, illegal activities, or harmful stereotypes
- AVOID creating memes that contain personally identifiable information or could be used for cyberbullying
- DO NOT generate content that promotes dangerous misinformation or could cause harm
- REFUSE political extremist content or personal attacks on individuals
- If a request violates these guidelines, respond with: "I cannot create this meme as it may contain inappropriate content. Please try a different request."
Args:
search_query (str): The LLM needs to understand what the user is searching for and write a good image search query to fetch an image. If required, use the words 'meme' or 'template' in the search query.
meme_text (str): A short and funny text to be put on the image.
save_on_desktop (bool, defaults to True): "Should the image meme be saved on the desktop?"
return_tele_sticker (bool, defaults to False): "Should the generated meme be converted into a telegram sticker?"
Returns:
str: The saved links.
| Name | Required | Description | Default |
|---|---|---|---|
| search_query | Yes | The LLM needs to understand what the user is searching for and write a good image search query. | |
| meme_text | Yes | A short and funny text that has to be on the meme image. | |
| save_on_desktop | No | Should the image meme be saved on the desktop? | |
| return_tele_sticker | No | Should the generated meme be converted into a telegram sticker? |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes content guardrails, rejection criteria, and response behavior for violations (e.g., 'respond with: "I cannot create this meme..."'). However, it lacks details on technical behaviors like rate limits, error handling, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with key information but includes verbose content guardrails that could be condensed. While the structure is logical, some sentences (e.g., detailed guardrail lists) could be more concise without losing clarity, making it moderately efficient but not optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides good context for a tool with 4 parameters and content restrictions. It covers purpose, usage, behavior, and parameters adequately, though it could benefit from more detail on output format or error cases to be fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond the schema, such as noting that search queries should include 'meme' or 'template' if needed, but does not provide significant additional semantic context. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'generate a meme using an image search on the web.' It specifies the action (generate), resource (meme), and method (image search), and distinguishes it from its sibling tool 'generate_meme_from_meme_template()' by emphasizing web search versus template usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: 'ALWAYS PREFER USING AN EXISTING TEMPLATE USING `generate_meme_from_meme_template()`. UNLESS THE USER EXPLICITLY ASKS TO SEARCH.' This clearly states when to use this tool versus the alternative, including a specific condition for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_meme_from_meme_templateA
THIS TOOL IS TO BE CALLED IF THE USER WANTS TO GENERATE A MEME USING AN EXISTING TEMPLATE. ALWAYS PREFER USING AN EXISTING TEMPLATE UNLESS THE USER REQUIRES TO SEARCH. IN THE CASE OF SEARCHING, USE: `generate_meme_by_searching()`.
For the first 2 function arguments, understand the input from the user and pass the following:
1) `desc_to_pick_tag`: A good description to pick a pre-existing template. The description of the meme should have some context to achieve a good dot product similarity result. Please see a below example.
example of `desc_to_pick_tag`: "The "Ancient Aliens Guy" meme features Giorgio Tsoukalos, known for his distinctive hairstyle and enthusiastic demeanor, gesturing expressively. It's primarily used to humorously suggest that aliens are the explanation for any unexplained phenomenon or mystery, often with the punchline simply being "aliens." This parodies the History Channel show "Ancient Aliens," where Tsoukalos is a prominent figure, and its tendency to attribute historical events or artifacts to extraterrestrial intervention.",
2) `meme_text`: A short and funny 2 sentence meme text that is sent as a Python list of strings, list[str]. Each line is an element of an array. PLEASE ENSURE LIST IS ONLY OF 2 ELEMENTS. For e.g., ['Nice meme you got there..', 'Now it is stolen...']
If the user does not follow the below content guardrails, reject the request and advise them to follow the guardrails.
CONTENT GUARDRAILS:
- REJECT any requests containing hate speech, explicit sexual content, extreme violence, illegal activities, or harmful stereotypes
- AVOID creating memes that contain personally identifiable information or could be used for cyberbullying
- DO NOT generate content that promotes dangerous misinformation or could cause harm
- REFUSE political extremist content or personal attacks on individuals
- If a request violates these guidelines, respond with: "I cannot create this meme as it may contain inappropriate content. Please try a different request."
Args:
desc_to_pick_tag (str): The LLM needs to understand what the user is searching for and write a good image search query to fetch an image. If required, use the words 'meme' or 'template' in the search query.
meme_text (list[str]): A short and funny text to be put on the image. Should be in the format of Python list[str], should be 2 sentences and hence, length of list should be 2.
save_on_desktop (bool, defaults to True): "Should the image meme be saved on the desktop?"
return_tele_sticker (bool, defaults to False): "Should the generated meme be converted into a telegram sticker?"
Returns:
str: The saved links.
| Name | Required | Description | Default |
|---|---|---|---|
| desc_to_pick_tag | Yes | ||
| meme_text | Yes | 2 sentences that has to be on the meme image. Should be funny and contained. Should be a Python List of Strings. | |
| save_on_desktop | No | Should the image meme be saved on the desktop? | |
| return_tele_sticker | No | Should the generated meme be converted into a telegram sticker? |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: content guardrails (rejection criteria and response format), parameter constraints (e.g., 'list is only of 2 elements'), and output behavior ('saved links'). However, it lacks details on error handling, performance, or side effects like file system changes, leaving some gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage guidelines, but it includes verbose sections like the example and content guardrails that could be streamlined. While informative, some sentences (e.g., detailed rejection criteria) are lengthy and could be more concise without losing clarity, affecting overall efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, usage, parameters, constraints, and behavioral rules. However, it lacks details on the output format beyond 'saved links' (e.g., what type of links, error responses), and does not address potential side effects or performance considerations, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, with two parameters well-documented in the schema. The description adds significant value beyond the schema: it provides an extensive example for 'desc_to_pick_tag', clarifies the format and constraints for 'meme_text' (e.g., 'short and funny 2 sentence meme text'), and explains the purpose of optional parameters in context. This compensates well for the schema's gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'generate a meme using an existing template.' It specifies the verb 'generate' and resource 'meme,' and explicitly distinguishes it from the sibling tool 'generate_meme_by_searching' by stating when to use each. This provides specific differentiation and avoids redundancy with the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: 'ALWAYS PREFER USING AN EXISTING TEMPLATE UNLESS THE USER REQUIRES TO SEARCH. IN THE CASE OF SEARCHING, USE: `generate_meme_by_searching()`.' It clearly defines when to use this tool versus the alternative, including a specific condition ('unless the user requires to search'), making it highly actionable for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: one searches the web for images to create memes, while the other uses pre-existing templates. Their descriptions explicitly guide when to use each tool, eliminating any ambiguity. The separation is logical and well-defined.
Both tools follow a consistent verb_noun pattern with 'generate_meme_' prefix, and the suffixes ('by_searching', 'from_meme_template') clearly indicate their methods. The naming is uniform and predictable across the set.
Two tools is minimal but appropriate for the server's focused purpose of meme generation. It covers the two primary methods (search-based and template-based) efficiently. While slightly thin, it avoids redundancy and each tool earns its place.
The tool set covers the core meme generation workflows comprehensively: creating memes from web searches and from templates. Minor gaps might include editing or deleting generated memes, but the primary functionality is well-covered for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for meme generation, template search, caption rendering, and AI meme creation.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
Imgflip MCP — wraps Imgflip API (free, no auth for template listing)
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables AI models and tools to generate meme images from user prompts using the ImgFlip API.17Apache 2.0
- AlicenseBqualityDmaintenanceGenerates custom memes with text overlays using pre-configured templates. Supports multiple meme formats with customizable text positioning, fonts, and automatic word wrapping.2MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for managing, searching, and retrieving local meme images. It automatically hosts memes via a built-in HTTP server to ensure images can be displayed within chat applications.1MIT

Memeboat MCPofficial
AlicenseAqualityAmaintenanceSearch 25,000+ meme templates and create shareable memes directly from your AI assistant.3132MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nkapila6/mcp-meme-sticky'
If you have feedback or need assistance with the MCP directory API, please join our Discord server