使用说明
AWS上的MCP测试服务器
演示AWS上模型上下文协议(MCP)的参考实现。此存储库提供了多个主机和Terraform基础架构,以展示如何实现、测试和部署MCP服务器和客户端。
目标框架: .NET 10
存储库布局
MCPTestServer.Core--包含跨主机使用的资源、工具和提示的共享模块MCPTestServer.Console--基于STDIO的MCP服务器简单实现MCPTestServer.WebApi--ASP。用于云服务器部署的NET Web API实现MCPTestServer.Lambda--无状态ASP。针对AWS Lambda优化的.NET项目infra--包含AWS基础设施的Terraform项目infra/keycloak-setup--用于设置Keycloak的Terraform项目
演示MCP功能
服务器:
- 工具
- 资源
- 提示
客户:
- 引出
- 采样
- 根
快速启动(本地)
先决条件:
.NET 10SDK已安装Docker(用于容器构建)Node.js(用于跑步@modelcontextprotocol/inspector)
构建并运行控制台服务器:
dotnet build
dotnet run --project ./MCPTestServer.Console
在本地运行Web API:
dotnet run --project ./MCPTestServer.WebApi
格式代码:
dotnet format
MCP检验员测试
替换 [CLOUDFRONT_DISTRIBUTION_ID] 使用您的CloudFront分发id(例如 d1w0taajz0mgpa).
HTTP(本地Web API):
npx @modelcontextprotocol/inspector http://localhost:8080
控制台(STDIO)示例:
npx @modelcontextprotocol/inspector dotnet run --project ./MCPTestServer.Console --no-build
HTTPS(托管在AWS上):
npx @modelcontextprotocol/inspector https://[CLOUDFRONT_DISTRIBUTION_ID].cloudfront.net/
无状态HTTPS(Lambda):
npx @modelcontextprotocol/inspector https://[CLOUDFRONT_DISTRIBUTION_ID].cloudfront.net/lambda/
打开Keycloak UI:
https://[CLOUDFRONT_DISTRIBUTION_ID].cloudfront.net/auth/
在AWS上部署
先决条件
AWS CLI已安装并配置Docker安装Terraform安装
部署步骤
- 编辑
./infra/terraform.tfvars并设置app_name,aws_region以及您的GitHub仓库值。 - 运行辅助脚本:
./deploy.cmd
脚本的作用:
- 确保AWS CLI登录
- 为Terraform状态创建S3存储桶
- 初始化并应用Terraform以创建:
- Docker镜像的ECR存储库
- ECS集群和服务定义
- IAM角色和政策
- 应用程序负载平衡器(ALB)
- CloudFront分布
- 产生
infra/ci/task-definition.json由GitHub Actions用于ECS部署
通过GitHub Actions自动部署
- 添加生成的
infra/ci/task-definition.json到存储库(运行后./deploy.cmd). - 提交并推动以触发工作流
.github/workflows其构建容器并将其部署到ECS。
贡献与标准
该项目强制执行存储库范围的标准,以保持代码和文档的一致性。
- 格式和样式:遵循
.editorconfig.快跑dotnet format当地。 - 代码审查:打开拉取请求定向
master。保持PR较小,并包括清晰的描述和任何迁移步骤。 - 分支:使用
feature/<short-description>对于功能和hotfix/<issue-number>紧急修复。 - 测试:为新行为添加单元测试。跑
dotnet test在推动变革之前。 - CI:GitHub操作被配置为构建、测试和部署。检查
.github/workflows了解详情。 - 文档:更新
README.md以及面向用户的更改的任何特定于项目的README;小文档修复可能包含在同一PR中。
要查阅的文件:
./.editorconfig--存储库格式和样式规则
故障排除和注意事项
- 如果Terraform未能配置资源,请检查由创建的S3 bucket中的Terraform状态
./deploy.cmd. - 使用存储在CloudWatch中的应用程序日志
MCPTestServer.WebApi以及ECS任务日志,以调查运行时问题。 - 确保部署运行时匹配
.NET 10. - 对于部署过程中的权限错误,请确认CLI使用的AWS凭据和IAM策略具有所需的权限。
下一步去哪里看
- 工具、资源和提示的源代码:
MCPTestServer.Core - Web API配置和扩展:
MCPTestServer.WebApi - CI/CD工作流程:
.github/workflows