mcpField
@
@lishenxydlgzs/aws-athena-mcp

@lishenxydlgzs/aws-athena-mcp

本地服务
github.com/lishenxydlgzs云与基础设施418 周前更新

关于 @lishenxydlgzs/aws-athena-mcp

@lishenxydlgzs/aws-athena-mcp 是一个用于执行 AWS Athena 查询的 MCP 服务,使 AI 助手能够对 Athena 数据库运行 SQL 并获取结果。它支持保存查询的列出与执行,适合需要通过自然语言分析 Athena 数据的用户。

主要功能

  1. 01执行 SQL 查询并返回结果
  2. 02查询执行状态检查
  3. 03获取已完成查询的结果
  4. 04列出并运行已保存的查询
  5. 05可设置最大返回行数

适用场景

  1. 01通过 AI 助手浏览数据库与表结构
  2. 02预览表数据或执行聚合分析
  3. 03查询长时间运行时跟踪执行状态

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 run_query、get_status、get_result、list_saved_queries 和 run_saved_query 等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aws-athena": {
"command": "npx",
"args": [
"-y",
"@lishenxydlgzs/aws-athena-mcp"
],
"env": {
"OUTPUT_S3_PATH": "<OUTPUT_S3_PATH>",
"AWS_REGION": "<AWS_REGION>",
"AWS_PROFILE": "<AWS_PROFILE>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"ATHENA_WORKGROUP": "<ATHENA_WORKGROUP>",
"QUERY_TIMEOUT_MS": "<QUERY_TIMEOUT_MS>",
"MAX_RETRIES": "<MAX_RETRIES>",
"RETRY_DELAY_MS": "<RETRY_DELAY_MS>"
}
}
}
}
启动命令npx -y @lishenxydlgzs/aws-athena-mcp
需要配置的环境变量
OUTPUT_S3_PATH
AWS_REGION
AWS_PROFILE
AWS_ACCESS_KEY_ID密钥
AWS_SECRET_ACCESS_KEY密钥
AWS_SESSION_TOKEN密钥
ATHENA_WORKGROUP
QUERY_TIMEOUT_MS
MAX_RETRIES
RETRY_DELAY_MS

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@lishenxydlgzs/aws-athena-mcp

工具

5

收录的工具列表 · 更新于 3 周前

参数类型必填说明
querystring是要执行的 SQL 查询
maxRowsnumber否要返回的最大行数(默认值:1000)
databasestring是要查询的 Athena 数据库
timeoutMsnumber否超时时间(毫秒)(默认值:60000)

详细介绍

@lishenxydlgzs/aws-athena-mcp

LightNow

用于运行 AWS Athena 查询的模型上下文协议(MCP)服务。此服务可让 AI 助手对您的 AWS Athena 数据库执行 SQL 查询并获取结果。

aws-athena-mcp MCP server

用法

  1. 使用以下任一方法配置 AWS 凭证:

    • AWS CLI 配置
    • 环境变量(AWS_ACCESS_KEY_ID、AWS_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 查询

    • 参数:
      • database:要查询的 Athena 数据库
      • query:要执行的 SQL 查询
      • maxRows:要返回的最大行数(默认值:1000,最大值:10000)
    • 返回:
      • 如果查询在超时前完成:完整查询结果
      • 如果达到超时时间:仅返回供后续检索使用的 queryExecutionId
  • get_status:检查查询执行状态

    • 参数:
      • queryExecutionId:run_query 返回的 ID
    • 返回:
      • state:查询状态(QUEUED、RUNNING、SUCCEEDED、FAILED 或 CANCELLED)
      • stateChangeReason:状态变更原因(如果有)
      • submissionDateTime:查询提交时间
      • completionDateTime:查询完成时间(如果已完成)
      • statistics:查询执行统计信息(如果有)
  • get_result:检索已完成查询的结果

    • 参数:
      • queryExecutionId:run_query 返回的 ID
      • maxRows:要返回的最大行数(默认值:1000,最大值:10000)
    • 返回:
      • 如果查询已成功完成,则返回完整查询结果
      • 如果查询失败或仍在运行,则返回错误
  • list_saved_queries:列出 Athena 中所有已保存(命名)的查询。

  • 返回:

    • 包含 id、name 和可选 description 的已保存查询数组
    • 查询来自配置的 ATHENA_WORKGROUP 和 AWS_REGION
  • run_saved_query:根据 ID 运行先前保存的查询。

  • 参数:

    • namedQueryId:已保存查询的 ID
    • databaseOverride:可选,用于覆盖已保存查询的默认数据库
    • maxRows:要返回的最大行数(默认值:1000)
    • timeoutMs:超时时间(毫秒,默认值:60000)
  • 返回:

    • 行为与 run_query 相同:返回完整结果或执行 ID

用法示例

显示所有数据库

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

MCP parameter:

{
  "database": "default",
  "query": "SHOW DATABASES"
}
列出数据库中的表

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

MCP parameter:

{
  "database": "default",
  "query": "SHOW TABLES"
}
获取表结构

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

MCP parameter:

{
  "database": "default",
  "query": "DESCRIBE default.asin_sitebestimg"
}
预览表行

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

MCP parameter:

{
  "database": "my_database",
  "query": "SELECT * FROM my_table LIMIT 10",
  "maxRows": 10
}
使用筛选和聚合的高级查询

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

MCP parameter:

{
  "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_WORKGROUP 和 AWS_REGION 中

许可证

MIT

仓库

GitHub 仓库

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。