aws-athena-mcp

by lishenxydlgzs
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Requires Node.js >= 16 to run the MCP server

@lishenxydlgzs/aws-athena-mcp

用于运行 AWS Athena 查询的模型上下文协议 (MCP) 服务器。此服务器使 AI 助手能够针对您的 AWS Athena 数据库执行 SQL 查询并检索结果。

用法

  1. 使用以下方法之一配置 AWS 凭证:
    • AWS CLI 配置
    • 环境变量( AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
    • IAM 角色(如果在 AWS 上运行)
  2. 将服务器添加到您的 MCP 配置:
{ "mcpServers": { "athena": { "command": "npx", "args": ["-y", "@lishenxydlgzs/aws-athena-mcp"], "env": { // Required "OUTPUT_S3_PATH": "s3://your-bucket/athena-results/", // Optional AWS configuration "AWS_REGION": "us-east-1", // Default: AWS CLI default region "AWS_PROFILE": "default", // Default: 'default' profile "AWS_ACCESS_KEY_ID": "", // Optional: AWS access key "AWS_SECRET_ACCESS_KEY": "", // Optional: AWS secret key "AWS_SESSION_TOKEN": "", // Optional: AWS session token // Optional server configuration "ATHENA_WORKGROUP": "default_workgroup", // Optional: specify the Athena WorkGroup "QUERY_TIMEOUT_MS": "300000", // Default: 5 minutes (300000ms) "MAX_RETRIES": "100", // Default: 100 attempts "RETRY_DELAY_MS": "500" // Default: 500ms between retries } } } }
  1. 该服务器提供以下工具:
  • run_query :使用 AWS Athena 执行 SQL 查询
    • 参数:
      • 数据库:要查询的 Athena 数据库
      • 查询:要执行的 SQL 查询
      • maxRows:返回的最大行数(默认值:1000,最大值:10000)
    • 返回:
      • 如果查询在超时内完成:完整的查询结果
      • 如果超时:仅获取 queryExecutionId 以供后续检索
  • get_status :检查查询执行的状态
    • 参数:
      • queryExecutionId:从 run_query 返回的 ID
    • 返回:
      • 状态:查询状态(QUEUED、RUNNING、SUCCEEDED、FAILED 或 CANCELLED)
      • stateChangeReason:状态改变的原因(如果有)
      • submissionDateTime:查询提交的时间
      • completionDateTime:查询完成的时间(如果完成)
      • 统计信息:查询执行统计信息(如果有)
  • get_result :检索已完成查询的结果
    • 参数:
      • queryExecutionId:从 run_query 返回的 ID
      • maxRows:返回的最大行数(默认值:1000,最大值:10000)
    • 返回:
      • 如果查询成功完成,则显示完整的查询结果
      • 如果查询失败或仍在运行,则出现错误
  • list_saved_queries :列出 Athena 中所有已保存(命名)的查询。
  • 返回:
    • 包含idname和可选description的已保存查询数组
    • 查询从配置的ATHENA_WORKGROUPAWS_REGION返回
  • run_saved_query:通过 ID 运行之前保存的查询。
  • 参数:
    • namedQueryId :已保存查询的 ID
    • databaseOverride :可选覆盖已保存查询的默认数据库
    • maxRows :返回的最大行数(默认值:1000)
    • timeoutMs :超时时间(毫秒)(默认值:60000)
  • 返回:
    • run_query相同的行为:完整结果或执行 ID

使用示例

显示所有数据库

给 AI 助手的消息: List all databases in Athena

MCP参数:

{ "database": "default", "query": "SHOW DATABASES" }

列出数据库中的表

给 AI 助手的消息: Show me all tables in the default database

MCP参数:

{ "database": "default", "query": "SHOW TABLES" }

获取表架构

给 AI 助手的消息: What's the schema of the asin_sitebestimg table?

MCP参数:

{ "database": "default", "query": "DESCRIBE default.asin_sitebestimg" }

表格行预览

发送给 AI 助手的消息: Show some rows from my_database.mytable

MCP参数:

{ "database": "my_database", "query": "SELECT * FROM my_table LIMIT 10", "maxRows": 10 }

具有过滤和聚合的高级查询

给AI助手的消息: Find the average price by category for in-stock products

MCP参数:

{ "database": "my_database", "query": "SELECT category, COUNT(*) as count, AVG(price) as avg_price FROM products WHERE in_stock = true GROUP BY category ORDER BY count DESC", "maxRows": 100 }

检查查询状态

{ "queryExecutionId": "12345-67890-abcdef" }

获取已完成查询的结果

{ "queryExecutionId": "12345-67890-abcdef", "maxRows": 10 }

列出已保存的查询

{ "name": "list_saved_queries", "arguments": {} }

运行已保存的查询

{ "name": "run_saved_query", "arguments": { "namedQueryId": "abcd-1234-efgh-5678", "maxRows": 100 } }

要求

  • Node.js >= 16
  • 具有适当 Athena 和 S3 权限的 AWS 凭证
  • 用于存储查询结果的 S3 存储桶
  • 命名查询(可选)必须存在于指定的ATHENA_WORKGROUPAWS_REGION

执照

麻省理工学院

存储库

GitHub 存储库

ID: 0i7dhkex6t