UNPKG

@trendmoon/mcp-server

Version:

TrendMoon MCP Server - Library and Standalone Server for Cryptocurrency and Social Data

56 lines 2.27 kB
import { z } from "zod"; export const SearchCoinsSchema = z.object({ query: z.string().optional(), symbol: z.string().optional(), platforms: z.string().optional(), orderBy: z.string().optional(), orderDirection: z.string().optional(), limit: z.number().optional(), offset: z.number().optional(), }); export const GetPlatformsSchema = z.object({}); export const GetCoinDetailsSchema = z.object({ symbol: z.string(), }); export function registerCoinTools(mcpServer, coinService) { mcpServer.registerTool("searchCoins", { description: "Search for coins based on various criteria", inputSchema: SearchCoinsSchema.shape, }, async (params, _extra) => { try { const data = await coinService.searchCoins(params); return { content: [{ type: "text", text: JSON.stringify(data) }] }; } catch (error) { console.error("Error in searchCoins tool:", error); return { isError: true, content: [{ type: "text", text: `Error: ${error.message}` }] }; } }); mcpServer.registerTool("getPlatforms", { description: "Get a list of all available platforms for coins", inputSchema: GetPlatformsSchema.shape, }, async (_params, _extra) => { try { const data = await coinService.getPlatforms(); return { content: [{ type: "text", text: JSON.stringify(data) }] }; } catch (error) { console.error("Error in getPlatforms tool:", error); return { isError: true, content: [{ type: "text", text: `Error: ${error.message}` }] }; } }); mcpServer.registerTool("getCoinDetails", { description: "Get detailed information for a specific coin", inputSchema: GetCoinDetailsSchema.shape, }, async (params, _extra) => { try { const data = await coinService.getCoinDetails(params); return { content: [{ type: "text", text: JSON.stringify(data) }] }; } catch (error) { console.error("Error in getCoinDetails tool:", error); return { isError: true, content: [{ type: "text", text: `Error: ${error.message}` }] }; } }); } //# sourceMappingURL=CoinTools.js.map