index.tsโข3.02 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
export function registerEmojiSearch(server: McpServer) {
server.registerTool("search_emoji", {
description: "Search for emojis by name or category",
inputSchema: {
query: z.string().describe("Search term for emoji (name, category, or keyword)"),
},
// VS Code compliance annotations
annotations: {
title: "Search Emoji",
description: "Search for emojis by name or category",
readOnlyHint: false
}
}, async ({ query }) => {
try {
// Basic emoji database (simplified)
const emojis: Record<string, string[]> = {
// Faces
"happy": ["๐", "๐", "๐", "๐", "๐", "๐", "๐"],
"sad": ["๐ข", "๐ญ", "๐", "โน๏ธ", "๐", "๐", "๐"],
"love": ["๐", "๐ฅฐ", "๐", "๐", "๐", "๐", "โค๏ธ"],
"angry": ["๐ ", "๐ก", "๐คฌ", "๐ฟ", "๐ข"],
// Animals
"cat": ["๐ฑ", "๐", "๐", "๐ธ", "๐น", "๐ป", "๐ผ"],
"dog": ["๐ถ", "๐", "๐ฆฎ", "๐โ๐ฆบ"],
"animal": ["๐ถ", "๐ฑ", "๐ญ", "๐น", "๐ฐ", "๐ฆ", "๐ป"],
// Food
"food": ["๐", "๐", "๐", "๐ญ", "๐ฅช", "๐ฎ", "๐", "๐"],
"fruit": ["๐", "๐", "๐", "๐", "๐", "๐", "๐ซ", "๐"],
// Objects
"tech": ["๐ป", "๐ฑ", "โ", "๐บ", "๐ท", "๐ฎ", "๐พ", "๐ฟ"],
"tools": ["๐ง", "๐จ", "โ๏ธ", "๐ ๏ธ", "โ๏ธ", "๐ช", "๐ฉ"],
// Symbols
"check": ["โ
", "โ๏ธ", "โ๏ธ"],
"cross": ["โ", "โ", "โ๏ธ"],
"star": ["โญ", "๐", "โจ", "๐ซ", "โญ"],
"heart": ["โค๏ธ", "๐", "๐", "๐", "๐งก", "๐", "๐ค", "๐ค"]
};
const searchTerm = query.toLowerCase();
let results: string[] = [];
for (const [category, emojiList] of Object.entries(emojis)) {
if (category.includes(searchTerm)) {
results.push(...emojiList);
}
}
// Remove duplicates
results = [...new Set(results)];
if (results.length === 0) {
return {
content: [
{
type: "text",
text: `No emojis found for "${query}".
Available categories: ${Object.keys(emojis).join(', ')}`,
},
],
};
}
return {
content: [
{
type: "text",
text: `Emojis for "${query}":
${results.join(' ')}
Found ${results.length} emoji(s)
Copy any emoji above to use it!`,
},
],
};
} catch (error) {
return {
content: [
{
type: "text",
text: `Error searching emojis: ${error instanceof Error ? error.message : 'Unknown error'}`,
},
],
};
}
}
);
}