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.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数据的用户

工具列表

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

常见问题解答

  • 如何配置跨账户访问?设置CROSS_ACCOUNT_ROLE_NAME参数并确保IAM角色具有适当的权限
  • 如何确保远程MCP服务器的安全性?建议使用nginx作为反向代理,并通过HTTPS提供服务

使用教程

使用依赖

  • Python 3.12
  • AWS凭证(具有Cost Explorer访问权限)
  • Anthropic API访问权限(用于Claude集成)
  • [可选] Amazon Bedrock访问权限(用于LangGraph Agent)
  • [可选] Amazon EC2(用于运行远程MCP服务器)

安装教程

  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"

  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
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

许可证

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