mcp-meme-sticky
This server lets you create AI-generated memes and optionally convert them into Telegram stickers — no external APIs required.
Generate memes from existing templates: Pick a pre-existing meme template (e.g., "Ancient Aliens Guy") via semantic similarity search and overlay custom two-line text.
Generate memes via web image search: Search the web for a relevant image and overlay custom meme text on it.
Save memes to desktop: Both tools support saving the generated meme image directly to your desktop (enabled by default).
Convert memes to Telegram stickers: Optionally convert any generated meme into a Telegram sticker via a linked Telegram bot.
Content guardrails: Rejects hate speech, explicit content, misinformation, cyberbullying material, and political extremism.
Hosts the source code for the MCP server and the related Telegram bot, with links to relevant repositories
Used for image hosting, as evidenced by the Imgur link for the logo and example images
Uses MediaPipe's text embedder to select appropriate meme templates based on user prompts
Powers the Telegram bot component of the service through their free Python cloud service
Enables conversion of generated memes into Telegram stickers, providing a direct link that automatically opens Telegram to add the image as a sticker using a custom-coded Telegram bot
Planned future integration for converting generated memes into WhatsApp stickers (marked as coming soon in the README)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-meme-stickycreate a meme about AI taking over with 'I for one welcome our new robot overlords'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-meme-sticky
Create AI generated memes using MCP Meme Sticky. Can converted generated memes into stickers for Telegram or WhatsApp (WA coming soon). ✨ no APIs required ✨.
For Telegram, the MCP server produces a link that can produce the image as a sticker. Can be viewed here: MCP-Sticky Telegram Bot.
Attribution
The MCP server uses several services. Thank you to the following services / libraries.
Memegen: GOATED open source meme generator!
Mediapipe: Mediapipe's text embedder that allows me to select meme templates.
PythonAnywhere: For their free Python clouds service! It powers the Telegram bot.
icrawler: My image crawler is heavily inspired by their library.
FastMCP: FastMCP makes it easier to make Python MCP servers!
Related MCP server: Meme Generator MCP
Completed work
Meme generation
Can generate custom memes based on prompt.
Can save generated memes on the desktop. (Test only on MacOS, please do test it on other OS with your respective hosts and give me feedback via issues)
Sticker generation
Can convert memes to Telegram stickers (if the bot is online) using custom coded MCP-Sticky Telegram Bot.
Automatically open Telegram instead of asking user to paste on Browser. (Added, 22nd May)
Automatically open image link. (Added, 22nd May)
Using memegen pre-built templates (easy). (Added, 22nd May)
Pending work
WhatsApp Sticker conversion.
Log messages.
Installation instructions
Installation using uvx.
{
"mcpServers": {
"mcp-sticky":{
"command": "uvx",
"args": [
"--python=3.10",
"--from",
"git+https://github.com/nkapila6/mcp-meme-sticky",
"mcp-sticky"
],
"env": {
"MCP_STICKY_RETURN_IMAGE": "true"
}
}
}
}Security audits
MseeP does security audits on every MCP server, you can see the security audit of this MCP server by clicking here.
MCP Host
Should work with any MCP client that supports tool calling. Have tested on the following:
Claude Desktop
Cursor
Goose
Others? You try!
Example
Click on the below image to view a video of MCP Meme Sticky on Claude Desktop.
https://github.com/user-attachments/assets/3ad45852-ff98-4a17-9ae2-6201e82704cc
Image examples of using MCP Meme Sticky on Claude Desktop.
Example using Goose MCP Host to generate memes with MCP Meme Sticky!
Buy Me A Coffee
If the software I've built has been helpful to you. Please do buy me a coffee, would really appreciate it! 😄
Disclaimer regarding AI generated content
The content generated through this MCP server is the product of automated processes and systems maintained by the MCP host (or client). (These terms are not interchangeable but people tend to use them interchangeable, the right term is host.)
As a user requesting this content, I am not responsible for the specific outputs, images, stickers, or other materials produced. Any content, memes, stickers, or other materials created through this service are not necessarily reflective of my personal views, opinions, or intentions.
The responsibility for the functionality, content filtering, and appropriate operation of this service lies solely with the MCP host.
I have utilized this tool in good faith for creative and fun purposes. If any content appears inappropriate, inaccurate, or potentially harmful, please direct all concerns, complaints, or inquiries to the MCP host provider. The MCP host bears full responsibility for all content generated through their platform.
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