关于 Todo App using MCP Server
这是一个基于 Express.js 的待办应用,使用 Google Gemini API 解读自然语言指令,并以 MongoDB 保存数据。适合通过命令管理待办的用户,也支持通过 SSE 接收实时更新。
主要功能
- 01用自然语言添加待办
- 02列出待办并可包含已完成项
- 03按 MongoDB ID 完成待办
- 04按 MongoDB ID 删除待办
- 05通过 SSE 推送实时更新
适用场景
- 01用一句话创建购物任务
- 02查看未完成或全部待办
- 03标记指定待办为已完成
- 04让 MCP 客户端接收待办变更
MCP 相关
项目通过 MCP 和 SSE 提供实时更新,并设有 `/sse` 端点供兼容客户端连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
服务地址
http://localhost:3000/sse一键复制安装命令
Claude CodeTerminal
claude mcp add --transport http to-do http://localhost:3000/sseCursor.cursor/mcp.json
{"mcpServers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}在 Cursor 中打开VS Code.vscode/mcp.json
{"servers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}在 VS Code 中打开Claude Desktopclaude_desktop_config.json
{"mcpServers":{"to-do":{"type":"http","url":"http://localhost:3000/sse"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"to-do":{"serverUrl":"http://localhost:3000/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
使用 MCP 服务的 Todo 应用
一款简单的 Todo 应用,使用 Google Gemini API 增强自然语言处理能力,通过 MongoDB 持久化数据,并使用 MCP(Model Context Protocol)通过服务器发送事件(SSE)实现实时更新。采用基于 Express.js 的模块化 MVC 架构构建。
功能
- 使用自然语言添加待办事项(例如:“添加一项买牛奶的任务”)
- 列出待办事项(可选择包含已完成的事项)
- 使用 MongoDB ID 将待办事项标记为已完成
- 使用 MongoDB ID 删除待办事项
- 使用 MCP 通过服务器发送事件(SSE)接收实时更新
技术栈
- Node.js:服务器运行时
- Express.js:路由和中间件
- MongoDB(Atlas):云端 NoSQL 数据库
- Mongoose:MongoDB 的 ODM
- Google Gemini API:处理自然语言命令解析
- @modelcontextprotocol/sdk:用于 MCP 集成和 SSE
- dotenv:用于管理环境变量
前置条件
- Node.js(v18 或更高版本)
- MongoDB Atlas 集群(需要凭据)
- Google Gemini API 密钥(可从 Google AI Studio 获取)
安装
-
克隆代码库
git clone https://github.com/theatulanand/to-do-mcp-server.git cd todo-mcp-single -
安装依赖
npm install -
设置环境变量
在根目录中创建
.env文件:PORT=3000 MONGO_URI=URI GEMINI_API_KEY=
运行应用
启动服务:
npm start
你应该会看到:
Connected to MongoDB with Mongoose
Server running on http://localhost:3000
要停止服务,请按 Ctrl + C。
使用方法
向 /api/command 发送包含 JSON 请求体的 POST 请求:
{ "command": "Add a task to buy milk" }
命令示例
-
添加:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Add a task to buy milk"}' -
列出:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "List my todos"}' -
完成:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Complete todo with ID some_mongodb_id"}' -
删除:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "Delete todo with ID some_mongodb_id"}' -
列出已完成的事项:
curl -X POST http://localhost:3000/api/command -H "Content-Type: application/json" -d '{"command": "List my todos including completed"}'
实时更新(SSE)
连接到 /sse 以接收实时更新。(需要兼容 MCP 的客户端。)
项目结构
todo-mcp-single/
├── models/ # Mongoose schemas
│ └── Todo.js
├── controllers/ # Business logic
│ └── todoController.js
├── routes/ # API routes
│ └── todoRoutes.js
├── utils/ # Utility functions (e.g., Gemini integration)
│ └── gemini.js
├── .env # Environment configuration
└── server.js # App entry point
故障排除
- MongoDB 连接失败:检查 Atlas 中的 MONGO_URI 和 IP 白名单。
- Gemini API 错误:验证 API 密钥和对
generativelanguage.googleapis.com的网络访问。 - 无法识别的命令:检查日志中的 Gemini 原始输出以进行调试。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。