MCP跨账户管道
使用模型上下文协议(MCP)服务器的端到端AWS基础设施分析管道,具有跨帐户支持、Nova Pro AI集成、增强的Strands实施和全面的AWS SigV4身份验证。
🎥 快速演示

演示亮点:
- 🚀 使用单个命令部署到开发环境
- 📊 实时部署状态跟踪
- 🔄 自动状态更新和运行详细信息
- ⚡ 在2分钟内完成工作流程
📚 完整实施指南
构建安全的AI驱动的AWS基础架构助手 -5部分系列:
| 部分 | 主题 | 链接 |
|---|---|---|
| 第1部分 | 企业人工智能采用挑战 | 在LinkedIn上阅读 |
| 第2部分 | 利用Strands和MCP实现分层访问控制 | 在LinkedIn上阅读 |
| 第3部分 | 从GitHub评论到生产:部署编排 | 在LinkedIn上阅读 |
| 第4部分 | 使用Kiro CLI集成进行本地开发 | 在LinkedIn上阅读 |
| 第5部分 | 经验教训:扩展人工智能基础设施工具 | 在LinkedIn上阅读 |
你将学到什么:
- 🔒 AI代理的企业级安全模式
- 🏗️ AWS Strands框架具有增强的可观察性
- 🔄 GitHub Actions+AI代理集成
- 🖥️ 使用Kiro CLI和MCP进行本地开发
- 📊 现实世界的绩效见解和经验教训
⚡ 快速开始
选项1:Kiro CLI集成(推荐)
# 1. Clone the repository
git clone https://github.com/your-org/mcp-cross-account-pipeline.git
cd mcp-cross-account-pipeline
# 2. Set up Kiro CLI integration
./scripts/setup-kiro-mcp.sh
# 3. Start using AI-powered infrastructure tools
kiro-cli chat
> deploy to dev
> deploy_status Demo-MCP/mcp-cross-account-pipeline
> deploy_get_run 选项2:GitHub操作集成
# 1. Comment on any PR:
/deploy to staging
# 2. Check deployment status:
/ask What's the status of my deployment?
# 3. Analyze PR changes (admin only):
/analyze can you summarize pr for me选项3:API直接集成
# Test the API directly
curl -X POST "https://your-api-gateway.amazonaws.com/prod/ask" \
-H "Authorization: AWS4-HMAC-SHA256 ..." \
-d '{"query": "List ECS clusters", "metadata": {"account_id": "123456789012"}}'🚀 主要特点
🔒 企业安全
- AWS SigV4身份验证:加密请求签名
- 分层访问控制:用户(
/ask)vs管理员(/admin)端点 - 跨账户支持:安全STS角色假设
- GitHub Runner隔离:基于角色的工作流隔离
🤖 人工智能驱动的操作
- AWS Strands集成:企业级AI代理框架
- 编排工具模式:在没有LLM超时的情况下处理大型CloudFormation模板
- 智能参数解析:上下文感知命令解释
- 实时状态更新:自动部署监控
🔄 多平台集成
- GitHub操作:PR评论触发工作流
- Kiro命令行界面:使用MCP协议进行本地开发
- IDE兼容:适用于VS Code、Cursor和任何启用MCP的编辑器
- API网关:通过身份验证直接访问REST API
📊 生产就绪
- 开放遥测可观测性:完整的请求跟踪和指标
- 容器编排:具有自动缩放功能的ECS Fargate
- 部署指标:实时GitHub操作跟踪
- 成本分析:AWS定价计算器集成
🏗️ 建筑
graph LR
subgraph DevAccount [Developer Laptop]
Client[AWS Kiro / IDE]
Role[Developer IAM role]
end
subgraph GitHubActions [GitHub Actions Workflow]
PullRequestComments
Analyze[Admin Tools /Analyze]
Ask[User Tools /Ask]
end
subgraph OpsAccount [Ops Account - Public]
NLB[Api Gateway
Port 443]
Fargate[VPC Link
IAM Auth]
end
subgraph OpsAccountPrivate [Ops Account - Private VPC]
BrokerALB[Internal Broker ALB]
BrokerSvc[Broker Container
FastAPI + Strands Agent + Otel + Ground Truth + Sigv4]
MCPALB[Internal MCP ALB]
subgraph MCPServices [MCP Service Containers]
Pricing[Pricing Calc MCP]
PR[PR Context MCP]
Metrics[Deployment Metrics MCP]
ECS[ECS Read Only MCP]
IAC[IAC Read Only MCP]
end
end
Client -- HTTPS/SigV4 --> NLB
GitHubActions -- Workflow Metadata --> NLB
NLB --> Fargate
Fargate -- Verified IAM Identity --> BrokerALB
BrokerALB -- /ask ( User Tools )--> BrokerSvc
BrokerALB -- /admin ( Admin Tools )--> BrokerSvc
BrokerSvc -- Orchestrated Tool Call --> MCPALB
MCPALB --> Pricing
MCPALB --> PR
MCPALB --> Metrics
MCPALB --> ECS
MCPALB --> IAC集成路径:
- GitHub操作:PR评论触发经过身份验证的工作流
- Kiro命令行界面:本地开发,可直接访问MCP服务器
- API网关:集中身份验证和路由
- MCP协议:跨所有路径的标准化工具集成
🔒 身份验证和安全
AWS SigV4身份验证
- API网关集成:所有请求都必须通过经过身份验证的API网关终结点
- 基于角色的访问控制:具有不同权限的开发人员和管理员角色
- 会话令牌验证:验证假定角色的AWS会话令牌
- 纵深防御:API网关IAM验证和中间层验证
访问控制矩阵
| 角色 | /ask 端点 | /admin 端点 | 可用工具 |
|---|---|---|---|
| DevMcpInvokeRole | ✅ 允许 | ❌ 拒绝 | 仅限用户工具(7个工具) |
| AdminMcpInvokeRole | ✅ 允许 | ✅ 允许 | 所有工具(11个工具) |
| 未认证 | ❌ 拒绝 | ❌ 拒绝 | 无 |
安全特性
- 直接ALB访问被阻止:GitHub工作流无法绕过身份验证
- 会话令牌验证:验证令牌是否来自授权角色
- API网关标头:验证通过正确的API网关发出的请求
- 关闭安全失败:默认情况下,所有端点都需要身份验证
✨ 增强型Strands实施
🧠 高级快速工程
- 上下文感知提示:基于工具上下文和用户意图的动态提示生成
- 多回合对话:跨工具调用保持对话状态
- 工具特定说明:针对不同工具类别(ECS、IAC、PR分析)定制提示
- 错误恢复提示:具有上下文重试策略的智能错误处理
🛡️ 智能防护系统
- 执行前验证:执行前验证工具参数
- 保安:防止未经授权访问敏感操作
- 速率限制:防止过多的API调用
- 输入消毒:验证和净化所有用户输入
- 工具兼容性检查:确保工具组合有效
🎯 模型最小架构
- 有效使用令牌:优化提示以最大限度地减少令牌消耗
- 选择性语境:仅包括每个工具调用的相关上下文
- 响应压缩:在保留关键信息的同时压缩详细的API响应
- 智能缓存:缓存常用数据以减少模型调用
- 流媒体优化:处理大型响应而不会出现令牌溢出
🔄 状态数据切换
- 内部工具编排:工具可以在内部调用其他工具,而不会将复杂性暴露给Nova
- 数据管道:pr_get_diff之间的无缝数据流→ pr分析→ pr_总结
- 上下文保护:在多步骤操作中保持状态
- 错误隔离:一步的失败不会蔓延到其他步骤
- 响应聚合:将多个工具输出组合成连贯的响应
🚫 幻觉预防
- 基于事实的回应:基于实际API数据的所有响应
- 消息来源:明确信息来源的归属
- 验证层:多个验证步骤可防止错误信息
- 结构化输出:强制JSON模式以获得一致、准确的响应
- 实时验证:将响应与实时AWS数据进行交叉引用
✨ 核心功能
- 🔄 基于层级的经纪人:通过以下方式实现安全的多层访问控制
/ask(用户)和/admin(特权)端点 - 🔒 安全第一设计:使用AWS SigV4身份验证和基于角色的访问控制进行故障关闭安全
- 📊 部署指标集成:实时GitHub Actions部署跟踪和分析
- 🔍 公关分析工具:具有安全扫描功能的全面拉取请求分析(仅限管理员)
- 🤖 Nova Pro集成:具有代理循环和流超时解决方案的高级AI工具调用
- 🔀 跨账户支持:每个API调用的动态角色假设
- 🌐 MCP协议:标准化的AI工具与网关路由集成
- ☁️ ECS Fargate:无服务器容器执行,容器稳定性得到改善
- 🔗 GitHub集成:PR评论触发和响应,具有增强的工作流程输出
- 🏗️ 多业务:ECS、基础设施即代码、部署分析和定价
🆕 增强:流超时解决方案
问题已解决大型CloudFormation模板(169+行)导致“响应过早结束”错误和容器崩溃。
解决方案已实施:
- 工具编排:创建了内部处理大型差异数据的pr_analyze编排器工具
- 有状态的交接模式:pr_analyze在内部处理较大的差异,并向Nova返回轻量级摘要
- 参数分辨率:修复了缺少correlation_id和pr_get_diff参数的问题
- 集装箱稳定性:在PR分析期间消除了504个网关超时和容器崩溃
- 保留Checkov集成:通过内部工具调用维护完整的安全扫描功能
结果:
- ✅ 不再出现流媒体故障:处理的大型模板没有“响应提前结束”错误
- ✅ 集装箱稳定性:分析期间不再发生代理容器崩溃
- ✅ 全面安全扫描:通过综合分析输出保持Checkov集成
- ✅ 演出:复杂CloudFormation模板的2分钟以下分析
🆕 增强:工具选择和编排
智能工具策略管理:
- 工具说明:更新以指导Nova进行最佳刀具选择
- 编排模式:pr_analyze在内部同时调用pr_get_diff和pr_summarize
- 基于策略的选择:如果策略中有其他工具,工具可以在内部调用它们
- 重复功能清理:删除了冲突的工具定义
按层级划分的工具可用性:
按层级划分的工具可用性:
👤 用户层(/ask 端点):
- 9种可用工具:基本基础设施和部署工具
- 安全操作:对ECS、CloudFormation、部署的只读访问
- 定价分析:核定资源的费用估计数
- 无敏感访问:无法访问PR分析或堆栈定价
🔐 管理层(/admin 端点):
- 12种可用工具:所有用户工具+敏感操作
- 公关分析:使用pr_analyze编排器进行完整的拉取请求差异分析和安全扫描
- 堆栈定价:任何CloudFormation堆栈的成本估算
- 完全访问:所有基础设施分析功能
安全特性:
- 失败关闭设计:未明确允许的工具被阻止
- 工具执行门控:广告和执行时的双重验证
- 元数据驱动:使用GitHub Actions上下文进行安全参数映射
- 审计日志:跟踪所有工具调用和被拒绝的尝试
- 关联ID跟踪:用于调试和安全的完整请求跟踪
🆕 新增:AWS定价计算器集成
该系统现在包括全面的AWS成本估算功能:
- 实时定价:使用AWS定价API进行准确、最新的成本计算
- CloudFormation支持:根据CloudFormation模板(YAML/JSON)估算成本
- 跨账户定价:部署在不同AWS帐户中的价格堆栈
- 47 AWS服务:支持EC2、RDS、Lambda、S3、ECS、ALB等40多种服务
- 免费等级处理:自动应用AWS免费等级津贴
- 月度估算:提供详细的月度成本明细
- 模板解析:处理CloudFormation内部函数和引用
🆕 新增:统一MCP代理集成
代理服务现在为所有部署工具提供了一个单一的智能入口点:
- 动态工具发现:从PR上下文、部署指标和定价MCP服务器中自动发现工具
- 智能路由:路线
pr_*PR上下文工具,deploy_*工具到度量,pricingcalc_*定价工具 - 工具缓存:启动时缓存12个工具,以获得一致的亚秒级响应时间
- 元数据集成:使用GitHub Actions元数据作为存储库和run_id(如果可用)
- 参数映射:自动将基岩参数映射到MCP服务要求
- 自动运行选择:当没有提供run_id时,自动选择RUNNING部署
- 文本响应处理:为基岩兼容性正确设置文本响应格式
- 存储库验证:验证存储库格式,更喜欢元数据而不是人工智能猜测
🆕 增强:公关分析和安全扫描
综合分析管道:
- 差异分析:使用大模板支持完成PR差异检索和解析
- 安全扫描:Checkov集成用于基础设施安全分析
- 编排好的工作流:pr_分析→ pr_get_diff→ pr_总结内部切换
- IAC资源检测:识别云层形成、地形和其他IAC变化
- 成本影响分析:估计基础设施变化对定价的影响
- 仅管理员访问:敏感代码分析仅限于特权用户
- GitHub集成:与GitHub Actions工作流无缝集成
增强的安全功能:
- 中/高/关键问题检测:综合安全发现分类
- 特定资源调查结果:确定有问题的确切资源和行号
- 补救指南:提供可操作的步骤来解决安全问题
- 合规性扫描:检查AWS安全最佳实践
- 大模板支持:处理169+行CloudFormation模板,无超时
工作流集成:
- 清洁输出:已删除
.answer更清晰的GitHub工作流结果的回退 - 结构化响应:一致的JSON响应格式
- 错误处理:优雅地处理分析失败,并显示详细的错误消息
🖥️ Kiro CLI集成
MCP的地方发展
该管道现在包括 Kiro CLI集成 用于本地开发和测试,通过本地MCP服务器提供对部署编排工具的直接访问。
🔧 主要特点:
- 本地MCP服务器:在没有GitHub操作的情况下在本地运行部署工具
- 自动状态更新:
deploy_local自动呼叫deploy_status发布公关评论后 - 跨帐户身份验证:使用AWS角色假设进行安全的API访问
- 实时部署跟踪:直接从终端监控部署进度
- 后备保护:如果自动状态调用失败,则性能会下降
🛠️ 可用工具:
- `deploy_local
` -部署后评论并获取状态
deploy_status-检查当前部署状态deploy_get_run-获取详细的跑步信息deploy_list_runs-列出最近的部署运行
⚡ 快速设置:
# 1. Run setup script
./scripts/setup-kiro-mcp.sh
# 2. Start Kiro CLI
kiro-cli chat
# 3. Deploy and monitor
deploy_local Demo-MCP/mcp-cross-account-pipeline feature-branch dev📺 终端会话示例
$ kiro-cli chat
✓ aws-mcp-broker loaded in 2.73 s
> cd /Users/local_user/Downloads/mcp-cross-account-pipeline
/Users/local_user/Downloads/mcp-cross-account-pipeline
> deploy to dev
Deployment to dev environment has been initiated!
The deployment is running in the background for:
- Repository: Demo-MCP/mcp-cross-account-pipeline
- Branch: dev
- PR: #15
You can track progress using:
- deploy_status Demo-MCP/mcp-cross-account-pipeline for latest status
- Check PR #15 for the run_id when it appears in GitHub Actions comments
> deploy_status Demo-MCP/mcp-cross-account-pipeline
Current deployment status for Demo-MCP/mcp-cross-account-pipeline:
Latest Deployments:
⏳ Run 20641130601 - RUNNING
- Branch: main
- Started: 2026-01-01 15:32:42+00:00
✅ Run 20639402793 - SUCCEEDED
- Branch: main
- Started: 2026-01-01 13:31:30+00:00
The most recent deployment (Run 20641130601) is currently running.
Use deploy_get_run 20641130601 for more details.
> deploy_get_run 20641130601
Deployment Run 20641130601 Details:
✅ Status: SUCCEEDED
- Repository: Demo-MCP/mcp-cross-account-pipeline
- Branch: main
- Workflow: Deploy Infrastructure
- Duration: 46 seconds
- Started: 2026-01-01 15:32:42+00:00
- Ended: 2026-01-01 15:33:28+00:00
- Runner: ecs-runner-ip-172-31-19-50.ec2.internal
The deployment completed successfully with no errors!🔄 工作流程增强:
- 之前:手动PR评论→ 手动状态检查→ 手动运行详细信息
- 之后:单一命令→ 自动状态→ 综合监测
📁 集成文件:
scripts/aws-mcp-broker/-完成MCP服务器的实施scripts/setup-kiro-mcp.sh-自动设置脚本scripts/kiro-mcp-config.json-配置模板KIRO_INTEGRATION.md-详细的集成文档
🔒 安全:
- 使用与GitHub Actions相同的AWS角色假设
- 验证存储库访问权限
- 通过AWS配置文件进行安全的凭证处理
- 没有硬编码的秘密或令牌
🚀 从零开始快速部署
先决条件
- 配置了管理员权限的AWS CLI
- Docker已安装并登录ECR
- 启用了Actions的GitHub存储库
1.配置基础结构参数
使用您的AWS帐户详细信息更新以下文件:
scripts/mcp-gateway-task.json
{
"family": "mcp-gateway",
"taskRoleArn": "arn:aws:iam::YOUR-ACCOUNT-ID:role/McpServerTaskRole",
"executionRoleArn": "arn:aws:iam::YOUR-ACCOUNT-ID:role/ecsTaskExecutionRole"
}🔐 身份验证设置
1.部署身份验证基础架构
使用AWS SigV4身份验证部署API网关:
cd infrastructure
./deploy-auth.sh这将创建:
- API网关HTTP API 具有AWS_IAM授权
- DevMcpInvokeRole -仅限于
/ask端点(用户工具) - AdminMcpInvokeRole -访问两者
/ask和/admin端点 - VPC链接 用于安全的ALB集成
2.测试认证
测试身份验证系统:
cd scripts
./test-auth.sh预期成果:
- ✅ 开发人员角色可以调用
/ask(HTTP 200) - ✅ 开发人员角色被拒绝
/admin访问(HTTP 403) - ✅ 管理员角色可以调用
/admin(HTTP 200) - ✅ 未签名的请求被拒绝(HTTP 403)
3.API终点
经过身份验证的API网关URL:
- 询问端点:
https://YOUR-API-ID.execute-api.us-east-1.amazonaws.com/prod/ask - 管理员端点:
https://YOUR-API-ID.execute-api.us-east-1.amazonaws.com/prod/admin - 工具端点:
https://YOUR-API-ID.execute-api.us-east-1.amazonaws.com/prod/tools(无身份验证)
直接访问ALB: ❌ 已屏蔽 -所有请求必须通过API网关
🔐 安全和访问控制
身份验证流程
GitHub Actions → Assume Role → SigV4 Sign → API Gateway → Broker → MCP Servers基于层的访问
系统实现了两个访问层以确保安全:
👤 用户层(/ask 端点):
# Safe for general use - 9 tools available
curl -X POST http://your-broker-url/ask \
-H "Content-Type: application/json" \
-d '{"ask_text": "List ECS clusters"}'🔐 管理层(/admin 端点):
# Privileged access - 12 tools available (includes PR analysis)
curl -X POST http://your-broker-url/admin \
-H "Content-Type: application/json" \
-d '{
"ask_text": "Analyze pull request #9 for security issues",
"metadata": {
"repository": "org/repo",
"pr_number": 9,
"actor": "username",
"run_id": "12345"
}
}'工具类别
| 类别 | 用户层 | 管理层 | 描述 |
|---|---|---|---|
| ECS工具 | ✅ | ✅ | 列出集群,描述服务 |
| IAC工具 | ✅ | ✅ | 云组叠加分析 |
| 部署工具 | ✅ | ✅ | GitHub Actions部署指标 |
| 基本价格 | ✅ | ✅ | 基于模板的成本估算 |
| 公关分析 | ❌ | ✅ | 拉取请求差异和安全扫描 |
| 堆栈定价 | ❌ | ✅ | 任何CloudFormation堆栈的成本估算 |
GitHub操作集成
使用 /analyze PR注释中的命令用于管理员级别分析:
/analyze Get security analysis and cost impact for this PR这会触发具有适当元数据上下文的管理工作流。
scripts/broker-task.json
{
"family": "broker-service",
"taskRoleArn": "arn:aws:iam::YOUR-ACCOUNT-ID:role/McpServerTaskRole",
"executionRoleArn": "arn:aws:iam::YOUR-ACCOUNT-ID:role/ecsTaskExecutionRole"
}更新部署脚本中的子网和安全组:
- 子网:
subnet-0d1a30fbc37023fea,subnet-0b296ab71b4c7e39d - 安全组:
sg-0190ab5630f4e7309
2.构建和推送图像
# Login to ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com
# Build and push broker service
cd broker-service
docker build -t YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/broker-service:latest .
docker push YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/broker-service:latest
# Build and push pricing calculator
cd ../pricingcalc-mcp
docker build -t YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/pricingcalc-mcp:latest .
docker push YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/pricingcalc-mcp:latest
# Build and push MCP gateway
cd ../mcp-gateway
docker build -f Dockerfile -t YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/mcp-gateway:latest .
docker push YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/mcp-gateway:latest
# Build and push GitHub runner (for testing)
cd ../github-runner
docker build -t YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/github-runner:latest .
docker push YOUR-ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/github-runner:latest3.部署基础设施
# Create ECS cluster
aws ecs create-cluster --cluster-name mcp-cluster
# Register task definitions
aws ecs register-task-definition --cli-input-json file://scripts/broker-task.json
aws ecs register-task-definition --cli-input-json file://scripts/mcp-gateway-task.json
# Create ALB and target groups (update with your VPC/subnet IDs)
aws elbv2 create-load-balancer --name broker-internal-alb --subnets subnet-YOUR-ID subnet-YOUR-ID --security-groups sg-YOUR-ID --scheme internal
aws elbv2 create-load-balancer --name mcp-internal-alb --subnets subnet-YOUR-ID subnet-YOUR-ID --security-groups sg-YOUR-ID --scheme internal
# Create ECS services
aws ecs create-service --cluster mcp-cluster --service-name broker-service --task-definition broker-service:1 --desired-count 1 --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[subnet-YOUR-ID,subnet-YOUR-ID],securityGroups=[sg-YOUR-ID],assignPublicIp=ENABLED}" --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:YOUR-ACCOUNT-ID:targetgroup/broker-targets/YOUR-ID,containerName=broker-service,containerPort=8080
aws ecs create-service --cluster mcp-cluster --service-name mcp-gateway --task-definition mcp-gateway:1 --desired-count 1 --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[subnet-YOUR-ID,subnet-YOUR-ID],securityGroups=[sg-YOUR-ID],assignPublicIp=ENABLED}" --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:YOUR-ACCOUNT-ID:targetgroup/mcp-gateway-targets/YOUR-ID,containerName=mcp-gateway,containerPort=80804.配置GitHub操作
设置存储库机密:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION(美国东部-1)GITHUB_TOKEN
更新 .github/workflows/ask.yml 使用您的ALB URL:
env:
BROKER_URL: "http://internal-broker-internal-alb-YOUR-ID.us-east-1.elb.amazonaws.com"5.端到端测试
# Test ECS MCP server
curl -X POST http://YOUR-GATEWAY-ALB-URL/call-tool \
-H "Content-Type: application/json" \
-d '{"server": "ecs", "tool": "ecs_call_tool", "params": {"tool": "ecs_resource_management", "params": {"api_operation": "ListClusters", "api_params": {}, "account_id": "YOUR-ACCOUNT-ID", "region": "us-east-1"}}}'
# Test IAC MCP server
curl -X POST http://YOUR-GATEWAY-ALB-URL/call-tool \
-H "Content-Type: application/json" \
-d '{"server": "iac", "tool": "iac_call_tool", "params": {"tool": "troubleshoot_cloudformation_deployment", "params": {"account_id": "YOUR-ACCOUNT-ID", "region": "us-east-1", "stack_name": "sample-demo"}}}'
# Test unified broker with pricing calculator
curl -X POST http://YOUR-BROKER-ALB-URL/ask \
-H "Content-Type: application/json" \
-d '{"ask_text": "How much does my sample-demo stack cost per month?", "account_id": "YOUR-ACCOUNT-ID", "region": "us-east-1"}'
# Test unified broker with deployment metrics
curl -X POST http://YOUR-BROKER-ALB-URL/ask \
-H "Content-Type: application/json" \
-d '{"ask_text": "Get deployment summary for the latest run", "account_id": "YOUR-ACCOUNT-ID", "region": "us-east-1", "metadata": {"repository": "Demo-MCP/mcp-cross-account-pipeline", "run_id": "20490462868"}}'
# Test broker service with ECS tools
curl -X POST http://YOUR-BROKER-ALB-URL/ask \
-H "Content-Type: application/json" \
-d '{"ask_text": "List all ECS clusters in my account", "shim_url": "http://YOUR-GATEWAY-ALB-URL", "account_id": "YOUR-ACCOUNT-ID", "region": "us-east-1", "metadata": {"source": "test"}}'📁 存储库结构
├── broker-service/ # Unified Nova Pro broker service
│ ├── broker.py # FastAPI broker with unified MCP integration
│ ├── Dockerfile # Container configuration
│ └── requirements.txt # Python dependencies
├── pricingcalc-mcp/ # AWS Pricing Calculator MCP server
│ ├── app.py # MCP server with 47 AWS services pricing
│ ├── estimator.py # CloudFormation template cost estimation
│ ├── aws_resources/ # Individual service pricing implementations
│ └── Dockerfile # Container configuration
├── mcp-gateway/ # MCP protocol gateway
│ ├── gateway.py # FastAPI gateway routing MCP servers
│ └── Dockerfile # Container configuration
├── ecs-mcp-server/ # ECS MCP server (embedded)
├── aws-iac-mcp-server/ # Infrastructure MCP server (embedded)
├── deployment-metrics-mcp-server/ # GitHub Actions deployment tracking (external)
├── platform_aws_context/ # AWS context utilities
├── scripts/ # Deployment task definitions
├── .github/workflows/ # GitHub Actions
└── sample-stack.yaml # Demo CloudFormation template🔧 关键组件
代理服务(增强型Strands实现)
- 🔄 统一MCP集成:单个入口点路由到多个MCP服务器
- 💰 AWS定价集成:使用AWS定价API进行实时成本估算
- 📊 部署指标:实时GitHub Actions部署跟踪
- 🤖 增强的Nova Pro集成:用途
bedrock.converse()具有流超时解决方案的API - 🧠 智能刀具路径:路线
pricingcalc_*到定价服务器,deploy_*到度量服务器,pr_*公关分析 - ⚡ 工具缓存:启动时缓存工具,响应时间不到秒
- 📝 元数据处理:从GitHub Actions上下文中提取存储库和run_id
- 🎯 自动运行选择:优先考虑RUNNING部署以进行实时跟踪
- 🔄 状态数据切换:复杂操作的内部工具编排(pr_analyze→ pr_get_diff→ pr_总结)
- 🛡️ 高级警卫:执行前验证和安全控制
- 🚫 幻觉预防:基于事实的答复,注明来源
- 📋 关联ID跟踪:用于调试和安全的完整请求跟踪
- 演出:缓存优化后,响应时间约为1-2s,处理大型CloudFormation模板时不会超时
AWS定价计算器
- 💲 实时定价:使用AWS定价API进行准确的成本计算
- 📋 47 AWS服务:EC2、RDS、Lambda、S3、ECS、ALB、CloudWatch等
- 🆓 免费层支持:自动应用AWS免费等级津贴
- 📊 CloudFormation集成:根据YAML/JSON模板估算成本
- 🔄 跨账户支持:不同AWS帐户中的价格堆栈
- 📈 月度估算:每项服务的详细成本明细
MCP网关
- 服务器路由:将请求路由到适当的MCP服务器(ECS/IAC)
- 进程管理:管理MCP服务器进程和通信
- 协议转换:将HTTP请求转换为MCP协议
MCP服务器(嵌入式)
- ECS服务器:列出集群、服务、任务,对部署进行故障排除
- IAC服务器:分析CloudFormation堆栈,排除部署故障
- 模组分辨率:修复了PYTHONPATH正确进口的问题
基础设施
- ECS Fargate:无服务器容器执行
- 应用程序负载平衡器:健康检查和路由(2个ALB:代理+网关)
- ECR:容器映像注册表
- 云监控:记录和监控
💡 使用示例
PR评论
# Analyze infrastructure
/ask List all ECS clusters and their status
# Troubleshoot CloudFormation
/ask Check the CloudFormation stack sample-demo for any issues直接API调用
# Via Broker (recommended)
curl -X POST http://your-broker-alb-url/ask \
-H "Content-Type: application/json" \
-d '{
"ask_text": "List ECS tasks in cluster mcp-cluster",
"shim_url": "http://your-gateway-alb-url",
"account_id": "YOUR-ACCOUNT-ID",
"region": "us-east-1",
"metadata": {"source": "api"}
}'
# Direct Gateway Call
curl -X POST http://your-gateway-alb-url/call-tool \
-H "Content-Type: application/json" \
-d '{
"server": "ecs",
"tool": "ecs_call_tool",
"params": {
"tool": "ecs_resource_management",
"params": {
"api_operation": "ListClusters",
"api_params": {},
"account_id": "YOUR-ACCOUNT-ID",
"region": "us-east-1"
}
}
}'🔧 配置要求
所需AWS资源
- ECS集群:
mcp-cluster - 虚拟私有云:具有公共/私有子网
- 安全组:允许服务之间的HTTP流量
- IAM角色:
- ecsTaskExecutionRole (ECS任务执行) - McpServerTaskRole (AWS API访问)
- ECR存储库:
- broker-service - mcp-gateway - github-runner
环境变量
- 中间人服务:不需要特殊的环境变量
- MCP网关:使用带有固定PYTHONPATH的嵌入式MCP服务器
- GitHub操作:使用存储库机密作为AWS凭据
🚨 故障排除
常见问题
- 模块导入错误(已修复)
- 问题: ModuleNotFoundError: No module named 'awslabs.aws_iac_mcp_server' - 解决方案:网关现在为IAC服务器使用显式PYTHONPATH: env PYTHONPATH=/app/aws-iac-mcp-server:/app python /app/aws-iac-mcp-server/awslabs/aws_iac_mcp_server/server.py
- 网关健康检查失败
- 检查ALB目标群体的健康状况 - 验证安全组是否允许端口8080上的流量 - 检查ECS服务状态
- 经纪人超时问题
- 将复杂操作的超时时间增加到2分钟 - 从代理检查网关ALB连接
调试命令
# Check ECS service status
aws ecs describe-services --cluster mcp-cluster --services broker-service mcp-gateway
# View logs
aws logs get-log-events --log-group-name /ecs/broker-service --log-stream-name LATEST
aws logs get-log-events --log-group-name /ecs/mcp-gateway --log-stream-name LATEST
# Test ALB health
curl http://your-broker-alb-url/health
curl http://your-gateway-alb-url/health
# Test MCP servers directly
aws ecs run-task --cluster mcp-cluster --task-definition github-runner:3 --launch-type FARGATE --network-configuration "awsvpcConfiguration={assignPublicIp=ENABLED,securityGroups=[sg-YOUR-ID],subnets=[subnet-YOUR-ID]}" --overrides '{"containerOverrides":[{"name":"github-runner","command":["curl","-X","POST","http://YOUR-GATEWAY-ALB/call-tool","-H","Content-Type: application/json","-d","{\"server\":\"ecs\",\"tool\":\"ecs_call_tool\",\"params\":{\"tool\":\"ecs_resource_management\",\"params\":{\"api_operation\":\"ListClusters\",\"api_params\":{},\"account_id\":\"YOUR-ACCOUNT-ID\",\"region\":\"us-east-1\"}}}"]}]}'🔄 开发工作流程
- 本地测试:部署前单独测试MCP服务器
- 构建图像:构建并推进ECR
- 部署服务:用新的任务定义更新ECS服务
- 测试集成:验证经纪人→ 网关→ MCP服务器流
- GitHub集成:通过PR评论进行测试
🚀 部署指标集成
统一代理现在包括实时GitHub Actions部署跟踪:
可用部署工具
deploy_find_latest:查找存储库的最新部署运行deploy_get_summary:获取详细的部署摘要,包括时间和状态deploy_get_run:获取特定的部署运行详细信息deploy_get_steps:获取部署步骤详细信息和日志deploy_find_active:查找当前正在运行的部署
使用示例
# Get latest deployment for current repository (uses metadata)
"Get the latest deployment summary"
# Get specific deployment details
"Get deployment summary for run 20490462868"
# Find running deployments
"Show me any deployments currently running"
# Get deployment with steps
"Get deployment summary with run and step details for run_id 20490462868"元数据集成
当从GitHub Actions调用时,代理会自动使用:
- 仓库:来自
github.repository上下文 - 运行ID:来自
github.run_id上下文 - 自动选择:未指定run_id时,优先考虑RUNNING部署
📈 监控
- CloudWatch日志:
- /ecs/broker-service -带有详细工具调用的代理服务日志 - /ecs/mcp-gateway -网关路由和MCP服务器管理 - /ecs/github-runner -测试执行日志
- ECS指标:两个服务的CPU、内存、任务运行状况
- ALB指标:两个ALB的请求计数、延迟、错误
🤝 贡献
- 分叉存储库
- 使用您的AWS帐户详细信息更新配置文件
- 使用上述调试命令进行本地测试
- 提交拉取请求
- 评论
/ask test the system触发验证
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
