模型上下文协议测试服务器

一个在AWS上展示模型上下文协议(MCP)服务器和客户端实现、测试与部署的参考实现。

  • by AlBa231
  • HCL
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 AlBa231/test-mcp-server

使用说明

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 10 SDK已安装
  • 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 安装

部署步骤

  1. 编辑 ./infra/terraform.tfvars 并设置 app_name, aws_region 以及您的GitHub仓库值。
  2. 运行辅助脚本:
./deploy.cmd

脚本的作用:

  • 确保AWS CLI登录
  • 为Terraform状态创建S3存储桶
  • 初始化并应用Terraform以创建:
    • Docker镜像的ECR存储库
    • ECS集群和服务定义
    • IAM角色和政策
    • 应用程序负载平衡器(ALB)
    • CloudFront分布
    • 产生 infra/ci/task-definition.json 由GitHub Actions用于ECS部署

通过GitHub Actions自动部署

  1. 添加生成的 infra/ci/task-definition.json 到存储库(运行后 ./deploy.cmd).
  2. 提交并推动以触发工作流 .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