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.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模型使用情况的团队

工具列表

  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'):按区域和用户提供每日每小时的模型使用情况的分解

常见问题解答

  • 如何配置远程MCP服务器?:设置MCP_TRANSPORTsse,并在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服务器

安装教程

  1. 安装uvbash # 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"

  1. 克隆仓库: git clone https://github.com/aarora79/aws-cost-explorer-mcp.git cd aws-cost-explorer-mcp

  2. 设置Python虚拟环境并安装依赖: uv venv --python 3.12 && source .venv/bin/activate && uv pip install --requirement pyproject.toml

  3. 配置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 

许可证

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