项目简介
AWS Athena MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在将大型语言模型(LLM)与 Amazon Web Services (AWS) 的 Athena 服务无缝集成。它使得 LLM 客户端(如 Claude Desktop)能够通过一套标准化的接口,安全、高效地执行 SQL 查询,并获取 Athena 数据库和表格的结构信息。
主要功能点
- 执行 SQL 查询: 允许 LLM 运行任意 SQL 查询语句,并返回查询结果。
- 获取查询状态: 可以根据查询执行 ID 检查查询的当前状态、扫描数据量和执行时间。
- 获取查询结果: 在查询成功完成后,通过查询执行 ID 获取具体的查询数据。
- 列出数据库表: 发现指定 Athena 数据库中的所有表格名称。
- 描述表格结构: 获取特定表格的详细模式信息,包括列名、数据类型和注释。
安装步骤
- 安装 Python: 确保您的系统安装了 Python (3.8 或更高版本)。
- 安装 uvx (推荐) 或 pip: uvx 是一个快速的 Python 包安装工具,建议使用。
# 安装 uvx (如果未安装) # pip install uv - 安装服务器: 打开终端,运行以下命令安装服务器:
# 使用 uvx (推荐): uvx install aws-athena-mcp # 或者使用 pip: # pip install aws-athena-mcp
服务器配置
MCP 服务器通过环境变量进行配置。MCP 客户端需要知道如何启动这个服务器进程。
-
必需配置: 您必须设置 'ATHENA_S3_OUTPUT_LOCATION' 环境变量,指定 Athena 查询结果存放的 S3 路径。
export ATHENA_S3_OUTPUT_LOCATION=s3://你的-存储桶/athena-结果/ -
可选配置:
- 'AWS_REGION': AWS 区域,默认为 'us-east-1'。
- 'ATHENA_WORKGROUP': Athena 工作组,默认为 'None'。
- 'ATHENA_TIMEOUT_SECONDS': 查询超时时间(秒),默认为 '60'。
-
AWS 凭证: 您还需要配置有效的 AWS 凭证,以便服务器能够访问 Athena 和 S3。常用的配置方式包括:
- 设置环境变量:'AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY'。
- 使用 AWS CLI 配置:运行 'aws configure'。
- 使用 AWS Profile:设置 'AWS_PROFILE' 环境变量。
- 对于 EC2/Lambda 等服务,推荐使用 IAM Role。
-
MCP 客户端配置: MCP 客户端(如 Claude Desktop)需要配置如何启动此服务器。在客户端的配置文件(例如 'claude_desktop_config.json')中,您需要添加一个 'mcpServers' 条目。以下是示例配置的结构说明:
{ "mcpServers": { "aws-athena-mcp": { // 服务器的名称,客户端使用此名称引用 "command": "uvx", // 启动服务器的命令,例如 uvx 或 python "args": [ // 启动命令的参数列表 "aws-athena-mcp" // 执行 aws-athena-mcp 模块 // 如果使用 python 直接运行模块,参数可以是 ["-m", "athena_mcp.server"] ], "env": { // 传递给服务器进程的环境变量 "ATHENA_S3_OUTPUT_LOCATION": "s3://你的-存储桶/athena-结果/", // **必需**:请替换为您的实际 S3 路径 "AWS_REGION": "us-east-1", // **可选**:AWS 区域 "ATHENA_WORKGROUP": "primary", // **可选**:Athena 工作组 "ATHENA_TIMEOUT_SECONDS": "60" // **可选**:查询超时时间 } } } // ... 客户端的其他配置 }配置完成后,重启您的 MCP 客户端。
基本使用方法
安装并配置完服务器和 MCP 客户端后,MCP 服务器会在客户端启动时自动启动(如果客户端配置了通过 Stdio 连接)。
您现在可以在 MCP 客户端中直接向 LLM 提问,请求其执行与 Athena 相关的任务。LLM 会通过调用 MCP 服务器提供的工具来完成这些任务。
示例对话:
用户: "List all tables in my 'analytics' database" (列出我的 'analytics' 数据库中的所有表格) LLM: I'll help you list the tables in your analytics database using the Athena MCP server. (我将使用 Athena MCP 服务器帮助您列出 analytics 数据库中的表格。) [此时,LLM 会调用 MCP 服务器的 'list_tables' 工具]
用户: "Run a query on the 'users' table: SELECT COUNT() FROM users WHERE active = true" (对 'users' 表运行查询:SELECT COUNT() FROM users WHERE active = true) LLM: I will execute that query for you using the Athena MCP server. (我将使用 Athena MCP 服务器为您执行该查询。) [此时,LLM 会调用 MCP 服务器的 'run_query' 工具]
信息
分类
AI与计算