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

2025.04.04
0
PythonAWS成本分析自然语言查询云支出管理金融服务开发效率
AWS Cost Explorer和Amazon Bedrock模型调用日志MCP服务器是一个基于Anthropic的MCP(模型控制协议)的工具,用于通过AWS Cost Explorer API获取AWS支出数据,并通过Amazon CloudWatch中的模型调用日志获取Amazon Bedrock使用数据。该工具提供了一个交互式界面,允许用户通过自然语言查询AWS成本数据。
View on GitHub
Overview
产品定位
AWS Cost Explorer和Amazon Bedrock模型调用日志MCP服务器是一个用于分析和可视化AWS云支出数据的工具,通过Anthropic的Claude模型作为交互式接口。
核心功能
- Amazon EC2支出分析:查看前一天EC2支出的详细分解
- Amazon Bedrock支出分析:查看过去30天内按区域、用户和模型的支出分解
- 服务支出报告:分析过去30天内所有AWS服务的支出
- 详细成本分解:按天、区域、服务和实例类型获取细粒度成本数据
- 交互式界面:使用Claude通过自然语言查询成本数据
适用场景
- 需要分析AWS云支出的团队或个人
- 希望通过自然语言查询AWS成本数据的用户
- 需要监控Amazon Bedrock模型使用情况的团队
工具列表
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')
:按区域和用户提供每日每小时的模型使用情况的分解
常见问题解答
- 如何配置远程MCP服务器?:设置
MCP_TRANSPORT
为sse
,并在EC2实例的安全组中配置TCP端口8000的入站规则。 - 如何确保远程MCP服务器的安全性?:使用nginx作为反向代理,提供HTTPS端点。
- 如何扩展功能?:在
server.py
中添加新函数,并使用@mcp.tool()
注解它们。
使用依赖
- Python 3.12
- 具有Cost Explorer访问权限的AWS凭证
- 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
python server.py
远程设置
运行服务器:
export MCP_TRANSPORT=sse
export BEDROCK_LOG_GROUP_NAME=YOUR_BEDROCK_CW_LOG_GROUP_NAME
python server.py
测试远程MCP服务器:
MCP_SERVER_HOSTNAME=YOUR_MCP_SERVER_EC2_HOSTNAME
python mcp_sse_client.py --host $MCP_SERVER_HOSTNAME
运行Chainlit应用:
chainlit run app.py --port 8080