本项目是一个使用Anthropic的Model Context Protocol(MCP)协议实现的测试服务器,提供了数学计算工具和完善的错误处理机制,以下是详细介绍。
git clone <项目地址>
cd mcp-server-test
npm install
npm run build
node src/index.js
src/controllers/MathsController.ts:包含数学运算的处理逻辑。src/definitions/maths/addition.ts:加法工具的定义文件。// `src/definitions/maths/addition.ts`
export const ADDITION = {
name: "addition",
description: "计算两个数字的和。",
parameters: [
{ type: "number", name: "a", description: "第一个数字" },
{ type: "number", name: "b", description: "第二个数字" }
],
example: "{ a: 2, b: 3 }"
};
// `src/controllers/MathsController.ts`
export class MathsController {
async handleAddition(a: number, b: number) {
try {
const result = a + b;
return {
content: [
{ type: "text", text: `和为:${result}` }
],
isError: false
};
} catch (error) {
return {
content: [
{ type: "text", text: `计算错误:${error instanceof Error ? error.message : String(error)}` }
],
isError: true
};
}
}
}
// `src/utils/toolRegistry.ts`
export const controllerMap = {
addition: {
controller: MathsController,
handlerMethod: "handleAddition"
}
};
// `src/index.ts`
const tools = getToolDefinitions();
const server = new Server({
name: "mcp-server",
version: "0.1.0"
}, {
capabilities: {
tools: getToolDefinitions()
}
});
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: tools
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
try {
const handler = getToolHandler(request.params.name);
if (!handler) {
return toolController.getUnknownToolResponse(request.params.name);
}
return await handler(request.params.arguments);
} catch (error) {
return toolController.getErrorResponse(error);
}
});
command。node <项目绝对路径>/build/index.js。完成以上步骤后,服务器状态将显示为绿色,并列出所有已注册的工具。