使用说明
全MCP服务器
一个使用模型上下文协议(MCP)构建的简单待办事项列表应用程序。此服务器演示了如何创建MCP工具,Claude等AI助手可以使用这些工具来管理待办事项列表。
什么是MCP?
模型上下文协议(MCP)是一个开放标准,使AI助手能够安全地与外部工具和数据源进行交互。把它想象成人工智能的REST——它规范了LLM如何发现和调用应用程序中的函数。
特性
此服务器提供两个工具:
- 全部添加:添加一个带有标题、描述和优先级的新待办事项
- list_所有:列出所有待办事项
先决条件
- Node.js 18或更高版本
- pnpm(或npm/yarn)
- 克劳德桌面(用于测试)
安装
- 克隆此存储库:
git clone git@github.com:oscarwang20/mcp-demo.git
cd mcp-demo
- 安装依赖项:
pnpm install
- 构建项目:
pnpm build
用法
使用Claude Desktop进行测试
- 构建服务器:
pnpm build
- 将服务器添加到您的Claude Desktop配置中:
在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"todo": {
"command": "node",
"args": ["/absolute/path/to/mcp-demo/build/index.js"]
}
}
}
-
重新启动克劳德桌面
-
试试看!试着问克劳德:
- “将‘购买杂货’添加到我的待办事项列表中”
- “显示我的所有待办事项”
- “添加高优先级任务以完成演示文稿”
项目结构
mcp-demo/
├── src/
│ └── index.ts # Main server code
├── build/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
运作原理
1.服务器设置
服务器使用MCP SDK创建通过stdio通信的服务器:
const server = new McpServer({
name: "Todo App MCP Server",
version: "1.0.0",
description: "A simple TODO application using MCP",
capabilities: {
resources: {},
tools: {},
},
});
2.工具登记
工具在定义其输入和输出的模式中注册:
server.registerTool(
"add_todo",
{
description: "Adds a new todo item",
inputSchema: {
title: z.string().min(1),
description: z.string().optional(),
priority: z.enum(["low", "medium", "high"]).default("medium").optional(),
},
outputSchema: {
success: z.boolean(),
},
},
async ({ title, description, priority }) => {
// Your tool logic here
return {
content: [{ type: "text", text: "Success message" }],
structuredContent: { success: true },
};
}
);
3.响应格式
重要:MCP响应必须遵循以下结构:
return {
content: [ // Array of content items
{ type: "text", text: "..." } // Human-readable text
],
structuredContent: { /* ... */ } // Optional: structured data
};
这 content 数组是 必需的 -忽略它会导致验证错误!
黑客马拉松挑战
要扩展此服务器吗?尝试添加:
初学者:
delete_todo(id)-按ID删除待办事项complete_todo(id)-将待办事项标记为已完成/未完成update_priority(id, priority)-更改待办事项的优先级
中级:
search_todos(query)-按标题或描述搜索待办事项filter_todos(priority, completed)-按条件筛选待办事项- 在待办事项中添加截止日期
高级:
- 将待办事项持久化为JSON文件或数据库
- 添加待办事项类别/标签
- 实现用户之间的待办事项共享
- 添加定期待办事项
发展
在开发中运行:
pnpm build && node build/index.js
进行更改:
- 编辑
src/index.ts - 跑
pnpm build - 重新启动Claude Desktop以查看更改
常见问题
“输出验证错误”
确保您的工具返回正确的格式 content 数组:
return {
content: [{ type: "text", text: "..." }], // ← Don't forget this!
structuredContent: { /* your data */ }
};
克劳德找不到服务器
- 检查路径是否正确
claude_desktop_config.json是绝对的 - 确保你跑了
pnpm build - 配置更改后重新启动Claude Desktop
未显示更改
- 始终运行
pnpm build代码更改后 - 重新启动Claude Desktop以重新加载服务器
资源
贡献
请随时提交问题和增强请求!
专为MCP碰撞课程演示而设计
