使用说明
AWS FinOps MCP服务器
生产就绪部署:此MCP服务器已针对部署在Amazon Bedrock AgentCore Runtime上进行了优化
AWS金融运营(FinOps)的模型上下文协议(MCP)服务器-为云资源优化、成本管理和性能监控提供全面的工具。
🚀 快速入门-部署到AWS
部署到亚马逊基岩代理核心(推荐)
在几分钟内将MCP服务器部署到生产环境:
# 1. Create ECR repository
./create-ecr-repo.sh
# 2. Update configuration
sed -i 's/ecr: auto/ecr: aws-finops-mcp-server/' .bedrock_agentcore.yaml
# 3. Deploy to AWS
agentcore launch
# 4. Test your deployment
agentcore invoke '{"prompt": "find unused resources in us-east-1"}'
📖 完整的部署指南:
- AGENTCORE_DEPLOYMENT_FINAL.md -完整的部署指南,包括故障排除
- 代理商_ QUICKSTART.md -快速5分钟部署
- 代理商_联系方式_REVIEW.md -状态审查和下一步行动
- QUICK_FIX_DEPLOYMENT.md -常见问题的快速修复
- 手册_代理商_资料.md -手动Docker部署
本地开发
# Install dependencies
pip install -e .
# Run locally
python -m aws_finops_mcp
🎯 快速概览
- 76工具 跨14个类别进行全面的AWS优化
- 类别筛选 -只加载您需要的工具(新!)
- 双模式 -stdio用于直接集成,HTTP用于远程访问
- 节省成本 -识别未使用的资源和优化机会
- 安全与合规 -查找未加密的资源和安全问题
- 性能分析 -分析和优化应用程序性能
- 即用型IAM策略 -几分钟后开始
📊 查看架构图 -可视化系统架构和数据流
🆕 新增功能
基于类别的工具筛选
问题:对于MCP客户端来说,加载所有76个工具可能会很慢,而且会让人不堪重负。
解决方案:使用 MCP_TOOL_CATEGORIES 只启用您需要的类别!
# Load only cost and cleanup tools (25 tools instead of 76)
export MCP_TOOL_CATEGORIES="cleanup,cost"
python -m aws_finops_mcp
# 67% reduction in tool count, faster loading, easier navigation
好处:
- ⚡ 加载速度提高67-89% 用于重点用例
- 🎯 更好的组织 -仅查看相关工具
- 🔧 灵活的 -更改类别而不更改代码
- ✅ 向后兼容 -默认为所有工具
📖 看 工具_CATEGORIES.md 获取完整指南
新增工具
- 网络:NAT网关、VPC端点、互联网网关、CloudFront、Route53
- 存储:S3存储桶,存储类建议
- 容器:ECS集群/服务、ECR镜像、启动模板
- 消息传递:SQS队列、SNS主题、EventBridge规则
- 数据库:DynamoDB表和利用率
- 监控:CloudWatch警报和仪表板
- 演出:Lambda冷启动、API网关、DynamoDB节流、RDS见解、CloudFront缓存
- 安全:未加密资源、公共S3存储桶、允许的安全组
- 治理:未标记的资源、标签合规性、成本分配
- 容量:ElastiCache、ECS服务、Lambda利用率
- 升级:Lambda运行时、EC2代、EBS类型、RDS/ElastiCache引擎、EKS版本
- 成本:节省计划、保留实例、EBS优化、快照、数据传输、NAT网关
📊 工具类别
| 类别 | 工具 | 描述 |
|---|---|---|
| 🧹 清理 | 9 | 查找要删除的未使用资源 |
| 💰 成本 | 16 | 成本优化与分析 |
| 📊 容量 | 9 | 资源利用和合理规模 |
| 🔒 安全 | 5 | 安全合规性检查 |
| ⚡ 演出 | 5 | 性能分析和调整 |
| 🔄 升级 | 8 | 过时资源检测 |
| 🌐 网络 | 5 | 网络资源优化 |
| 💾 存储 | 2 | 存储优化 |
| 📦 容器 | 4 | 容器资源管理 |
| 💬 消息传递 | 3 | 消息服务清理 |
| 🗄️ 数据库 | 2 | 数据库优化 |
| 📈 监控 | 3 | 监控资源清理 |
| 🚀 应用 | 2 | 应用程序健康监测 |
| 🏛️ 治理 | 3 | 标签和合规性 |
总计:76个工具 -使用类别过滤只加载您需要的内容!
# Load only cost and cleanup tools (25 tools instead of 76)
export MCP_TOOL_CATEGORIES="cost,cleanup"
python -m aws_finops_mcp
📖 看 工具_CATEGORIES.md 获取完整的文档
特性
14个类别中的76个工具 -使用类别过滤只加载您需要的内容!
🧹 清理工具(9个工具)
查找未使用的AWS资源以降低成本:
find_unused_lambda_functions-没有调用的Lambda函数find_unused_elastic_ips-未连接的弹性IP(每月3.60美元)find_unused_amis-实例或ASG未使用AMIfind_unused_load_balancers-无流量的负载平衡器(每月22-32美元)find_unused_target_groups-没有目标或流量的目标群体find_unused_log_groups-没有最近事件的CloudWatch日志组find_unused_snapshots-与AMI无关的EBS快照(0.05美元/GB/月)find_unused_security_groups-未附加到资源的安全组find_unused_volumes-未连接的EBS卷
💰 成本工具(16种工具)
成本优化、分析和节约建议:
成本优化中心:
get_all_cost_optimization_recommendations-全部19种资源类型get_cost_optimization_ec2-EC2实例推荐get_cost_optimization_lambda-Lambda函数建议get_cost_optimization_rds-RDS实例推荐get_cost_optimization_ebs-EBS卷建议
成本探索者:
get_cost_by_region-按AWS区域划分的成本明细get_cost_by_service-按AWS服务划分的成本明细get_cost_by_region_and_service-综合区域和服务细分get_daily_cost_trend-每日成本趋势与统计数据
节省和优化:
get_savings_plans_recommendations-储蓄计划建议get_reserved_instance_recommendations-RI购买建议analyze_reserved_instance_utilization-RI利用率和覆盖率get_ebs_volume_type_recommendations-EBS卷类型优化get_snapshot_lifecycle_recommendations-快照生命周期管理analyze_data_transfer_costs-数据传输成本分析get_nat_gateway_optimization_recommendations-NAT网关优化
📊 容量工具(9个工具)
合理规模的资源利用分析:
计算:
find_underutilized_ec2_instances-低CPU/内存的EC2(≤20%)find_overutilized_ec2_instances-EC2具有高CPU/内存(≥80%)find_underutilized_lambda_functions-调用率低的Lambda
数据库:
find_underutilized_rds_instances-低CPU的RDS(≤20%)find_overutilized_rds_instances-高CPU RDS(≥80%)find_underutilized_dynamodb_tables-低容量DynamoDBfind_overutilized_dynamodb_tables-高容量DynamoDB(>80%)find_underutilized_elasticache_clusters-低CPU(<20%)的ElastiCachefind_overutilized_elasticache_clusters-ElastiCache具有高CPU/内存(>80%)
容器:
find_underutilized_ecs_services-低CPU/内存(<20%)的ECS服务
🔒 安全工具(5个工具)
安全合规性和最佳实践:
find_unencrypted_ebs_volumes-未加密的EBS卷find_unencrypted_s3_buckets-没有默认加密的S3存储桶find_unencrypted_rds_instances-未加密的RDS实例find_public_s3_buckets-启用公共访问的S3存储桶find_overly_permissive_security_groups-具有0.0.0.0/0规则的安全组
⚡ 性能工具(5个工具)
性能分析和优化:
analyze_lambda_cold_starts-Lambda冷启动分析analyze_api_gateway_performance-API网关性能指标analyze_dynamodb_throttling-DynamoDB节流问题analyze_rds_performance_insights-RDS性能洞察数据analyze_cloudfront_cache_hit_ratio-CloudFront缓存性能
🔄 升级工具(8个工具)
识别需要升级的过时资源:
计算:
find_asgs_with_old_amis-使用旧AMI自动缩放组find_outdated_lambda_runtimes-已弃用运行时的Lambdafind_ec2_instances_with_old_generations-EC2使用上一代类型find_ebs_volumes_with_old_types-使用上一代类型的EBSfind_outdated_ecs_platform_versions-ECS不在最新平台版本上
数据库:
find_outdated_rds_engine_versions-RDS不在最新发动机版本上find_outdated_elasticache_engine_versions-ElastiCache不是最新版本
容器:
find_outdated_eks_cluster_versions-EKS不在最新的Kubernetes版本上
🌐 网络工具(5个工具)
网络资源优化:
find_unused_nat_gateways-无流量的NAT网关(每月32.40美元)find_unused_vpc_endpoints-没有连接的VPC端点(每个AZ每月7.20美元)find_unused_internet_gateways-未连接的互联网网关find_unused_cloudfront_distributions-CloudFront没有请求find_unused_route53_hosted_zones-Route53区域无查询
💾 存储工具(2个工具)
存储优化:
find_unused_s3_buckets-S3存储桶没有活动get_s3_storage_class_recommendations-S3存储类优化(节省30-95%)
📦 容器工具(4个工具)
容器和编排资源管理:
find_old_ecs_task_definitions-旧ECS任务定义未使用find_unused_ecr_images-未使用的ECR图像($0.10/GB/月)find_unused_launch_templates-EC2启动模板未使用find_unused_ecs_clusters_and_services-无活动的ECS集群/服务
💬 消息传递工具(3个工具)
消息服务优化:
find_unused_sqs_queues-没有消息的SQS队列find_unused_sns_topics-没有订阅/消息的SNS主题find_unused_eventbridge_rules-EventBridge规则没有调用
🗄️ 数据库工具(2个工具)
数据库资源分析:
find_unused_dynamodb_tables-没有读/写活动的DynamoDB表find_underutilized_dynamodb_tables-DynamoDB容量利用率低
📈 监控工具(3个工具)
监控资源清理:
find_unused_cloudwatch_alarms-CloudWatch警报处于INSUFFICIENT_DATA状态find_orphaned_cloudwatch_dashboards-参考已删除资源的仪表板find_orphaned_cloudwatch_alarms-与活动资源无关的警报
🚀 应用工具(2个工具)
应用程序健康监控:
find_target_groups_with_high_error_rate-有5XX错误的目标群体(>5%)find_target_groups_with_high_response_time-反应时间较慢(>1s)的目标群体
🏛️ 治理工具(3个工具)
资源治理和合规性:
find_untagged_resources-资源缺少必需的标签analyze_tag_compliance-跨资源的标签合规性分析generate_cost_allocation_report-按标签进行成本分配
✨ 工具特性
所有工具包括:
- ✅ 全面细节 -完整的ARN、配置和元数据
- ✅ 成本估算 -每月成本节约潜力
- ✅ 完整标签 -成本分配和所有权跟踪
- ✅ 年龄计算 -优先考虑清理工作
- ✅ 安全详细信息 -加密、KMS密钥、所有权
- ✅ 总储蓄 -每个工具的总成本节约
🌐 部署模式
标准模式(stdio):与MCP客户端直接集成
HTTP服务器模式:通过REST API对分布式部署进行远程访问
- 在EC2上运行并从任何地方连接
- 用于安全开发的SSH隧道
- HTTPS与Nginx用于生产
- AWS Systems Manager无SSH访问权限
- API端点:
/health,/tools,/mcp
安装
🚀 新:部署到亚马逊基岩代理核心
将此MCP服务器部署到AWS Bedrock AgentCore,以实现生产就绪、可扩展的代理集成:
# Quick deployment (recommended)
pip install bedrock-agentcore-starter-toolkit
agentcore launch
快速链接:
两种部署方法:
- 网关(Lambda) -快速设置、无服务器、经济高效
- 运行时(容器) -生产就绪,无限执行时间(使用
agentcore launch)
快速入门(虚拟环境)
# Automated setup
./setup.sh
# Run the server (stdio mode)
./run.sh
# Run tests
./test.sh
手动安装
# Using pip
pip install .
# Using uv
uv pip install .
# For development
pip install -e ".[dev]"
Docker安装
选项1:标准模式(stdio)
# Build and run with Docker
./docker-run.sh run
# Or use Docker Compose
docker-compose up -d
# View logs
docker-compose logs -f
选项2:HTTP服务器模式(远程访问)
# Run with HTTP server for remote access
docker-compose -f docker-compose-http.yml up -d
# Test the server
curl http://localhost:8000/health
# View logs
docker-compose -f docker-compose-http.yml logs -f
看 部署.md 详细的部署选项,包括EC2、ECS、Lambda和Kubernetes。
看 远程访问_用户.md 用于远程访问设置和配置。
用法
🎯 工具类别筛选(新增!)
问题:加载所有76个工具对客户来说可能会很慢,而且会让人不堪重负。
解决方案:使用 MCP_TOOL_CATEGORIES 只启用您需要的工具!
# Enable only cleanup and cost tools (25 tools instead of 76)
export MCP_TOOL_CATEGORIES="cleanup,cost"
python -m aws_finops_mcp
# Enable all tools (default)
export MCP_TOOL_CATEGORIES="all"
python -m aws_finops_mcp
可用类别 (共14个):
cleanup(9个工具)-查找未使用的资源cost(16个工具)-成本优化和分析capacity(9个工具)-资源利用分析security(5个工具)-安全合规性检查performance(5个工具)-性能分析upgrade(8个工具)-过时的资源检测network(5个工具)-网络资源优化storage(2个工具)-存储优化containers(4个工具)-容器资源管理database(2个工具)-数据库优化messaging(3个工具)-消息服务清理monitoring(3个工具)-监控资源清理application(2个工具)-应用程序健康监测governance(3个工具)-标记和合规性
📖 看 工具_CATEGORIES.md 获取完整的文档和示例
模式1:标准MCP服务器(stdio)
添加到您的MCP客户端配置中(例如Kiro的 mcp.json):
{
"mcpServers": {
"aws-finops": {
"command": "python",
"args": ["-m", "aws_finops_mcp"],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-east-1",
"MCP_TOOL_CATEGORIES": "cleanup,cost,security"
}
}
}
}
或者使用uvx:
{
"mcpServers": {
"aws-finops": {
"command": "uvx",
"args": ["aws-finops-mcp-server"]
}
}
}
模式2:HTTP服务器(远程访问)
以HTTP模式运行服务器以进行远程访问:
# Set environment variable
export MCP_SERVER_MODE=http
export MCP_SERVER_HOST=0.0.0.0
export MCP_SERVER_PORT=8000
# Run the server
python -m aws_finops_mcp
# Or use Docker
docker-compose -f docker-compose-http.yml up -d
HTTP API终结点
健康检查:
curl http://localhost:8000/health
列出工具:
curl http://localhost:8000/tools
执行工具:
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"tool": "get_cost_by_region",
"arguments": {
"region_name": "us-east-1"
}
}'
远程访问选项
SSH隧道 (建议开发):
# On EC2
docker-compose -f docker-compose-http.yml up -d
# On your laptop
ssh -i your-key.pem -L 8000:localhost:8000 ec2-user@your-ec2-ip -N
# Connect to localhost:8000
curl http://localhost:8000/health
HTTPS与Nginx (推荐用于生产):
# Automated setup on EC2
./setup-ec2-remote.sh yes yes your-domain.com
# Access via HTTPS
curl https://your-domain.com/health
看 远程访问_用户.md 获取完整的远程访问设置说明。
刀具参数
所有工具都接受以下参数:
AWS凭据 (其中之一):
profile_name:AWS配置文件名称role_arn:IAM角色ARN将承担access_key+secret_access_key:直接凭证access_key+secret_access_key+session_token:临时凭据
公共参数:
region_name:AWS区域(默认:“us-east-1”)period:回溯期(以天为单位)(默认值:90)max_results:返回的最大结果数(默认值:100)
工具调用示例
stdio模式(MCP客户端)
# Find unused Lambda functions
{
"tool": "find_unused_lambda_functions",
"arguments": {
"profile_name": "production",
"region_name": "us-west-2",
"period": 90
}
}
# Find underutilized EC2 instances
{
"tool": "find_underutilized_ec2_instances",
"arguments": {
"role_arn": "arn:aws:iam::123456789012:role/FinOpsRole",
"region_name": "us-east-1",
"period": 30
}
}
# Get cost optimization recommendations
{
"tool": "get_cost_optimization_ec2",
"arguments": {
"access_key": "AKIA...",
"secret_access_key": "...",
"region_name": "us-east-1"
}
}
HTTP模式(REST API)
# Find unused Lambda functions
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"tool": "find_unused_lambda_functions",
"arguments": {
"region_name": "us-west-2",
"period": 90
}
}'
# Get cost by region
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"tool": "get_cost_by_region",
"arguments": {
"region_name": "us-east-1"
}
}'
# Find underutilized EC2 instances
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"tool": "find_underutilized_ec2_instances",
"arguments": {
"region_name": "us-east-1",
"period": 30
}
}'
需要AWS权限
快速设置
我们为不同的用例提供现成的IAM策略:
# Automated setup (recommended)
cd iam-policies/examples
./create-iam-role.sh finops-mcp-role full ec2
# Or create IAM user
./create-iam-user.sh finops-mcp-user full
可用策略
| 策略 | 用例 | 已启用工具 |
|---|---|---|
| 全保单 | 生产(推荐) | 全部76种工具 |
| 最低政策 | 测试/开发 | 全部76个工具(基础) |
| 只读策略 | 最高安全性 | 全部76个工具 |
| 仅成本政策 | 仅成本分析 | 16个成本工具 |
策略文件
iam-policies/finops-full-policy.json-完整权限(推荐)iam-policies/finops-minimal-policy.json-基本权限iam-policies/finops-readonly-policy.json-只读访问iam-policies/finops-cost-only-policy.json-仅成本分析
设置方法
AWS控制台:复制策略JSON→ 创建策略→ 附加到角色/用户
AWS-CLI:
aws iam create-policy \
--policy-name FinOpsFullPolicy \
--policy-document file://iam-policies/finops-full-policy.json
地形:参见 iam-policies/examples/terraform-example.tf
云形成:参见 iam-policies/examples/cloudformation-example.yaml
📖 完整指南:参见 IAM_SETUP_GUIDE.md 详细说明
建筑
src/aws_finops_mcp/
├── __main__.py # Entry point (supports stdio and HTTP modes)
├── server.py # FastMCP server with all 76 tools
├── server_filtered.py # Filtered server with category support (NEW!)
├── tool_categories.py # Category definitions and filtering logic (NEW!)
├── http_server.py # HTTP server wrapper for remote access
├── session.py # AWS session management
├── tools/
│ ├── cleanup.py # Cleanup tools (9 tools)
│ ├── capacity.py # Capacity analysis tools (4 tools)
│ ├── capacity_compute.py # Compute capacity tools (1 tool)
│ ├── capacity_database.py # Database capacity tools (4 tools)
│ ├── cost.py # Cost optimization tools (5 tools)
│ ├── cost_explorer.py # Cost Explorer tools (4 tools)
│ ├── cost_savings.py # Savings recommendations (3 tools)
│ ├── cost_storage.py # Storage cost optimization (2 tools)
│ ├── cost_network.py # Network cost optimization (2 tools)
│ ├── application.py # Application performance tools (2 tools)
│ ├── upgrade.py # Upgrade recommendations (1 tool)
│ ├── upgrade_compute.py # Compute upgrade tools (4 tools)
│ ├── upgrade_database.py # Database upgrade tools (2 tools)
│ ├── upgrade_containers.py # Container upgrade tools (1 tool)
│ ├── network.py # Network optimization tools (5 tools)
│ ├── storage.py # Storage optimization tools (2 tools)
│ ├── containers.py # Container management tools (4 tools)
│ ├── messaging.py # Messaging service tools (3 tools)
│ ├── database.py # Database optimization tools (2 tools)
│ ├── monitoring.py # Monitoring resource tools (3 tools)
│ ├── performance.py # Performance analysis tools (5 tools)
│ ├── security.py # Security compliance tools (5 tools)
│ └── governance.py # Governance and tagging tools (3 tools)
└── utils/
├── helpers.py # Helper functions
└── metrics.py # CloudWatch metrics utilities
部署模式
stdio模式 (默认):
MCP Client ←→ stdin/stdout ←→ MCP Server ←→ AWS APIs
HTTP模式 (远程访问):
MCP Client ←→ HTTP/HTTPS ←→ MCP Server ←→ AWS APIs
(REST API)
类别筛选(新增!)
User sets MCP_TOOL_CATEGORIES="cleanup,cost"
↓
__main__.py checks environment variable
↓
Loads server_filtered.py instead of server.py
↓
Only 25 tools registered (cleanup: 9 + cost: 16)
↓
Client sees only relevant tools
发展
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/
# Lint
ruff check src/
环境变量
服务器配置
# Server Mode
MCP_SERVER_MODE=http # Enable HTTP server mode (default: stdio)
MCP_SERVER_HOST=0.0.0.0 # Host to bind to (default: 0.0.0.0)
MCP_SERVER_PORT=8000 # Port to listen on (default: 8000)
# Tool Filtering (NEW!)
MCP_TOOL_CATEGORIES=cleanup,cost # Enable specific categories (default: all)
# Options: cleanup, cost, capacity, security,
# performance, upgrade, network, storage,
# containers, messaging, database,
# monitoring, application, governance
# AWS Configuration
AWS_REGION=us-east-1 # Default AWS region
AWS_PROFILE=default # AWS profile name
AWS_ACCESS_KEY_ID=... # AWS access key (not recommended)
AWS_SECRET_ACCESS_KEY=... # AWS secret key (not recommended)
# Logging
PYTHONUNBUFFERED=1 # Enable unbuffered output
示例配置
带类别筛选的stdio模式 (推荐):
export MCP_TOOL_CATEGORIES="cleanup,cost,security"
python -m aws_finops_mcp
stdio模式 (所有工具):
python -m aws_finops_mcp
带类别筛选的HTTP模式:
export MCP_SERVER_MODE=http
export MCP_SERVER_HOST=0.0.0.0
export MCP_SERVER_PORT=8000
export MCP_TOOL_CATEGORIES="cost,capacity"
python -m aws_finops_mcp
带过滤的Docker HTTP模式:
docker run -e MCP_SERVER_MODE=http \
-e MCP_SERVER_PORT=8000 \
-e MCP_TOOL_CATEGORIES="cleanup,cost" \
-p 8000:8000 \
aws-finops-mcp-server
许可证
MIT许可证
快速参考
运行模式
| 模式 | 命令 | 用例 |
|---|---|---|
| 标准 | python -m aws_finops_mcp |
直接MCP客户端集成 |
| 超文本传输协议 | MCP_SERVER_MODE=http python -m aws_finops_mcp |
远程访问、分布式部署 |
Docker命令
# stdio mode
docker-compose up -d
# HTTP mode
docker-compose -f docker-compose-http.yml up -d
# Test HTTP server
curl http://localhost:8000/health
远程访问
# SSH tunnel (development)
ssh -i key.pem -L 8000:localhost:8000 ec2-user@ec2-ip -N
# HTTPS setup (production)
./setup-ec2-remote.sh yes yes your-domain.com
# Test connection
./examples/test-remote-connection.sh http://localhost:8000
文档
| 文档 | 描述 |
|---|---|
| 代理商_ QUICKSTART.md | 🆕 5分钟内部署到Amazon Bedrock AgentCore |
| 卧室_花园_花园.md | 🆕 完整的AgentCore部署指南 |
| 代理商_康帕利森.md | 🆕 比较网关与运行时部署 |
| GETTING_STARTED.md | 完整的MCP配置设置指南 |
| 工具_CATEGORIES.md | 类别筛选指南 |
| 类别_快速参考.md | 类别快速参考 |
| 工具_参考.md | 所有76个工具文档 |
| 部署.md | 部署选项(EC2、ECS、Lambda、K8s) |
| 远程访问_用户.md | HTTP模式和远程访问设置 |
| IAM_SETUP_GUIDE.md | IAM权限和策略 |
| 建筑.md | 系统架构与设计 |
| MIGRATION_GUIDE.md | 类别过滤迁移指南 |
| iam政策/README.md | IAM策略模板 |