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

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

site icon
2025.04.14 81
PythonAWS成本分析自然语言交互云支出管理金融服务
AWS Cost Explorer MCP Server 是一个基于Anthropic的MCP(Model Control Protocol)协议的服务,用于通过AWS Cost Explorer API和Amazon Bedrock模型调用日志获取AWS云支出数据。该服务允许用户通过自然语言与Claude模型交互,分析和可视化AWS云支出数据。
View on GitHub

Overview

基本能力

产品定位

AWS Cost Explorer MCP Server 主要用于AWS云支出的分析和可视化,通过自然语言交互提供详细的成本报告和分析。

核心功能

  • Amazon EC2 Spend Analysis: 查看前一天的EC2支出详细数据
  • Amazon Bedrock Spend Analysis: 查看过去30天内按区域、用户和模型分类的支出数据
  • Service Spend Reports: 分析过去30天内所有AWS服务的支出
  • Detailed Cost Breakdown: 按天、区域、服务和实例类型提供详细的成本数据
  • Interactive Interface: 通过自然语言与Claude交互查询成本数据

适用场景

  • AWS云支出的实时监控和分析
  • 通过自然语言查询和理解AWS成本数据
  • 生成详细的成本报告和可视化

工具列表

  1. get_ec2_spend_last_day(): 获取前一天的EC2支出数据
  2. get_detailed_breakdown_by_day(days=7): 提供按区域、服务和实例类型的详细成本分析
  3. get_bedrock_daily_usage_stats(days=7, region='us-east-1', log_group_name='BedrockModelInvocationLogGroup'): 提供按区域和用户分类的每日模型使用情况
  4. get_bedrock_hourly_usage_stats(days=7, region='us-east-1', log_group_name='BedrockModelInvocationLogGroup'): 提供按区域和用户分类的每小时模型使用情况

常见问题解答

  • 如何配置AWS凭证? 需要在~/.aws/credentials~/.aws/config中设置AWS凭证。
  • 如何运行远程MCP服务器? 设置MCP_TRANSPORT=sse并运行python server.py
  • 如何安全地运行远程MCP服务器? 使用nginx作为反向代理,配置HTTPS访问。

使用教程

使用依赖

  1. 安装Python 3.12
  2. 确保AWS凭证具有Cost Explorer访问权限
  3. 获取Anthropic API访问权限(用于Claude集成)

安装教程

  1. 安装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"
  2. 克隆仓库: bash git clone https://github.com/aarora79/aws-cost-explorer-mcp.git cd aws-cost-explorer-mcp
  3. 设置Python虚拟环境并安装依赖: bash uv venv --python 3.12 && source .venv/bin/activate && uv pip install --requirement pyproject.toml
  4. 配置AWS凭证: bash mkdir -p ~/.aws # 在~/.aws/credentials和~/.aws/config中设置凭证

调试方式

  1. 本地运行服务器: bash export MCP_TRANSPORT=stdio export BEDROCK_LOG_GROUP_NAME=YOUR_BEDROCK_CW_LOG_GROUP_NAME python server.py
  2. 测试远程MCP服务器: bash MCP_SERVER_HOSTNAME=YOUR_MCP_SERVER_EC2_HOSTNAME python mcp_sse_client.py --host $MCP_SERVER_HOSTNAME
  3. 运行Chainlit应用: bash chainlit run app.py --port 8080

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。