|
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function safeToolHandler<T>( |
|
|
handler: (args: T) => Promise<unknown> |
|
|
): (args: T) => Promise<{ isError?: boolean; content: { type: "text"; text: string }[];[x: string]: unknown }> { |
|
|
return async (args: T) => { |
|
|
try { |
|
|
const result = await handler(args); |
|
|
return { |
|
|
content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }], |
|
|
}; |
|
|
} catch (error: unknown) { |
|
|
const message = error instanceof Error ? error.message : "An unexpected error occurred"; |
|
|
console.error("[MCP Tool Error]", message); |
|
|
return { |
|
|
isError: true, |
|
|
content: [{ type: "text" as const, text: `Error: ${message}` }], |
|
|
}; |
|
|
} |
|
|
}; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export type ToolRegistrar = (mcp: McpServer) => void; |
|
|
|