使用说明
Claude的TODO MCP服务器(Python)
使用Python实现的简单TODO MCP服务器 mcp SDK。它通过HTTP公开MCP工具,因此Claude web可以添加、列出和删除TODO,并将数据存储在本地JSON文件中。
特性
- Python MCP服务器 使用
mcp.server.fastmcp.FastMCP - 工具:
add_todo_item(text: str)–添加到所有list_todo_items()–列出所有TODOremove_todo_item(todo_id: str)–按id删除
- 存储:磁盘上带有文件锁定的JSON文件(
filelock) - 运输:可流式传输HTTP
/mcp(默认端口8000) - 身份验证模式 (目前仅配置):
AUTH_MODE=none–无身份验证(仅限本地)AUTH_MODE=api_key–通过HTTP头的静态API密钥AUTH_MODE=cognito–AWS Cognito JWT验证助手
注意:MCP Python SDK的HTTP传输目前不直接向工具处理程序公开HTTP标头。这
auth.py模块提供了可重用的功能来验证API密钥和Cognito JWT,您可以在SDK公开挂钩后将其插入到HTTP中间件中,或者通过反向代理在转发到之前终止身份验证/mcp.
存储库结构
回购根的单一真实来源;没有重复的应用程序代码。
- 服务器.py –MCP应用程序+HTTP入口点(CORS,可流式传输HTTP)。
- server_strio.py –克劳德桌面/.mcpb的Stdio入口点。
- config.py, todo_store.py, auth.py –配置、存储、身份验证助手。
- mcpb/ –仅捆绑文件:
manifest.json,data/.gitkeep。参见 mcpb/README.md. - scripts/build-mcpb.sh –建筑
todo-mcp.mcpb从根+mcpb(从项目根运行)。
1.安装依赖项(本地开发)
从项目根:
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
2.在本地运行MCP服务器
默认情况下,这将:
- 倾听
0.0.0.0:8000 - 将待办事项存储在
./data/todos.json - 使用
AUTH_MODE=api_key(但尚未在HTTP级别强制执行)
export MCP_PORT=8000
export TODO_FILE_PATH=./data/todos.json
export AUTH_MODE=none # for local testing
python server.py
您应该看到服务器启动时没有错误。
使用MCP检查员进行测试(可选)
在另一个终端中:
npx -y @modelcontextprotocol/inspector
连接到:
http://localhost:8000/mcp
您应该看到这些工具:
add_todo_itemlist_todo_itemsremove_todo_item
3.Docker构建和运行(本地)
塑造形象:
docker build -t todo-mcp:local .
用挂载的 data 目录:
mkdir -p data
docker run \
-p 8000:8000 \
-e MCP_PORT=8000 \
-e TODO_FILE_PATH=/app/data/todos.json \
-e AUTH_MODE=none \
-v "$(pwd)/data:/app/data" \
todo-mcp:local
或使用 docker-compose:
docker compose up --build
然后将MCP检查器连接到 http://localhost:8000/mcp 如上所述。
4.克劳德桌面(.mcpb)
要在Claude Desktop中作为一键扩展安装:
- 从项目根构建捆绑包:
./scripts/build-mcpb.sh - 双击生成的 全部-mcp.mcpb 并在Claude Desktop中批准。
- 如果需要,请重新启动Claude Desktop。看 mcpb/README.md 了解详情。
5.部署到AWS ExpressRoute(VM上的Docker)
-
创建IntelliTrace实例
- 在您喜欢的地区选择一个小型Linux实例(Ubuntu)。
- 启用SSH。
- 在“网络”中,打开:
- 传输控制协议 22 (SSH)
- 传输控制协议 8000 (如果你在前面放了一个反向代理,则为80/443)
-
在实例上安装Docker
SSH进入实例:
sudo apt-get update sudo apt-get install -y docker.io docker-compose-plugin sudo usermod -aG docker "$USER" # log out and back in to apply group changes -
将代码放到实例上
选项:
git clone您的回购,或scp此文件夹已打开,或- 将Docker镜像推送到注册表(Docker Hub/ECR)
docker pull在kubectl上。
直接在实例上构建的示例:
cd ~/mcp-todo docker build -t todo-mcp:prod . mkdir -p data docker run -d \ --name todo-mcp \ -p 8000:8000 \ -e MCP_PORT=8000 \ -e TODO_FILE_PATH=/app/data/todos.json \ -e AUTH_MODE=none \ -v "$PWD/data:/app/data" \ todo-mcp:prod -
(可选)在前面添加HTTPS和Cognito
对于生产,您通常:
- 在容器前面放置一个HTTPS负载均衡器或Nginx反向代理。
- 配置AWS Cognito(或具有Cognito身份验证的AWS ALB)以保护
/mcp终点。 - 仅将经过身份验证的流量转发到MCP服务器。
auth.py 已包含助手(verify_api_key, verify_cognito_jwt, authenticate_from_headers)一旦MCP HTTP传输公开了头,或者从sidecar API网关/代理,您就可以在未来的HTTP中间件层中使用。
6.从Claude连接(HTTP MCP)
一旦可以从公共互联网访问服务器(例如):
http://YOUR_LIGHTSAIL_IP:8000/mcp
在Claude web/Claude Code中添加一个HTTP MCP服务器,如下所示:
- 运输:HTTP
- 统一资源定位符:
http://YOUR_LIGHTSAIL_IP:8000/mcp(或https://your-domain/mcp如果在HTTPS之后) - 标头:
- 目前,您可以暂时留空
AUTH_MODE=none. - 稍后,一旦您将其转发给Cognito或API网关,您通常会添加:
Authorization: Bearer <your-token>或X-API-Key: <your-api-key>
- 目前,您可以暂时留空
保存后,克劳德应该:
- 了解TODO工具。
- 让你跑
add_todo_item,list_todo_items,以及remove_todo_item直接从聊天。
7.AWS Cognito集成(概念性)
要在开发此项目时集成Cognito:
-
创建Cognito用户池和应用程序客户端
- 注意 用户池ID 和 区域.
- 创建一个 应用客户端 (无客户机密),注意其 客户端ID.
-
在IntelliTrace上设置环境变量
export AUTH_MODE=cognito export COGNITO_REGION=your-region export COGNITO_USER_POOL_ID=your-pool-id export COGNITO_APP_CLIENT_ID=your-app-client-id -
获取JWT令牌
- 使用AWS CLI(
aws cognito-idp initiate-auth)或一个小助手应用程序登录并获取ID或访问令牌。
- 使用AWS CLI(
-
配置前端/身份验证代理
- 确保它发送
Authorization: Bearer <token>到您的MCP服务器。 - 这
auth.py助手展示了如何在HTTP标头可用时在服务器端验证这些令牌。
- 确保它发送
8.注意事项和下一步行动
- 这是有意最小化和基于文件的。更严重的使用:
- 将存储移动到数据库(例如DynamoDB、PostgreSQL)。
- 添加结构化日志记录和监控。
- 加强网络访问(防火墙、IP允许列表、更严格的身份验证)。
- 现在,您可以通过在中添加更多修饰函数来迭代其他工具(例如,将TODO标记为已完成、按用户过滤等)
server.py.
