
AWS Cost Explorer and Amazon Bedrock Model Invocation Logs MCP Server & Client

2025.04.17
0
PythonAWS成本分析自然语言查询云支出管理金融服务开发效率
AWS Cost Explorer and Amazon Bedrock Model Invocation Logs MCP Server & Client 是一个基于Anthropic的MCP(Model Control Protocol)协议的服务,用于通过AWS Cost Explorer API和Amazon CloudWatch中的Model Invocation Logs获取AWS支出数据和Amazon Bedrock使用数据。该服务提供了一个交互式界面,允许用户通过自然语言查询AWS支出数据。
View on GitHub
Overview
基本能力
产品定位
该服务旨在通过MCP协议提供一个便捷的方式来分析和可视化AWS云支出数据,使用Anthropic的Claude模型作为交互式界面。
核心功能
- Amazon EC2支出分析:查看前一天EC2支出的详细分解
- Amazon Bedrock支出分析:查看过去30天内按区域、用户和模型的支出分解
- 服务支出报告:分析过去30天内所有AWS服务的支出
- 详细成本分解:按天、区域、服务和实例类型获取详细的成本数据
- 交互式界面:使用Claude通过自然语言查询成本数据
适用场景
- 需要定期监控AWS支出的团队或个人
- 需要跨账户分析AWS支出的组织
- 希望通过自然语言交互查询AWS数据的用户
工具列表
get_ec2_spend_last_day()
:检索前一天的EC2支出数据get_detailed_breakdown_by_day(days=7)
:提供按区域、服务和实例类型的详细成本分析get_bedrock_daily_usage_stats(days=7, region='us-east-1', log_group_name='BedrockModelInvocationLogGroup')
:提供按区域和用户的每日模型使用情况分解get_bedrock_hourly_usage_stats(days=7, region='us-east-1', log_group_name='BedrockModelInvocationLogGroup')
:提供按区域和用户的每小时模型使用情况分解
常见问题解答
- 如何配置跨账户访问?设置
CROSS_ACCOUNT_ROLE_NAME
参数并确保IAM角色具有适当的权限 - 如何确保远程MCP服务器的安全性?建议使用nginx作为反向代理,并通过HTTPS提供服务
使用教程
使用依赖
- Python 3.12
- AWS凭证(具有Cost Explorer访问权限)
- Anthropic API访问权限(用于Claude集成)
- [可选] Amazon Bedrock访问权限(用于LangGraph Agent)
- [可选] Amazon EC2(用于运行远程MCP服务器)
安装教程
- 安装
uv
:bash # On macOS and Linux curl -LsSf https://astral.sh/uv/install.sh | sh
powershell
# On Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
-
克隆仓库:
git clone https://github.com/aarora79/aws-cost-explorer-mcp.git cd aws-cost-explorer-mcp
-
设置Python虚拟环境并安装依赖:
uv venv --python 3.12 && source .venv/bin/activate && uv pip install --requirement pyproject.toml
-
配置AWS凭证:
mkdir -p ~/.aws # 在~/.aws/credentials和~/.aws/config中设置凭证
调试方式
本地设置
export MCP_TRANSPORT=stdio
export BEDROCK_LOG_GROUP_NAME=YOUR_BEDROCK_CW_LOG_GROUP_NAME
export CROSS_ACCOUNT_ROLE_NAME=ROLE_NAME_FOR_THE_ROLE_TO_ASSUME_IN_OTHER_ACCOUNTS
python server.py
远程设置
export MCP_TRANSPORT=sse
export BEDROCK_LOG_GROUP_NAME=YOUR_BEDROCK_CW_LOG_GROUP_NAME
export CROSS_ACCOUNT_ROLE_NAME=ROLE_NAME_FOR_THE_ROLE_TO_ASSUME_IN_OTHER_ACCOUNTS
python server.py
测试CLI MCP客户端
MCP_SERVER_HOSTNAME=YOUR_MCP_SERVER_EC2_HOSTNAME
AWS_ACCOUNT_ID=AWS_ACCOUNT_ID_TO_GET_INFO_ABOUT
python mcp_sse_client.py --host $MCP_SERVER_HOSTNAME --aws-account-id $AWS_ACCOUNT_ID