使用说明
DemoTool MCP 服务器
为DemoTool项目设计的一个模块化模型上下文协议(MCP)服务器。该服务器提供了自定义工具,供Cursor中的AI助手使用,以便更好地理解和与代码库进行交互。
什么是MCP?
模型上下文协议(MCP)是一种开放协议,允许人工智能助手安全地与外部数据源和工具进行交互。该服务器提供了项目专用的工具,Cursor可以利用这些工具来优化开发工作流程。
项目结构
服务器采用模块化架构设计,便于维护和扩展:
mcp-server/
├── src/
│ ├── config/ # Server configuration
│ │ ├── server.config.ts
│ │ └── index.ts
│ ├── server/ # Server setup and request handlers
│ │ ├── setup.ts
│ │ └── index.ts
│ ├── tools/ # Tool implementations
│ │ ├── tool-registry.ts # Tool registry pattern
│ │ ├── hello-world.tool.ts # Example tool
│ │ └── index.ts
│ ├── types/ # TypeScript type definitions
│ │ ├── tool.types.ts
│ │ ├── server.types.ts
│ │ └── index.ts
│ └── index.ts # Main entry point
├── dist/ # Compiled JavaScript output
├── package.json
└── tsconfig.json
可用工具
这个MCP服务器目前提供:
- 你好,世界 - 返回一条友好的“hello world”消息
- 可选参数:
name(字符串) - 要问候的名称,默认为“World”
- 可选参数:
安装
- 安装依赖项:
cd mcp-server
npm install
- 构建服务器:
npm run build
在Cursor中的配置
将此MCP服务器与Cursor集成:
方法1:使用光标设置用户界面
- 打开光标设置
- 导航至 特点 → MCP(Multiple Choice Question)——多项选择题
- 点击 + 添加新的MCP服务器
- 配置:
- 名字:
kids-daily-tool - 类型:
stdio - 命令:
node /home/fernando/code/kids-daily-tool/mcp-server/dist/index.js
- 名字:
方法2:手动配置(高级)
直接编辑光标(Cursor)的MCP配置文件:
Linux/Mac(可译为:Linux系统/Mac系统): ~/.config/cursor/mcp.json
Windows: %APPDATA%\Cursor\mcp.json
添加此配置:
{
"mcpServers": {
"kids-daily-tool": {
"command": "node",
"args": ["/home/fernando/code/kids-daily-tool/mcp-server/dist/index.js"],
"env": {}
}
}
}
在Cursor中的使用
配置完成后,您可以在Cursor Composer中使用自然语言提示来调用该工具:
- “替我问好!”
- “使用hello_world工具”
- “调用名为Fernando的hello_world MCP工具”
Cursor 会自动检测何时需要使用 MCP 工具,并代表您执行该工具。工具将返回一条友好的问候信息。
发展
修改服务器:
- 在(某个地方)编辑文件
src/ - 重建:
npm run build - 重启光标以应用更改
故障排除
服务器未在Cursor中显示
- 确保你已经构建了服务器(
npm run build) - 验证你的配置中的路径是否为绝对路径
- 在更改配置后重启光标(或:在更改配置后重置光标)
工具错误
- 检查光标开发者控制台中的错误信息
- 验证项目目录中的文件权限
- 确保您的 PATH 中包含 Node.js
扩展服务器
模块化架构使得添加新工具变得轻松简单。请按照以下步骤操作:
1. 创建一个新工具
在(某个位置/目录)创建一个新文件 src/tools/,例如。, my-new-tool.tool.ts:
import {
Tool,
ToolDefinition,
ToolArguments,
ToolResult,
} from "../types/index.js";
export class MyNewTool implements Tool {
getDefinition(): ToolDefinition {
return {
name: "my_new_tool",
description: "Description of what your tool does",
inputSchema: {
type: "object",
properties: {
param1: {
type: "string",
description: "Description of param1",
},
},
required: ["param1"],
},
};
}
async execute(args: ToolArguments): Promise<ToolResult> {
// Implement your tool logic here
const result = `Processing: ${args.param1}`;
return {
content: [
{
type: "text",
text: result,
},
],
};
}
}
2. 注册工具
将你的工具添加到 src/tools/index.ts:
export * from "./my-new-tool.tool.js";
import { MyNewTool } from "./my-new-tool.tool.js";
export function getAllTools(): Tool[] {
return [
new HelloWorldTool(),
new MyNewTool(), // Add your tool here
];
}
3. 重建与测试
npm run build
就是这样!工具注册表会自动识别您的新工具。
架构优势
- 模块化每个工具都独立存在于自己的文件中
- 类型安全全面支持 TypeScript,配备适当的接口
- 可扩展性易于添加新工具,而无需修改核心逻辑
- 可维护性明确的职责分离
- 可测试性可以单独测试各个工具
安全注意事项
- 此服务器仅提供对项目信息的只读访问权限
- 它在本地运行,并不将数据发送到外部服务
- 在将MCP服务器代码与您的编辑器集成之前,务必先进行审查
