Sticker
FreeNot checkedEnables AI to send expressive stickers based on conversation context, with a built-in UI for managing stickers.
About
Enables AI to send expressive stickers based on conversation context, with a built-in UI for managing stickers.
README
sticker-mcp
An MCP server that lets AI send expressive stickers (表情包) directly into the chat, rendered inline via MCP Apps. Comes with a standalone web admin page for managing the sticker library, and tools that let the AI add new stickers for you.
Features
- Inline sticker rendering —
send_stickerrenders the image in the conversation via aui://MCP Apps widget (works on claude.ai and ChatGPT web). - AI judgement built in — tool descriptions teach the AI to check the library (
list_available_stickers) and pick a sticker matching the conversation's mood, proactively. - AI can grow the library —
create_sticker_uploadgives the AI a one-time upload URL on this sticker library for attached image bytes;add_stickerstill accepts an existing image URL. On local stdio there is alsoadd_sticker_by_path. - Standalone admin page —
/adminis a plain web page (no MCP host needed): drag & drop / paste upload, batch add, tag editing, search, delete. Optionally protected byADMIN_TOKEN. - Simple storage — JSON + image files on disk. No database.
Live preview
Project showcase: https://show.asashiki.com/projects/sticker-mcp.html
Tools
| Tool | Purpose |
|---|---|
send_sticker |
Pick a sticker by emotion/scene query (or exact stickerId) and render it in chat. Random pick among multiple matches. On no match, returns the catalog so the AI can retry. |
list_available_stickers |
Catalog of {id, name, tags} — the AI calls this once per conversation to know what moods it can express. |
add_sticker |
Download an image from an existing public http(s) URL as a sticker with name + tags. It does not accept base64/data URIs. |
create_sticker_upload |
Create a 10-minute one-time PUT URL on this sticker library so the AI can upload attached image bytes directly here, without third-party image hosts. |
add_sticker_by_path |
(stdio/local only) Add a sticker from a local file path. |
Transports & endpoints
- Local stdio:
node dist/stdio.js(ornpm run dev:stdio). - Remote Streamable HTTP:
node dist/server.js, MCP endpoint atMCP_HTTP_PATH(default/mcp/sticker,/mcpkept as alias). - HTTP server also serves:
/images/:filename(sticker images for the widget),/admin(management page),/api/stickers(REST for the admin page),/api/stickers/upload/:token(one-time direct uploads created by the MCP tool),/healthz.
Quick start (local)
npm install
npm run build
npm start # Streamable HTTP on :3000
# or stdio for Claude Desktop:
npm run start:stdio
Claude Desktop (stdio)
{
"mcpServers": {
"sticker": {
"command": "node",
"args": ["path/to/sticker-mcp/dist/stdio.js"]
}
}
}
Remote deployment (claude.ai / ChatGPT web)
- Copy
.env.exampleto.envand set at leastPUBLIC_BASE_URL(public HTTPS origin) — the widget loads sticker images fromPUBLIC_BASE_URL/images/*, and that origin is written into the widget CSP. Without it, images are inlined as base64 (fine locally, brittle in hosted iframes). docker compose up -d(or runnode dist/server.jsbehind your reverse proxy).- Reverse-proxy
https://your-domain/mcp/stickerto the container's:3000(same path), plus/images/*,/admin,/api/*. - In claude.ai -> Settings -> Connectors -> add custom connector with URL
https://your-domain/mcp/sticker. IfMCP_AUTH_PASSWORDis set, the connector will use OAuth dynamic client registration and show the password authorization page.
Hosts cache
ui://resources by URI. If you modify the widget, bump the version suffix insrc/widget/sticker-view-html.ts(mcp-app-v2.html→v3...).
Configuration
See .env.example. Summary:
| Variable | Default | Meaning |
|---|---|---|
PUBLIC_BASE_URL |
(empty) | Public HTTPS origin; enables URL-based images + CSP. Required for web AI clients. |
PORT |
3000 |
HTTP port. |
MCP_HTTP_PATH |
/mcp/sticker |
Streamable HTTP MCP route. |
ALLOWED_ORIGINS |
PUBLIC_BASE_URL origin | CORS allowlist, comma separated. |
MCP_AUTH_PASSWORD |
(empty) | Optional password gate for remote connectors. Leave empty to disable auth. |
DATA_DIR |
./data |
stickers.json + images/. |
ADMIN_TOKEN |
(empty) | If set, /admin + /api/* require it (Bearer header or ?token=). |
OAuth password auth
Set MCP_AUTH_PASSWORD to enable a minimal OAuth Authorization Code flow for remote connectors. The server exposes OAuth discovery and dynamic client registration, so clients that support automatic registration can connect without a manually configured Client ID. During connection, enter the configured password on the authorization page.
Development
npm run dev # HTTP server with reload
npm run typecheck
npm run build # server (tsup) + widget (IIFE) + admin assets
Code layout: src/mcp.ts (tool/resource registration) · src/server.ts (HTTP transport + REST + static) · src/stdio.ts (local transport) · src/storage.ts (JSON + sharp) · src/widget/ (MCP Apps widget) · src/admin/ (standalone admin page).
License
MIT
Installing Sticker
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/asashiki/sticker-mcpFAQ
Is Sticker MCP free?
Yes, Sticker MCP is free — one-click install via Unyly at no cost.
Does Sticker need an API key?
No, Sticker runs without API keys or environment variables.
Is Sticker hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Sticker in Claude Desktop, Claude Code or Cursor?
Open Sticker on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
LibreOffice Tools
Enables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, a
by passerbyflutterdannote/figma-use
Full Figma control: create shapes, text, components, set styles, auto-layout, variables, export. 80+ tools.
by dannoteLogo.dev
Search and retrieve company logos by brand or domain. Customize size, format, and theme to match your design needs. Accelerate design, prototyping, and content
by NOVA-3951PIX4Dmatic
Enables GUI automation for controlling PIX4Dmatic on Windows through MCP. Supports launching, focusing, capturing screenshots, sending hotkeys, clicking UI elem
by jangjo123Compare Sticker with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All design MCPs
