使用说明
待办事项列表MCP服务器
一个使用AWS Bedrock AgentCore Runtime的模型上下文协议(MCP)构建的最小待办事项列表应用程序,具有OAuth身份验证功能。
特性
- 添加新待办事项
- 列出所有待办事项及其完成状态
- 将待办事项标记为已完成
- 删除待办事项
- 使用AWS Cognito进行OAuth身份验证
- 通过AWS Bedrock AgentCore进行远程访问
- ChatGPT应用程序SDK兼容性 具有小部件支持和结构化内容
可用工具
add_todo(task: str)-添加新的待办事项list_todos()-列出所有待办事项complete_todo(todo_id: int)-将待办事项标记为已完成delete_todo(todo_id: int)-删除待办事项
本地测试
- 安装依赖项:
pip install -r requirements.txt
- 启动MCP服务器:
python mcp_server.py
- 运行测试:
./tests/run_tests.sh
AWS部署
- 安装部署工具:
pip install bedrock-agentcore-starter-toolkit
- 设置Cognito身份验证:
cd setup && ./setup_cognito.sh
此脚本自动创建Cognito用户池、客户端和测试用户。
- 设置DynamoDB表:
cd setup && ./setup_dynamodb.sh
此脚本为持久todo存储创建DynamoDB表。
- 使用OAuth配置部署(重要提示:不包括
allowedAudience-Cognito代币没有aud声称):
agentcore configure -e mcp_server.py --protocol MCP --name mcp_gpt_app --non-interactive --disable-memory --authorizer-config '{"customJWTAuthorizer":{"discoveryUrl":"https://cognito-idp.us-east-1.amazonaws.com/YOUR_POOL_ID/.well-known/openid-configuration","allowedClients":["YOUR_CLIENT_ID"]}}'
- 将DynamoDB权限添加到执行角色:
aws iam attach-role-policy --role-name AmazonBedrockAgentCoreSDKRuntime-us-east-1-f4f595c44d --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess
- 部署到AWS:
agentcore deploy
远程客户端使用
- 复制配置模板:
cp config.py.sample config.py
-
更新
config.py与你的价值观:AGENT_ARN:你部署的特工ARNBEARER_TOKEN:新鲜干邑访问令牌AWS_REGION:AWS区域(默认:us-east-1)
-
测试远程客户端:
python mcp_remote_client.py
ChatGPT应用SDK集成
服务器包括ChatGPT App SDK兼容性和小部件支持:
- 启动ChatGPT兼容服务器:
python mcp_chatgpt_server.py
- 测试服务器:
python test_chatgpt_server.py
- ChatGPT的功能:
- 带有可视化UI模板的小部件支持工具
- 结构化内容响应,实现丰富的交互
- 更好的用户体验工具调用元数据
- 基于web的客户端的CORS支持
Claude桌面集成
直接使用Claude Desktop测试您部署的MCP服务器:
1.配置克劳德桌面
编辑Claude Desktop的配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
添加此配置:
{
"mcpServers": {
"todo-list-remote": {
"command": "/path/to/your/project/.venv/bin/python",
"args": ["/path/to/your/project/mcp_bridge_server.py"],
"cwd": "/path/to/your/project"
}
}
}
重要:替换 /path/to/your/project 根据您的实际项目路径。
2.更新承载令牌
生成新令牌(每小时过期一次):
cd setup && ./generate_token.sh
更新 config.py 使用新令牌。
3.重新启动克劳德桌面
关闭并重新打开Claude Desktop以加载配置。
4.测试远程MCP工具
在Claude Desktop中,您现在可以使用:
- “添加待办事项:购买杂货”
- “列出我的所有待办事项”
- “将待办事项1标记为已完成”
- “删除待办事项2”
这 mcp_bridge_server.py 充当Claude Desktop(stdio)和部署的AWS MCP服务器(带OAuth的HTTP)之间的桥梁。
MCP检查器集成
使用MCP检查器测试部署的服务器:
- 启动MCP检查器:
npx @modelcontextprotocol/inspector
- 配置连接:
- 运输: 可流式传输的HTTP
- URL:您的AgentCore端点URL
- 头球
Authorization: Bearer YOUR_TOKEN
认证
服务器使用OAuth 2.0和AWS Cognito。不记名代币在1小时后过期。
重要的OAuth配置说明:
- 不
allowedAudience必需的:Cognito访问令牌不包括aud默认索赔 - 仅限使用
allowedClients:这将验证JWT令牌中的客户端ID - 新代币:过期时生成新令牌(每小时)
生成新代币:
使用令牌生成脚本:
cd setup && ./generate_token.sh
使用自定义参数:
cd setup && ./generate_token.sh CLIENT_ID CLIENT_SECRET POOL_ID
使用完整的设置脚本(创建新池):
cd setup && ./setup_cognito.sh
手动生成令牌:
CLIENT_ID="your_client_id"
CLIENT_SECRET="your_client_secret"
USERNAME="testuser"
PASSWORD="TestPassword123!"
SECRET_HASH=$(echo -n "${USERNAME}${CLIENT_ID}" | openssl dgst -sha256 -hmac "$CLIENT_SECRET" -binary | base64)
aws cognito-idp initiate-auth \
--client-id "$CLIENT_ID" \
--auth-flow USER_PASSWORD_AUTH \
--auth-parameters USERNAME=$USERNAME,PASSWORD=$PASSWORD,SECRET_HASH=$SECRET_HASH \
--region us-east-1 \
--query 'AuthenticationResult.AccessToken' \
--output text
项目结构
├── mcp_server.py # Main MCP server
├── mcp_chatgpt_server.py # ChatGPT App SDK compatible server
├── mcp_remote_client.py # Remote client example
├── config.py.sample # Configuration template
├── setup/ # Cognito setup scripts
│ └── setup_cognito.sh # OAuth setup script
├── tests/ # Test files
│ ├── test_basic.py # Basic functionality tests
│ ├── test_comprehensive.py # Full feature tests
│ ├── test_errors.py # Error handling tests
│ └── run_tests.sh # Test runner script
├── test_chatgpt_server.py # ChatGPT App SDK server test
├── requirements.txt # Dependencies
└── __init__.py # Python package file