@trendmoon/mcp-server
Version:
TrendMoon MCP Server - Library and Standalone Server for Cryptocurrency and Social Data
56 lines • 2.27 kB
JavaScript
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