Token导航 LogoToken导航TokenDH.com
Guidance For Deploying MCP Servers On Aws logo
运维云端stdio官方级别未说明来源级核验

Guidance For Deploying MCP Servers On Aws

MCP Server

该指南详细介绍了如何在AWS上部署支持OAuth 2.0认证的Model Context Protocol服务器,实现安全远程访问和标准兼容的认证流程。

工具数

0

提示词数

0

GitHub Stars

150

资源数

0
TypeScript协议实现云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

aws-solutions-library-samples

提供方

aws-solutions-library-samples

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install uv

详细介绍

在AWS上部署模型上下文协议服务器的指南

目录

  1. 概述

- 成本

  1. 先决条件

- 操作系统

  1. 部署步骤
  2. 部署验证
  3. 运行指南
  4. 后续步骤
  5. 清理
  6. 常见问题解答、已知问题、其他注意事项和限制
  7. 修订
  8. 通知

概述

本指南演示了如何使用Amazon Cognito在AWS上部署具有安全身份验证的模型上下文协议(MCP)服务器,实现 2025-06-18 MCP规范 使用OAuth 2.0受保护资源元数据(RFC9728)。它使您能够托管可以远程访问的MCP服务器,同时通过符合标准的OAuth 2.0身份验证流程维护安全性。

该解决方案解决了几个关键挑战:

  • 在AWS基础架构上安全托管MCP服务器
  • 使用OAuth 2.0受保护资源元数据进行符合标准的身份验证(RFC9728)
  • 通过安全的StreamableHTTP传输远程访问MCP服务器
  • 用于并发客户端支持的无状态服务器架构
  • 使用AWS CDK进行可扩展和可维护的部署

建筑

Architecture Diagram

该架构实现了:

  1. CloudFront分布 通过WAF保护实现全球内容交付
  2. 应用程序负载平衡器 用于流量分配和SSL终止
  3. ECS Fargate和Lambda 适用于容器化和无服务器MCP服务器
  4. AWS Cognito OAuth 2.0授权服务器功能
  5. OAuth 2.0受保护的资源元数据 符合标准的身份验证端点
  6. 流式HTTP传输 无状态请求处理
  7. 四栈CDK部署:VPC、安全、CloudFront WAF和MCP服务器堆栈

成本

您负责运行本指南时使用的AWS服务的费用。截至2025年8月,在美国东部(北弗吉尼亚州)地区使用默认设置运行本指南的成本约为每月194.18美元,用于处理中等流量水平。

我们建议创建一个 预算 通过 AWS成本资源管理器 以帮助管理成本。价格可能会发生变化。有关完整详细信息,请参阅本指南中使用的每项AWS服务的定价网页。

预估成本表

下表提供了在美国东部(北弗吉尼亚州)地区部署本指南一个月的默认参数的成本明细示例。

AWS服务尺寸成本\[美元\]
VPC(NAT网关)1个NAT网关×730小时+100 GB数据处理37.35美元
弹性负载平衡中等流量的应用程序负载平衡器16.83美元
亚马逊干邑10500 MAU(50000免费等级以内)0.00美元
CloudFront2 TB数据传输+1500万个请求87.96美元
WAF2个Web ACL(云前端和区域)10.00美元
云服务器(Fargate)1个vCPU,2GB内存×730小时36.04美元
秘密管理器Cognito凭据的1个秘密0.40美元
Lambda自定义资源(最低使用量)0.20美元
总计194.18美元/月

先决条件

操作系统

这些部署说明经过优化,可用于 亚马逊Linux 2 AMI在另一个操作系统中部署可能需要额外的步骤。

所需工具

  1. AWS-CLI 已安装并配置
  2. v14或更高版本
  3. AWS CDK 安装:
   npm install -g aws-cdk

AWS CDK引导

如果您是第一次使用AWS CDK,请引导您的帐户:

cdk bootstrap

部署步骤

  1. 克隆存储库:
   git clone 
   cd guidance-for-deploying-model-context-protocol-servers-on-aws
   cd source/cdk/ecs-and-lambda
  1. 安装依赖项:
   npm install
  1. 登录公共ECR:
   aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
  1. 部署堆栈:

无域配置:

   cdk deploy --all

或者使用域配置(单区域-us-east-1):

   cdk deploy --all --context cdnCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context albCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context customDomain=mcp-server.example.com

或者使用多区域证书配置:

   cdk deploy --all --context cdnCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context albCertificateArn=arn:aws:acm:eu-west-1:123456789012:certificate/def456 --context customDomain=mcp-server.example.com

或者仅使用CloudFront HTTPS(ALB保持HTTP):

   cdk deploy --all --context cdnCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context customDomain=mcp-server.example.com
  1. 更新MCP服务器:

无域配置:

   cdk deploy MCP-Server

或者使用域配置:

   cdk deploy MCP-Server --context cdnCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context albCertificateArn=arn:aws:acm:us-east-1:123456789012:certificate/abc123 --context customDomain=mcp-server.example.com

部署验证

  1. 验证CloudFormation堆栈状态:

- 打开AWS CloudFormation控制台 - 检查所有堆栈是否显示“创建完成”

  1. 验证Cognito设置:

- 打开亚马逊Cognito控制台 - 验证用户池创建 - 确认应用客户端配置

  1. 验证基础设施:

- CloudFront分发已“部署” - 应用程序负载平衡器处于“活动”状态 - ECS服务正在运行

运行指南

Cognito用户测试(仅限开发)

仅适用于开发和测试环境,您可以使用AWS CLI快速创建和管理用户:

# Create test user
aws cognito-idp admin-create-user --user-pool-id YOUR_USER_POOL_ID --username test@example.com

# Set permanent password (bypass temporary)
aws cognito-idp admin-set-user-password --user-pool-id YOUR_USER_POOL_ID --username test@example.com --password "TestPass123!" --permanent

使用示例Python MCP客户端进行测试

该部署包括一个示例Python MCP客户端,该客户端演示了与部署的服务器进行OAuth 2.0保护资源身份验证。此客户端使用StreamableHTTP传输实现了2025-06-18 MCP规范。

注: 此客户端是 简单的身份验证客户端示例 来自官方MCP Python SDK。

为什么要使用Python客户端?

附带的Python客户端(source/sample-clients/simple-auth-client-python/)演示:

  • OAuth 2.0受保护的资源元数据 (RFC9728)身份验证流程
  • 流式HTTP传输 沟通
  • 交互式CLI界面 用于测试MCP工具
  • 符合标准的实施 2025-06-18 MCP规范
重要提示: 此实现确实 不支持动态客户端注册(DCR)客户端凭据必须在AWS Cognito中预先配置,并通过环境变量提供。

使用Python客户端

  1. 导航到客户端目录:
   cd source/sample-clients/simple-auth-client-python
  1. 使用uv安装依赖项:
   pip install uv
   uv sync --reinstall
  1. 设置环境变量:
   export MCP_SERVER_URL="https:///weather-nodejs/mcp"
   export OAUTH_CLIENT_ID=""
   export OAUTH_CLIENT_SECRET=""
  1. 运行客户端:
   uv run python -m mcp_simple_auth_client.main
  1. 测试可用端点:

- ECS远程服务器: https:///weather-nodejs/mcp - Lambda服务器: https:///weather-nodejs-lambda/mcp

客户端将自动处理OAuth流,打开浏览器进行身份验证,并提供交互式CLI来测试MCP工具。

后续步骤

  1. 实施额外的MCP服务器:

- 向ECS添加新的服务器容器 - 为新服务器配置OAuth流 - 更新新端点的客户端配置

  1. 优化成本:

- 监控使用模式 - 考虑为稳定的工作负载预留容量 - 实施缓存策略

  1. 增强安全性:

- 在Cognito中启用MFA - 实施其他WAF规则 - 设置监控和警报

清理

  1. 删除已部署的资源:
   cdk destroy --all
  1. 手动清理步骤:

- 清空所有已创建的S3存储桶 - 删除Cognito用户池(如果不需要) - 删除CloudWatch日志组 - 删除secrets Manager中创建的所有机密

常见问题解答、已知问题、其他注意事项和限制

已知问题

  1. 在某些情况下,令牌刷新可能需要重新验证
  2. CloudFront缓存失效可能需要5分钟
  3. Fargate集装箱的初始冷启动延迟

其他注意事项

  • 符合OAuth 2.0标准:实现RFC9728受保护资源元数据规范
  • 无状态架构:每个请求都会为并发客户端支持创建新的服务器实例
  • 创建公共端点 用于OAuth保护资源元数据发现
  • CloudFront分布 部署可能需要15-20分钟
  • 四栈部署:VPC、安全、CloudFront WAF和MCP服务器堆栈

有关详细信息,请参阅这些附加文档文件:

局限性

  1. 无动态客户端注册(DCR):客户端凭据必须在AWS Cognito中预先配置
  2. 区域可用性 取决于AWS Cognito支持
  3. 多地区证书要求:

- CloudFront证书(cdnCertificateArn)必须在美国东部-1 - ALB证书(albCertificateArn)必须位于部署区域内 - 两个证书必须覆盖相同的自定义域

  1. 仅限CloudFront WAF:AWS WAF是为CloudFront分发配置的,而不是直接为ALB配置的
  2. 仅支持流式HTTP传输:此实现中不支持SSE传输(已弃用)
  3. 一些MCP客户端 可能不支持远程连接或OAuth流

如有任何反馈、问题或建议,请使用此仓库下的问题选项卡。

修订

\[2.0.0\] - 2025-08-25

  • 突破性变化:迁移到2025-06-18 MCP规范
  • 实现OAuth 2.0受保护的资源元数据(RFC9728)
  • 将SSE传输替换为StreamableHTTP传输
  • 添加无状态服务器架构以支持并发客户端
  • 删除动态客户端注册(DCR)-客户端必须预先配置
  • 重组项目以 source/cdk/ecs-and-lambda/ 为了更好的组织
  • 使用交互式CLI添加示例Python MCP客户端
  • 实施四栈CDK部署(VPC、安全、CloudFront WAF、MCP服务器)
  • 添加基于Lambda的MCP服务器部署选项
  • 删除DynamoDB令牌存储-现在使用无状态身份验证

\[1.0.0\] - 2025-05-06

  • 初始版本
  • 基本OAuth流实现
  • 支持天气样本服务器

通知

客户有责任对本指南中的信息进行独立评估。本指南:(a)仅供参考,(b)代表AWS当前的产品和做法,如有更改,恕不另行通知,(c)不构成AWS及其附属公司、供应商或许可方的任何承诺或保证。AWS产品或服务“按原样”提供,不附带任何明示或暗示的保证、陈述或条件。AWS对其客户的责任和义务由AWS协议控制,本指南不是AWS与其客户之间任何协议的一部分,也不修改任何协议。

目录标签

目录标签

TypeScript协议实现云端部署AWS部署本地部署OAuth认证服务器架构云安全

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP