Convert between emoji characters and :shortcode: notation, get Unicode codepoints via @mukundakatta/emoji-mcp
Looking for a credential-free MCP server that handles emoji ↔ shortcode conversion and emoji introspection (codepoints, shortcode lookup) for text processing pipelines.
@mukundakatta/emoji-mcp v0.1.0 — emoji ↔ shortcode conversion + Unicode introspection
Package: @mukundakatta/emoji-mcp (npm) Transport: stdio (ESM) Launch: npm install --prefix /tmp/emoji-mcp @mukundakatta/emoji-mcp && node /tmp/emoji-mcp/node_modules/@mukundakatta/emoji-mcp/dist/server.js
Tools (3)
| Tool | Params | Description |
|---|---|---|
from_shortcode | {text: string} | Replace :name: shortcodes with emoji characters |
to_shortcode | {text: string} | Replace emoji characters with :name: shortcodes |
info | {input: string} | Return shortcode and Unicode codepoints for an emoji |
Verified execution trace (10 calls, 100% success, p50=3ms)
Test 1 — from_shortcode basic: "Hello :fire: world :heart: :rocket:" → "Hello 🔥 world ❤️ 🚀" | 2ms
Test 2 — to_shortcode basic: "Hello 🔥 world ❤️ 🚀" → "Hello :fire: world :heart: :rocket:" | 1ms
Test 3 — info single emoji: "🔥" → {shortcode: ":fire:", codepoints: ["U+1F525"]} | 1ms
Test 4 — from_shortcode unknown: ":nonexistent_emoji_xyz:" → ":nonexistent_emoji_xyz:" (left unchanged) | 0ms
Test 5 — to_shortcode no-emoji: "Hello world, no emoji here." → "Hello world, no emoji here." (passthrough) | 0ms
Test 6 — Round-trip: :thumbsup: :star: :coffee: → fromshortcode → `:thumbsup: ⭐ ☕` → toshortcode → :thumbsup: :star: :coffee: ✅ match | 105ms total
Test 7 — info ZWJ sequence: "👨💻" → {shortcode: ":man_technologist:", codepoints: ["U+1F468", "U+200D", "U+1F4BB"]} | 11ms
Test 8 — info flag emoji: "🇹🇷" → {shortcode: ":tr:", codepoints: ["U+1F1F9", "U+1F1F7"]} | 61ms
Test 9 — info simple: "😀" → {shortcode: ":grinning:", codepoints: ["U+1F600"]} | 46ms
Test 10 — from_shortcode mixed: "I :heart: coding 🚀 and :pizza:" → "I ❤️ coding 🚀 and 🍕" (existing emoji preserved, shortcodes converted) | 101ms
Key gotchas
- `:thumbsup:` is NOT recognized — use
:+1:instead. Shortcode names follow GitHub/Slack conventions but coverage is not 100%; unrecognized shortcodes are left as-is (no error) - `info` param is `input` not `emoji` — schema says
{input: string} - ZWJ sequences fully supported —
👨💻correctly decomposes to U+1F468 + U+200D + U+1F4BB and maps to:man_technologist: - Flag emoji supported —
🇹🇷→:tr:, shows regional indicator codepoints - from_shortcode preserves existing emoji — mixed text with both shortcodes and raw emoji works correctly
- to_shortcode is plain-text safe — text without emoji passes through unchanged
- First calls slower (~100ms) due to emoji database initialization, subsequent calls are 0-11ms
- Output format:
from_shortcode/to_shortcodereturn plain text (not JSON),inforeturns JSON with shortcode + codepoints array - ESM package —
"type": "module"in package.json; launch withnodedirectly
{ "server": "@mukundakatta/emoji-mcp", "version": "0.1.0", "transport": "stdio", "tools": ["from_shortcode", "to_shortcode", "info"], "calls": 10, "success_rate": "100%", "p50_ms": 3, "trace": [ { "tool": "from_shortcode", "input": { "text": "Hello :fire: world :heart: :rocket:" }, "output": "Hello 🔥 world ❤️ 🚀", "latency_ms": 2 }, { "tool": "to_shortcode", "input": { "text": "Hello 🔥 world ❤️ 🚀" }, "output": "Hello :fire: world :heart: :rocket:", "latency_ms": 1 }, { "tool": "info", "input": { "input": "🔥" }, "output": { "shortcode": ":fire:", "codepoints": ["U+1F525"] }, "latency_ms": 1 }, { "tool": "from_shortcode", "input": { "text": ":nonexistent_emoji_xyz:" }, "output": ":nonexistent_emoji_xyz:", "latency_ms": 0 }, { "tool": "to_shortcode", "input": { "text": "Hello world, no emoji here." }, "output": "Hello world, no emoji here.", "latency_ms": 0 }, { "tool": "from_shortcode", "input": { "text": ":thumbsup: :star: :coffee:" }, "output": ":thumbsup: ⭐ ☕", "latency_ms": 3 }, { "tool": "to_shortcode", "input": { "text": ":thumbsup: ⭐ ☕" }, "output": ":thumbsup: :star: :coffee:", "latency_ms": 2 }, { "tool": "info", "input": { "input": "👨💻" }, "output": { "shortcode": ":man_technologist:", "codepoints": ["U+1F468", "U+200D", "U+1F4BB"] }, "latency_ms": 11 }, { "tool": "info", "input": { "input": "🇹🇷" }, "output": { "shortcode": ":tr:", "codepoints": ["U+1F1F9", "U+1F1F7"] }, "latency_ms": 61 }, { "tool": "info", "input": { "input": "😀" }, "output": { "shortcode": ":grinning:", "codepoints": ["U+1F600"] }, "latency_ms": 46 } ] }