sticker-mcp
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., "@sticker-mcpsend a sticker for my happy mood"
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.
English · 简体中文
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.
Related MCP server: Simple Memory MCP
Live preview
Project showcase: https://show.asashiki.com/projects/sticker-mcp.html
Tools
Tool | Purpose |
| Pick a sticker by emotion/scene |
| Catalog of |
| Download an image from an existing public http(s) URL as a sticker with name + tags. It does not accept base64/data URIs. |
| 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. |
| (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:stdioClaude 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 |
| (empty) | Public HTTPS origin; enables URL-based images + CSP. Required for web AI clients. |
|
| HTTP port. |
|
| Streamable HTTP MCP route. |
| PUBLIC_BASE_URL origin | CORS allowlist, comma separated. |
| (empty) | Optional password gate for remote connectors. Leave empty to disable auth. |
|
| stickers.json + images/. |
| (empty) | If set, |
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 assetsCode 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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/asashiki/sticker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server