使用说明
项目简介
本项目 'aws-cost-explorer-mcp-server' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为LLM(大型语言模型)应用提供访问AWS云服务成本数据的能力。它通过集成AWS Cost Explorer和CloudWatch Logs,将AWS的成本和Amazon Bedrock模型使用情况数据以结构化的方式暴露给LLM客户端,例如Anthropic的Claude。用户可以通过自然语言与LLM交互,间接地查询和分析AWS的云服务支出。
主要功能点
- AWS EC2 支出分析: 获取过去一天的EC2服务支出明细。
- Amazon Bedrock 支出分析: 按区域、用户和模型细分过去30天的Bedrock服务支出。
- 服务支出报告: 分析过去30天所有AWS服务的支出情况。
- 详细成本分解: 提供按天、区域、服务和实例类型划分的精细成本数据。
- 交互式界面: 结合Claude等LLM,通过自然语言进行成本数据查询和分析。
安装步骤
-
安装 'uv': 根据您的操作系统,运行以下命令安装 'uv' 包管理器(用于Python环境管理):
# macOS 和 Linux curl -LsSf https://astral.sh/uv/install.sh | sh# Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" -
克隆仓库: 使用Git克隆 'aws-cost-explorer-mcp-server' 仓库到本地:
git clone https://github.com/aarora79/aws-cost-explorer-mcp.git cd aws-cost-explorer-mcp -
创建虚拟环境并安装依赖: 使用 'uv' 创建Python 3.12的虚拟环境,并安装项目依赖:
uv venv --python 3.12 && source .venv/bin/activate && uv pip install --requirement pyproject.toml -
配置AWS凭证: 确保您已配置AWS凭证,MCP服务器需要这些凭证来访问AWS Cost Explorer和CloudWatch Logs。您可以在 '~/.aws/credentials' 和 '~/.aws/config' 文件中配置。
服务器配置
要将此MCP服务器与MCP客户端(例如Claude Desktop)连接,您需要在客户端配置中指定服务器的启动命令和参数。以下是针对Claude Desktop的配置示例 ( 'claude_desktop_config.json' 文件),您需要根据实际情况进行调整:
本地运行 (Option 2: Using UV (without Docker) 示例配置)
{ "mcpServers": { "aws_cost_explorer": { "command": "uv", "args": [ "--directory", "/path/to/aws-cost-explorer-mcp-server", // **[请替换为仓库的实际本地路径]** "run", "server.py" ], "env": { "AWS_ACCESS_KEY_ID": "YOUR_ACCESS_KEY_ID", // **[请替换为您的AWS Access Key ID]** "AWS_SECRET_ACCESS_KEY": "YOUR_SECRET_ACCESS_KEY", // **[请替换为您的AWS Secret Access Key]** "AWS_REGION": "us-east-1", // **[请根据需要替换为您的AWS区域]** "BEDROCK_LOG_GROUP_NAME": "YOUR_CLOUDWATCH_BEDROCK_MODEL_INVOCATION_LOG_GROUP_NAME", // **[请替换为您的Bedrock CloudWatch Log Group Name]** "MCP_TRANSPORT": "stdio" // **[传输协议设置为stdio,本地运行时使用]** } } } }
注意:
- 请将 '"/path/to/aws-cost-explorer-mcp-server"' 替换为您克隆仓库的实际本地路径。
- 请务必将 'YOUR_ACCESS_KEY_ID'、'YOUR_SECRET_ACCESS_KEY' 和 'YOUR_CLOUDWATCH_BEDROCK_MODEL_INVOCATION_LOG_GROUP_NAME' 替换为您的实际AWS凭证和CloudWatch日志组名称。请勿将真实的AWS凭证直接提交到版本控制系统中。
- 'MCP_TRANSPORT: "stdio"' 指定使用标准输入输出流作为MCP的传输协议,适用于本地运行的场景。
基本使用方法
- 启动MCP服务器: 根据您选择的运行方式(本地或远程),参照仓库 'README.md' 文档中的 "Usage" 章节启动 'server.py'。
- 配置MCP客户端: 根据您的MCP客户端(例如Claude Desktop)的要求,配置连接到本地或远程MCP服务器。对于Claude Desktop,您需要编辑 'claude_desktop_config.json' 文件,并添加上面提供的服务器配置信息。
- 在MCP客户端中查询: 启动并连接Claude Desktop后,您可以使用自然语言提出关于AWS成本的问题,例如:
- "Help me understand my Bedrock spend over the last few weeks" (帮我了解一下过去几周我的Bedrock支出)
- "What was my EC2 spend yesterday?" (我昨天的EC2支出是多少?)
- "Show me my top 5 AWS services by cost for the last month" (展示我上个月成本最高的5个AWS服务)
LLM客户端将通过MCP协议与服务器通信,调用相应的工具获取数据并生成回答。
信息
分类
商业系统