A meme MCP server for AI video agents
The Green Screen Memes MCP server gives Claude Code, Cursor and any MCP client a library of over 2,000 green screen meme clips: trending reaction memes on a solid green, blue or red background, most with their original sound. Agents search by reaction, get a clip's video link, and get a ready-to-run ffmpeg command that keys it over a photo or video.
It runs at https://api.greenscreenmemes.app/mcp over Streamable HTTP (stateless, plain JSON replies). Listing the tools needs no key; calling them needs one, or a sign-in from Claude, ChatGPT or another client that supports MCP OAuth. The Sandbox plan is free.
Connect from Claude or ChatGPT
Clients that support MCP sign-in (OAuth) need only the URL, https://api.greenscreenmemes.app/mcp: you sign in with your Green Screen Memes API account (Google or an email link) and allow the app, instead of pasting a key. An account without a key gets one when it first connects.
Claude
On claude.ai or in the Claude apps, open Customize, then Connectors, and choose Add custom connector. Enter the URL https://api.greenscreenmemes.app/mcp, then click Connect and sign in. On Team and Enterprise plans an owner may need to add it for the organization first.
ChatGPT
At chatgpt.com/plugins (custom MCP servers need developer mode, and your workspace may need to allow them), choose the plus button, then Add custom MCP server. Enter the URL https://api.greenscreenmemes.app/mcp, choose OAuth for authentication, and sign in when ChatGPT asks.
Claude Code, with sign-in
claude mcp add --transport http green-screen-memes https://api.greenscreenmemes.app/mcp
# then, in Claude Code: /mcp, pick green-screen-memes, AuthenticateThe app works on your account's key and plan, and what it does counts toward your plan like any other call. See and disconnect connected apps on the dashboard under Profile. Rolling your key disconnects them all.
Connect with an API key
Put your key in an environment variable first (export GSM_API_KEY=gsm_live_...), so it stays out of config files you commit.
Claude Code
claude mcp add --transport http green-screen-memes https://api.greenscreenmemes.app/mcp \
--header "Authorization: Bearer $GSM_API_KEY"Or commit a .mcp.json to your project root. Claude Code fills in ${GSM_API_KEY} from your environment.
{
"mcpServers": {
"green-screen-memes": {
"type": "http",
"url": "https://api.greenscreenmemes.app/mcp",
"headers": {
"Authorization": "Bearer ${GSM_API_KEY}"
}
}
}
}Cursor
Add this to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json for every project. Cursor reads the key with ${env:GSM_API_KEY}.
{
"mcpServers": {
"green-screen-memes": {
"url": "https://api.greenscreenmemes.app/mcp",
"headers": {
"Authorization": "Bearer ${env:GSM_API_KEY}"
}
}
}
}Claude Desktop
Claude Desktop runs local servers, so bridge it with mcp-remote (needs Node). Add this to claude_desktop_config.json (Settings, then Developer, then Edit Config), put your key in AUTH_HEADER, and restart the app.
{
"mcpServers": {
"green-screen-memes": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.greenscreenmemes.app/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer gsm_live_your_key_here"
}
}
}
}Other clients
Any client that speaks Streamable HTTP: URL https://api.greenscreenmemes.app/mcp, header Authorization: Bearer <your key>, or no header if it supports MCP OAuth (it finds the sign-in at /.well-known/oauth-protected-resource/mcp). Agent frameworks without MCP can call the same things over REST.
Look before you sign up
This works without a key and returns all the tools with their input schemas:
curl -s https://api.greenscreenmemes.app/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'The 7 tools
All of them are read-only and safe to call repeatedly. Each tool call counts as one API call.
| Tool | What it does | Arguments |
|---|---|---|
search_green_screens | Search green screen meme clips by words (matched against names, tags and descriptions). Leave query empty to get the newest. Returns ids, names, descriptions, thumbnails and video links. | query, tag, color, limit, cursor |
get_green_screen | One green screen clip by id, with its video link and an ffmpeg recipe for compositing it over an image or video. | id (required) |
get_trending | What people are using right now in the Green Screen Memes app, most popular first. Each clip has its trending rank (1 = most popular), plus the same fields as search results. | limit, cursor |
list_collections | Curated collections of green screens, including "trending" (what people are using right now in the app; get_trending returns it directly). | none |
get_collection | The green screens in one collection, in order. Use id "trending" for the current trending clips. | id (required), limit, cursor |
list_tags | The most used tags with how many green screens have each, to see what the library covers. | limit |
get_usage | This API key's plan and how much of this month's calls and video downloads it has used. | none |
The server's instructions tell the agent to search by feeling or action ("shocked", "slow clap", "happy dance") rather than by meme name, to pick a match by its name, description and tags, to call get_green_screen for the link and recipe, and to follow the terms.
What an agent does with it
A run in Claude Code, shortened. The search results are real.
Make a vertical meme for our newsletter: something giving a suspicious side eye over ./invoice.jpg, captioned "when the invoice arrives". Keep the clip's sound.
search_green_screens({ "query": "side eye", "limit": 3 })3 of 25 matches, all on green: "Tung Tung Side Eye" (2 s), "Dog giving awkward side eye" (6 s), "Guy giving a sideeye" (6 s).
The dog reads best, and there's no identifiable person in it, so it also works if you promote the newsletter later.
get_green_screen({ "id": "Dog giving awkward side eye" }){
"name": "Dog giving awkward side eye",
"chromaKeyColor": "green",
"durationSeconds": 6,
"videoUrl": "https://api.greenscreenmemes.app/v1/media/m/Dog%20giving%20awkward%20side%20eye/video?k=…",
"howToComposite": {
"download": "curl -L -o greenscreen.mp4 \"…\"",
"keyColor": "0x00ff00",
"overImage": "ffmpeg -loop 1 -i background.jpg -i greenscreen.mp4 -filter_complex …",
"notes": ["…", "For a caption, add ,drawtext=… after format=yuv420p", "…"]
}
}Downloaded the clip, ran the overImage command with invoice.jpg as the background and two drawtext lines for the caption. Saved meme.mp4: 1080×1920, 6.3 seconds, with the clip's sound.
A finished one, made with the same get_green_screen recipe: "Cat dancing with coffee" over a Pexels photo. The FFmpeg guide explains each part of the command.
Limits and pricing
initialize,tools/listandpingare free and work without a key.- Each
tools/callis one API call; each video download is one download.get_usageshows where your key stands. - Plans: Sandbox (free), 50 downloads and 30k calls; Starter $49/month, 2k downloads and 100k calls; Growth $199/month, 20k downloads and 1M calls; Enterprise from $999/month, 200k downloads and 10M calls. See pricing.
- Links in results are signed and expire after about 6 hours; call the tool again for fresh ones.
What you can use the clips for
These are internet memes: Green Screen Memes makes the green screen versions, but the original footage isn't ours and isn't licensed with the clips, so how you use one is up to you. On Starter and up you can publish videos with them, for yourself or clients. Don't put clips of identifiable people in paid ads, sponsored posts or endorsements; animals, objects and cartoons are fine there. The terms have the details. Sandbox keys are for building and testing.
Questions
Do I need a key to try it?
To look, no: initialize, tools/list and ping answer without a key (limited per IP), so you, your agent or an MCP directory can see every tool first. Calling a tool needs a key, or a sign-in from a client that supports MCP OAuth (Claude, ChatGPT, Claude Code). The Sandbox plan is free: 50 video downloads and 30,000 calls a month.
What does signing in give an app?
The same access as your API key: the app searches and downloads clips on your plan, and its calls and downloads count toward it. It can't see your email, billing or key. Disconnect it any time on the dashboard under Profile, Connected apps; rolling your key disconnects every app.
Do the clips have sound?
Nearly all do: the MP4 carries the meme's original audio. The ffmpeg command from get_green_screen keeps it with -map 1:a?, which also works for the few silent clips.
What counts toward my plan?
Each tools/call is one API call, and each video an agent downloads is one video download. Listing the tools is free, and so are thumbnails.
What happens at the limit?
Tool calls past your plan come back as an error the model can read (quota_exceeded), until the 1st of the month (UTC) or until you move up a plan. Nothing is billed automatically past your plan.
Is it in the MCP Registry?
Yes, as app.greenscreenmemes.api/green-screen-memes. The server card is at /.well-known/mcp/server-card.json.
Does my agent need FFmpeg?
Only to make the video. Without it, an agent can still find clips and hand you their links (they expire after about 6 hours) and the command to run. To render in React instead, see the Remotion guide.
Get a free key
Sandbox: 50 video downloads and 30,000 calls a month, for building and testing.