项目简介

AWS Athena MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在将大型语言模型(LLM)与 Amazon Web Services (AWS) 的 Athena 服务无缝集成。它使得 LLM 客户端(如 Claude Desktop)能够通过一套标准化的接口,安全、高效地执行 SQL 查询,并获取 Athena 数据库和表格的结构信息。

主要功能点

  • 执行 SQL 查询: 允许 LLM 运行任意 SQL 查询语句,并返回查询结果。
  • 获取查询状态: 可以根据查询执行 ID 检查查询的当前状态、扫描数据量和执行时间。
  • 获取查询结果: 在查询成功完成后,通过查询执行 ID 获取具体的查询数据。
  • 列出数据库表: 发现指定 Athena 数据库中的所有表格名称。
  • 描述表格结构: 获取特定表格的详细模式信息,包括列名、数据类型和注释。

安装步骤

  1. 安装 Python: 确保您的系统安装了 Python (3.8 或更高版本)。
  2. 安装 uvx (推荐) 或 pip: uvx 是一个快速的 Python 包安装工具,建议使用。
    # 安装 uvx (如果未安装)
    # pip install uv
  3. 安装服务器: 打开终端,运行以下命令安装服务器:
    # 使用 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与计算