Skip to main content
Glama
Ed-Relight

MemeStack MCP

by Ed-Relight

MemeStack MCP

Hosted Model Context Protocol server for MemeStack — a visual search engine for memes, infographics, charts, screenshots, and diagrams. Find images by meaning, by the OCR text printed inside them, or by visual similarity. AI-captioned, Lightning-ranked. Public, no auth, no signup — reads are free with daily quotas, generation is paid per call.

https://mcp.memestack.ai/mcp

Every list response returns citation blocks (markdown / HTML / plain) ready to paste with attribution. Image bytes are served from https://api.memestack.ai/v1/images/{id}/{thumbnail|canonical|social-card} — directly embeddable.


Install

This is a hosted server. No clone, no build, no local environment. Point any MCP-aware client at the endpoint. Every snippet below was checked against the client's own documentation on 2026-10-11; the current list, with a link to each client's docs, is on memestack.ai/mcp-server.

Claude Code

claude mcp add --transport http memestack https://mcp.memestack.ai/mcp

Or in a project .mcp.json — a remote server needs "type": "http":

{
  "mcpServers": {
    "memestack": {
      "type": "http",
      "url": "https://mcp.memestack.ai/mcp"
    }
  }
}

Or as a plugin (adds a skill)

This repo is also a Claude Code plugin marketplace. The plugin installs the same server plus a find-image skill that tells Claude which tool answers which request and to keep the citation:

/plugin marketplace add Ed-Relight/memestack-mcp
/plugin install memestack@memestack

From a shell: claude plugin marketplace add Ed-Relight/memestack-mcp then claude plugin install memestack@memestack. If you also use the claude.ai connector, Claude Code lists the tools twice (one copy per server); either one is enough.

Claude (claude.ai and Claude Desktop)

Add MemeStack from the Connectors Directory, or as a custom connector: Customize → Connectors → + Add → Add custom connector with the directory endpoint https://mcp.memestack.ai/mcp/directory (see Chat apps below). Every plan can; a Free account can add one custom connector.

Claude Desktop's claude_desktop_config.json takes local servers only. To use the full /mcp endpoint there, bridge it with mcp-remote:

{
  "mcpServers": {
    "memestack": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.memestack.ai/mcp"]
    }
  }
}

Cursor

Add the MemeStack MCP server to Cursor

One click opens Cursor's install prompt (Cursor's install links). This repo is also a Cursor plugin (.cursor-plugin/plugin.json + mcp.json, with the find-image skill). Or edit ~/.cursor/mcp.json (or per-project .cursor/mcp.json):

{
  "mcpServers": {
    "memestack": { "url": "https://mcp.memestack.ai/mcp" }
  }
}

VS Code (GitHub Copilot)

One click: the Add to VS Code link on memestack.ai/mcp-server (a vscode:mcp/install link, which GitHub does not render). Or .mcp.json at the workspace root, or ~/.copilot/mcp-config.json for every workspace (the older .vscode/mcp.json with "servers" still loads, but VS Code now calls it deprecated):

{
  "mcpServers": {
    "memestack": {
      "type": "http",
      "url": "https://mcp.memestack.ai/mcp"
    }
  }
}

Devin Desktop (formerly Windsurf)

devin mcp add memestack https://mcp.memestack.ai/mcp

Gemini CLI

gemini extensions install https://github.com/Ed-Relight/memestack-mcp

The extension manifest (gemini-extension.json) points Gemini CLI at the hosted endpoint over Streamable HTTP (httpUrl). Without the extension:

gemini mcp add --transport http memestack https://mcp.memestack.ai/mcp

That writes .gemini/settings.json in the project; add --scope user for ~/.gemini/settings.json.

OpenAI Codex CLI

codex mcp add memestack --url https://mcp.memestack.ai/mcp

Or in ~/.codex/config.toml (shared with the ChatGPT desktop app and the Codex IDE extension):

[mcp_servers.memestack]
url = "https://mcp.memestack.ai/mcp"

Cline

In Cline's MCP settings (cline_mcp_settings.json), add the server with the camelCase streamableHttp type — without it Cline falls back to SSE and the endpoint answers 405:

{
  "mcpServers": {
    "memestack": {
      "type": "streamableHttp",
      "url": "https://mcp.memestack.ai/mcp",
      "disabled": false,
      "autoApprove": []
    }
  }
}

The Remote Servers tab does the same (Transport "Streamable HTTP"), and so does the Cline CLI:

cline mcp add memestack https://mcp.memestack.ai/mcp --transport http --yes

Zed

In Zed's settings (zed: open settings file), or Settings → AI → MCP Servers → Add Remote Server:

{
  "context_servers": {
    "memestack": { "url": "https://mcp.memestack.ai/mcp" }
  }
}

Goose

goose configure → Add Extension → Remote Extension (Streamable HTTP), or in ~/.config/goose/config.yaml (Windows: %APPDATA%\Block\goose\config\config.yaml):

extensions:
  memestack:
    type: streamable_http
    name: memestack
    enabled: true
    uri: "https://mcp.memestack.ai/mcp"
    headers: {}
    env_keys: []
    envs: {}
    timeout: 300

LM Studio

LM Studio 0.3.17 or later: Program tab → Install → Edit mcp.json:

{
  "mcpServers": {
    "memestack": { "url": "https://mcp.memestack.ai/mcp" }
  }
}

Continue

Create .continue/mcpServers/memestack.yaml (MCP tools work in agent mode):

name: MemeStack
version: 0.0.1
schema: v1
mcpServers:
  - name: memestack
    type: streamable-http
    url: https://mcp.memestack.ai/mcp

Clients without remote MCP support

Bridge the endpoint with mcp-remote:

{
  "mcpServers": {
    "memestack": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.memestack.ai/mcp"]
    }
  }
}

Raw JSON-RPC (any HTTP client)

curl -X POST https://mcp.memestack.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Same endpoint for initialize, tools/call, prompts/list, prompts/get, resources/list, resources/read. Protocol version: 2025-06-18.

Chat apps (directory endpoint)

Chat apps get a second endpoint built for their connector directories:

https://mcp.memestack.ai/mcp/directory

It serves the 19 read tools only — no paid tools, no payment offers, no daily quota — and its results never include images classified controversial (the include_controversial argument does not exist there; a by-id lookup of such an image answers "not found"). Prompts, resources and citations are the same as on /mcp. Add it by URL as a custom connector (Streamable HTTP, no authentication). Tool calls are rate-limited per minute; over the limit a call answers "Too many requests from this client" — wait a minute and retry. In ChatGPT (and other MCP Apps hosts) image results appear as a carousel of image cards.

Where each app keeps the setting (checked 2026-10-11):

  • Claude — see above.

  • ChatGPT (web) — Plugins → + → Add custom MCP server → Server URL → Create as a plugin. Business and Enterprise/Edu; Pro can connect with read/fetch permissions in developer mode.

  • Mistral Le Chat — Connectors → + Add Connector → Custom MCP Connector. Administrators (on Free, Pro and Student, the account owner).

  • Perplexity — Account settings → Connectors → + Custom connector → Remote, transport Streamable HTTP. Pro, Max and Enterprise.

  • Microsoft Copilot Studio — an agent's Tools page → Add a tool → New tool → Model Context Protocol, authentication None. Needs generative orchestration (not in the Copilot Studio for Teams plan).


Related MCP server: Meme MCP Server

What's exposed

  • 21 tools — 19 free reads (8 of them with a daily quota, then a fraction of a cent per call — see Pricing & payments), 2 always paid (generate_meme, submit_image) — full catalog: docs/tools.md

  • 6 prompts — pre-baked workflows (topic search, top zapped, cite a meme, find a meme for a vibe, research meme evolution, trending): docs/prompts.md

  • 4 resources — attribution guide, tag taxonomy, recent uploads feed, and the memestack://top/{period} template (top zapped images): docs/resources.md

Tools at a glance

Discovery and search:

  • search_images — semantic + keyword merged

  • search_charts — charts/infographics with stored source metadata (dataset, citation, unit, regions, displayed period); not every chart — search_images has wider chart coverage. publisher_only: true (here and on search_images) keeps only charts imported from Our World in Data, USDA ERS, Eurostat or the EEA

  • search_text_in_image — OCR-only search (find screenshots of specific quotes/text)

  • find_meme_for_text — vibe-to-meme matcher for writing & social (only images tagged as memes, so it may come back empty; search_images covers every kind of image)

  • reverse_image_search — phash-based "find this image" (accepts HTTPS or data: URLs)

  • find_similar / find_related — neighbors of a known image (visual phash / semantic embedding)

  • browse_images, browse_by_tag, browse_by_category, list_categories

  • popular_tags, tag_autocomplete, get_tag_profile

  • get_image, get_user_profile, get_leaderboard, get_meme_variants

Honest search results (rolling out — the server labels results only while its honest-search switch is on): when results carry match, search_images, search_charts, search_text_in_image and find_meme_for_text label each one "strong" (MemeStack has evidence it matches your query) or "closest" (the nearest thing it has). Strong results come first; closest ones are capped and marked [closest match] in the text view. The first page starts with a note when nothing matched strongly, and has_more says whether another page exists (total counts strong matches only). Without labels there is no match, note or has_more: a page shorter than limit is the last. With labels, match_quality sums the search up: strong (it has a strong match), closest_only (every result is only the nearest guess — do not present one as the answer) or none.

Reuse rights: every image carries rights — source (publisher / creator / community), the licence and its URL, the credit line (attribution), and commercial_use (yes / no / unknown; unknown is never a guess — Our World in Data charts can plot third-party data under its own terms, and MemeStack licenses no community upload). The citation says how to credit an image; rights says whether it may be reused. cite_image carries both.

Safe by default: every search and browse tool excludes images MemeStack classifies as controversial (partisan attack memes, slurs, dark humour — library content, but not a default result). Pass include_controversial: true on search_images, search_charts, search_text_in_image, find_meme_for_text, reverse_image_search, find_similar, find_related, browse_images or browse_by_tag to include them; each such result is marked [controversial] in the text view and carries controversial: true in the structured payload. By-id tools (get_image, get_meme_variants, cite_image) always answer and carry the flag. The REST equivalent is ?content=all on the browse endpoints (content=safe is the default; any other value is 400 INVALID_CONTENT).

Attribution:

  • cite_image — canonical markdown/HTML/plain attribution blocks for one or many image IDs

Paid (agent payment rails — pay per call, no account):

  • generate_meme — AI image generation via Grok Imagine. $0.08 standard / $0.20 quality, paid in sats or USDC. Returns a hosted, auto-tagged, CDN-served image URL.

  • submit_image — submit an image by URL into the moderation review queue. $0.10 per submission, paid in sats or USDC, always paid, no free quota. No refund on moderation rejection (duplicate/nsfw/spam/low-quality) — the fee is the anti-spam mechanism; accepted images await human review before publication.


Citations are baked in

Every list response includes a citations_combined block in three formats (markdown / HTML / plain) for the full set, plus a per-image citation on every individual image. Per-source rules differ — OWID images carry CC-BY 4.0 attribution to Our World in Data; Imgflip templates carry Imgflip attribution; direct uploads carry the uploader's display name and the MemeStack page URL — and Verified Creator uploads link the creator's name directly to their own website (mandatory attribution).

Read memestack://attribution-guide once per session for the license model and per-source rules. See docs/resources.md.


Pricing & payments

Reads are free with generous daily quotas; generation is paid per call. Every price is fixed in US dollars and paid at the current BTC/USD rate in sats, or in USDC. No account, no API key — payment itself is the auth, over two rails:

  • x402 (USDC on Base) — standard x402/error + x402/payment _meta flow; works out of the box with the Cloudflare Agents SDK's withX402Client. Heads-up: the SDK's default maxPaymentValue is $0.10 — submit_image ($0.10) fits it exactly; raise it to use generate_meme quality mode ($0.20).

  • L402 (Lightning sats, at the current BTC/USD rate) — on REST, standard WWW-Authenticate: L402 macaroon="…", invoice="…" challenge; retry with Authorization: L402 <macaroon>:<preimage>. Over MCP, an experimental l402/payment _meta extension carries the same proof.

Tool group

Free quota

Over quota / price

Search & browse tools (search_images, search_charts, browse_*, find_meme_for_text, search_text_in_image)

200 calls/day/IP

$0.005/call

reverse_image_search

10 calls/day/IP

$0.02/call

generate_meme

always paid

$0.08 standard / $0.20 quality

submit_image

always paid

$0.10/submission

Everything else (get_image, cite_image, tags, categories, leaderboard, resources, prompts)

unmetered, free

—

The sats amount for each price right now: GET api.memestack.ai/v1/prices. Paid REST twins (same prices, standard dual-header 402): POST api.memestack.ai/v1/agent/generate, POST api.memestack.ai/v1/agent/reverse-search, and POST api.memestack.ai/v1/agent/submit — see the OpenAPI spec.

One payment delivers at most one result — if a call fails or times out mid-generation, retry with the same payment proof to resume; you are never charged twice for one payment.

submit_image submissions land in the moderation review queue, not directly in the public gallery — there is no refund if moderation rejects the submission (duplicate/nsfw/spam/low-quality), since the review attempt itself is what the fee buys.


Discovery surface

How MemeStack exposes itself to AI agents, beyond MCP:

Surface

URL

Purpose

llms.txt

memestack.ai/llms.txt

Concise human-readable summary + endpoint links

ai-plugin.json

memestack.ai/.well-known/ai-plugin.json

ChatGPT plugin manifest

OpenAPI 3.1

api.memestack.ai/openapi.json

REST API the MCP wraps

Apex MCP mirror

memestack.ai/mcp

Same MCP endpoint at apex (for naive scanners)

MCP server card

mcp.memestack.ai/mcp/server-card

SEP-2127 server card (application/mcp-server-card+json); mirrored at memestack.ai/mcp/server-card and memestack.ai/.well-known/mcp/server-card.json

ARD manifest

memestack.ai/.well-known/ard.json (alias /.well-known/ai-catalog.json)

Agentic Resource Discovery entry pointing at the server card

API catalog

memestack.ai/.well-known/api-catalog

RFC 9727 linkset: the REST API and the MCP server with their descriptions, docs and health endpoints

Agent Skill

memestack.ai/.well-known/agent-skills/memestack/SKILL.md

agentskills.io skill — when to use MemeStack, REST quick start, tool costs, citation rule; index at /.well-known/agent-skills/index.json

x402 Bazaar

api.cdp.coinbase.com/platform/v2/x402/discovery/resources

Coinbase's x402 discovery catalog — the paid REST endpoints (/v1/agent/*) and the MCP tools generate_meme/submit_image, with body schemas, examples and prices

oEmbed

api.memestack.ai/v1/oembed

Rich-type oEmbed for gallery URLs — html embed snippet with a via-MemeStack credit link

Sitemap

memestack.ai/sitemap.xml

Sitemap index with image, page, and user sub-sitemaps


Source

The MCP server runs on Cloudflare Workers and proxies the public MemeStack REST API (api.memestack.ai). The server's source is part of the larger MemeStack codebase, which is not publicly mirrored at this time. This repository hosts the public-facing docs, install snippets, and tool catalog so directory submissions and integrators can link to a stable, browsable surface.

If you want to fork the protocol behavior and self-host a similar gallery, the REST API is documented and a sufficient backend for any MCP-style wrapper.

The Dockerfile in this repo is a thin proxy — it uses mcp-remote to bridge stdio MCP to the hosted HTTP endpoint, and exists only so MCP directories that require Dockerfile-based introspection (Glama, etc.) can validate the live tools/prompts/resources. End users should connect directly to mcp.memestack.ai/mcp per the Install section above; the Docker image holds no source.


License

MIT — covers the snippets and docs in this repo. The hosted MemeStack service is governed separately by memestack.ai/terms. Images keep their owners' rights: only the open-data publisher charts (CC BY 4.0 or US public domain) and Verified Creator work come with license terms, set out in memestack.ai/license. MemeStack grants no license to any other image, and a citation block is attribution, not permission to reuse.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    We built a hosted MCP server that gives AI agents two capabilities through a single connection: 1. img-forge — Image generation across 5 quality tiers (SDXL Lightning to Gemini 3.1 Flash). One tool call, 5-30 seconds, done. 2. Stackbilder — Full-stack architecture scaffolding. Describe a product, get a 6-mode pipeline (Product → UX → Risk → Architect → TDD → Sprint)
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Dynamic MCP server — 30+ tools across fact verification, agent memory, Indian NLP, contract risk, security threat modelling, sales call intelligence and more. x402/USDC micropayments on Base.
    33
    10 npm
    MIT