imgflip-mcp
Click on "Deploy 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., "@imgflip-mcpMake me a Drake meme about writing tests vs. testing in production"
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.
imgflip-mcp
📚 Full documentation: mariokernich.github.io/imgflip-mcp
There's an MCP server for your database. One for your Kubernetes cluster. One for your cloud bill, one for your ticket system, and at least twelve for reading PDFs. Serious servers for serious work.
But somewhere along the way, the ecosystem forgot the workload that actually keeps engineering teams running: memes.
imgflip-mcp closes that gap. It's a Model Context Protocol server for the Imgflip meme generator API, so Claude (or any other MCP client) can browse thousands of meme templates and caption them mid-conversation — turning your AI assistant into the coworker who always has the right reaction image.
You: "Make me a Drake meme about writing tests vs. testing in production" Claude: 🖼️ calls
get_memes→ callscaption_image→ sends you the image link
Everything you need is a free Imgflip account. An Imgflip API Premium subscription is optional — it unlocks five extra tools (search, GIF captioning, automeme, AI memes), which stay hidden unless you explicitly enable them.
What would I even use this for?
More than you'd think. Once meme generation is one sentence away, it sneaks into real workflows:
Docs people actually finish reading. Let Claude write your README section and cap it with a fitting meme — retention engineering at its finest.
Release notes with a punchline. "v2.0: we rewrote everything" hits different next to an Expanding Brain meme of your migration steps.
Code review, but kind. Answer the 400-line PR with a Two Buttons meme instead of a lecture. Same message, fewer hurt feelings.
Retros & standups. Feed in the sprint summary, get the This Is Fine recap the team deserves.
Incident postmortems. Nothing says "blameless" like a well-chosen Disaster Girl on the last slide.
Slack announcements. Deploy freezes, on-call handovers, "the build is green again" — all measurably more effective as memes.
Is any of this necessary? No. Neither is syntax highlighting, and yet here we are.
Related MCP server: Meme MCP Server
Tools
Free tools (enabled by default)
Tool | Description | Imgflip endpoint | Requirements |
| List the ~100 most popular meme templates, with optional name filtering |
| none |
| Caption a template and get the generated image URL |
| free Imgflip account |
These two tools cover the everyday use case end to end: find a template, put text on it, get the image URL.
Premium tools (optional, opt-in)
Tool | Description | Imgflip endpoint |
| Search 1M+ templates by name |
|
| Look up a single template by id |
|
| Caption an animated GIF template |
|
| Auto-pick a template for a piece of text |
|
| Let Imgflip's AI invent a whole meme |
|
These require an Imgflip API Premium subscription and are not registered by default, so free-tier users never see tools that would fail. If you have Premium, enable them by setting IMGFLIP_PREMIUM=true.
Extras
Inline images: every meme-generating tool returns the result both as URL and as an embedded image (up to 2 MB), so clients like Claude Desktop render the meme directly in the chat.
make-memeprompt: an MCP prompt that guides the model through template selection and captioning — pass atopicand optionally atemplatepreference.Tool annotations: lookup tools are marked
readOnlyHintso clients can auto-approve them safely.
Prerequisites
Node.js 22+
An Imgflip account (sign up for free) — required for every tool except
get_memes
Environment variables
Variable | Required | Description |
| yes* | Your Imgflip username |
| yes* | Your Imgflip password |
| no | Set to |
* Only get_memes works without credentials.
Note: The Imgflip API authenticates with username/password form fields — it does not offer API keys. Consider creating a dedicated Imgflip account for API use.
Installation
The server communicates over stdio, so your MCP client launches it as a subprocess — there is no port or daemon to manage. Pick whichever route fits your client:
Route | Best for | How |
Desktop Extension ( | Claude Desktop | download from Releases, double-click, fill in the credentials form — guide |
Claude Code plugin | Claude Code |
|
VS Code button | Copilot users | click the Install in VS Code badge above — guide |
npx | any other client | command |
Every client uses the same shape. For example, in Claude Desktop's claude_desktop_config.json or Cursor's .cursor/mcp.json:
{
"mcpServers": {
"imgflip": {
"command": "npx",
"args": ["-y", "imgflip-mcp"],
"env": {
"IMGFLIP_USERNAME": "your-username",
"IMGFLIP_PASSWORD": "your-password"
}
}
}
}Or for Claude Code in one line:
claude mcp add imgflip \
--env IMGFLIP_USERNAME=your-username \
--env IMGFLIP_PASSWORD=your-password \
-- npx -y imgflip-mcpAdd IMGFLIP_PREMIUM=true to the environment if you have API Premium. Then just ask:
"Make a Drake meme: top 'manually formatting code', bottom 'letting the linter do it'."
Documentation
Everything beyond the basics lives on the documentation site:
Quickstart — from zero to first meme in five minutes
Creating memes — the two-step workflow, multi-box templates, positioning, colors and fonts
Tools reference — every tool, parameter and response
FAQ & troubleshooting — missing credentials, links without images, tools not showing up, …
Privacy
This server runs locally and is stateless: your Imgflip credentials and meme texts are sent exclusively to https://api.imgflip.com (which requires them for authentication and generation), and nothing is logged, stored, or sent anywhere else. Generated memes are hosted publicly on imgflip.com. Details in PRIVACY.md; Imgflip's own handling is covered by the Imgflip privacy policy.
Contributing
Contributions are welcome — see CONTRIBUTING.md for the guidelines and CHANGELOG.md for release history. Something broken? Open an issue — ideally with the tool call that failed and your client.
This is an independent community project, not affiliated with Imgflip.
License
Available Tools
2 toolscaption_imageCreate a meme from a templateA
Create a real meme by captioning an Imgflip template — use this whenever the user asks for a meme instead of drawing one yourself. Returns the generated image inline plus its URL. Use get_memes first to find a template_id and its box_count. For simple two-line memes pass text0 (top) and text1 (bottom); for templates with more than two boxes, or for custom styling/positioning, pass the boxes array instead (boxes takes precedence over text0/text1). Requires a free Imgflip account (IMGFLIP_USERNAME / IMGFLIP_PASSWORD).
| Name | Required | Description | Default |
|---|---|---|---|
| font | No | Font family (default: impact) | |
| boxes | No | Up to 20 text boxes for templates with more than two boxes or for custom positioning/colors. Omitted coordinates are auto-placed. | |
| text0 | No | Top text (ignored when boxes is set) | |
| text1 | No | Bottom text (ignored when boxes is set) | |
| template_id | Yes | Template id from get_memes, e.g. "181913649" for Drake | |
| no_watermark | No | Remove the imgflip.com watermark (Imgflip Premium only) | |
| max_font_size | No | Maximum font size in pixels (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it states the tool returns an inline image plus URL, requires IMGFLIP_USERNAME/IMGFLIP_PASSWORD credentials, and clarifies that boxes overrides text0/text1. These details help the agent anticipate side effects and prerequisites.
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 compact yet information-dense, with a clear flow: primary use case, return value, prerequisite, parameter selection guidance, and authentication requirement. No filler or redundant repetition.
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?
For a tool with no output schema, the description sufficiently covers the return format (inline image + URL), the required setup (get_memes, credentials), and the key parameter strategies. This makes it complete for an agent to invoke the tool correctly in a realistic workflow.
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?
Although the schema covers 100% of parameters, the description enriches the semantic meaning by explaining that template_id comes from get_memes, text0 is top text, text1 is bottom text, and boxes is an alternative that takes precedence. This adds practical usage guidance beyond the raw schema.
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 creates a meme by captioning an Imgflip template, with a specific verb and resource. It distinguishes itself from the sibling tool get_memes by focusing on the captioning action rather than fetching templates.
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?
It explicitly says to use this whenever the user asks for a meme rather than drawing one, and instructs to call get_memes first to obtain template_id and box_count. It also prescribes when to use text0/text1 versus the boxes array, including the precedence rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memesList popular meme templatesARead-only
Get the ~100 most popular Imgflip meme templates (ordered by how often they were captioned in the last 30 days). Each template includes its id (needed for caption_image), name, image URL, dimensions and box_count (how many text boxes it supports). Free, no credentials required.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of templates to return (default: all, up to 100) | |
| name_filter | No | Case-insensitive substring to filter template names by, e.g. "drake" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, but the description adds valuable context: the approximate count (~100), ordering by recent captioning frequency, the exact fields returned (id, name, URL, dimensions, box_count), and free/no-credentials requirement. This enriches the behavioral understanding beyond the structured annotations.
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 two sentences, front-loaded with the core purpose, and then provides concise details about the output and auth. Every sentence earns its place with no redundancy or fluff.
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?
For a simple list tool with no output schema, the description fully explains what is returned, how it is ordered, and that it requires no credentials. It also connects to the sibling tool by highlighting the id's role, making it contextually complete.
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?
Both parameters (limit and name_filter) are fully described in the schema with descriptions and constraints. The tool description does not add extra parameter-specific semantics, but it does mention the default ordering and that the id is needed for captioning, which indirectly relates to usage. Given 100% schema coverage, a baseline of 3 is appropriate.
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 verb 'Get' and the resource 'popular Imgflip meme templates', with specific details about ordering and data fields. It distinguishes itself from the sibling tool 'caption_image' by explicitly noting the id is needed for captioning.
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 clear context: it lists popular meme templates and notes they are needed for caption_image, implying a typical usage flow. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.1- First observed
caption_image - First observed
get_memes
TDQS
Scored across 2 tools
get_memes and caption_image have completely distinct purposes: one lists available templates, the other creates a meme from a template. There is no overlap or confusion between them.
Both tool names follow a consistent verb_noun pattern (get_memes, caption_image), making the API predictable and easy to navigate.
With only 2 tools, the set feels minimal but not trivial. It covers the core workflow of finding a template and captioning it, though it's on the thin side for a dedicated meme service.
The domain is meme generation, and the two tools provide complete lifecycle coverage: discovering templates and creating the final meme. No obvious missing operations for the stated purpose.
Maintenance
Related MCP Connectors
MCP server for meme generation, template search, caption rendering, and AI meme creation.
Imgflip MCP — wraps Imgflip API (free, no auth for template listing)
MCP server for NanoBanana AI image generation and editing
Related MCP Servers
- AlicenseBqualityDmaintenanceA simple Model Context Protocol server that allows AI models to generate meme images using the ImgFlip API, enabling users to create memes from text prompts.128 npm58Apache 2.0
- 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
- 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
- AlicenseAqualityDmaintenanceAn MCP server that provides AI image generation and editing capabilities using Google's Gemini 2.5 Flash Image API. It allows users to create new images from text, modify existing files, and perform iterative edits through natural language prompts.6556 npmMIT