UNPKG

marriage-mcp

Version:

MCP that filters marriage biodata redirected to Salunke family based on Gaurav's preferences.

77 lines (63 loc) 1.82 kB
#!/usr/bin/env node import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { CONSTANTS } from "./constants.js"; import { loadTools, createToolsMap } from "./utils/toolLoader.js"; const { PROJECT_NAME, PROJECT_VERSION } = CONSTANTS; let toolsMap: Map<string, any>; const server = new Server( { name: PROJECT_NAME, version: PROJECT_VERSION, }, { capabilities: { tools: { enabled: true, }, }, } ); server.setRequestHandler(ListToolsRequestSchema, async () => { if (!toolsMap || toolsMap.size === 0) { console.warn("No tools available for listing"); return { tools: [] }; } return { tools: Array.from(toolsMap.values()).map((tool) => tool.toolDefinition), }; }); server.setRequestHandler(CallToolRequestSchema, async (request) => { if (!toolsMap) { throw new Error("Tools not initialized"); } const tool = toolsMap.get(request.params.name); if (!tool) { throw new Error( `Unknown tool: ${request.params.name}. Available tools: ${Array.from( toolsMap.keys() ).join(", ")}` ); } return tool.toolCall(request); }); async function main() { try { console.log("Starting marriage-mcp Server..."); const tools = await loadTools(); console.log(tools) toolsMap = createToolsMap(tools); console.log(`Initialized tools:`, Array.from(toolsMap.keys()).join(", ")); const transport = new StdioServerTransport(); await server.connect(transport); console.log("Server running!"); } catch (error) { console.error("Startup failed:", error); process.exit(1); } } main();