mcpField
T
Todo App using MCP Server

Todo App using MCP Server

远程服务
github.com/theatulanand生产力081 周前更新
代码仓库

关于 Todo App using MCP Server

这是一个基于 Express.js 的待办应用,使用 Google Gemini API 解读自然语言指令,并以 MongoDB 保存数据。适合通过命令管理待办的用户,也支持通过 SSE 接收实时更新。

主要功能

  1. 01用自然语言添加待办
  2. 02列出待办并可包含已完成项
  3. 03按 MongoDB ID 完成待办
  4. 04按 MongoDB ID 删除待办
  5. 05通过 SSE 推送实时更新

适用场景

  1. 01用一句话创建购物任务
  2. 02查看未完成或全部待办
  3. 03标记指定待办为已完成
  4. 04让 MCP 客户端接收待办变更

MCP 相关

项目通过 MCP 和 SSE 提供实时更新,并设有 `/sse` 端点供兼容客户端连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:3000/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;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 获取)

安装

  1. 克隆代码库

    git clone https://github.com/theatulanand/to-do-mcp-server.git
    cd todo-mcp-single
    
  2. 安装依赖

    npm install
    
  3. 设置环境变量

    在根目录中创建 .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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。