返回市场
亚马逊 Athena MCP

亚马逊 Athena MCP

作者:lishenxydlgzs38 星标更新:2025-06-05

项目介绍

@lishenxydlgzs/aws-athena-mcp

smithery 徽章

这是一个用于执行 AWS Athena 查询的 Model Context Protocol (MCP) 服务器。此服务器使AI助手能够对您的AWS Athena数据库执行SQL查询并检索结果。

<a href="https://glama.ai/mcp/servers/0i7dhkex6t"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=538135596,727623483&fm=3081&app=3081&f=PNG?w=760&h=400" alt="aws-athena-mcp MCP 服务器" /> </a>

使用方法

  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": {
        // 必需
        "OUTPUT_S3_PATH": "s3://your-bucket/athena-results/",
        
        // 可选的AWS配置
        "AWS_REGION": "us-east-1",                    // 默认:AWS CLI默认区域
        "AWS_PROFILE": "default",                     // 默认:'default' 配置文件
        "AWS_ACCESS_KEY_ID": "",                      // 可选:AWS访问密钥
        "AWS_SECRET_ACCESS_KEY": "",                  // 可选:AWS秘密密钥
        "AWS_SESSION_TOKEN": "",                      // 可选:AWS会话令牌
        
        // 可选的服务器配置
        "ATHENA_WORKGROUP": "default_workgroup",      // 可选:指定Athena工作组
        "QUERY_TIMEOUT_MS": "300000",                 // 默认:5分钟(300000毫秒)
        "MAX_RETRIES": "100",                         // 默认:100次尝试
        "RETRY_DELAY_MS": "500"                       // 默认:重试之间500毫秒
      }
    }
  }
}
  1. 该服务器提供以下工具:
  • run_query:使用AWS Athena执行SQL查询

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

    • 参数:
      • queryExecutionId:从run_query返回的ID
    • 返回值:
      • state:查询状态(排队、运行、成功、失败或取消)
      • stateChangeReason:状态变化的原因(如果有)
      • submissionDateTime:查询提交的时间
      • completionDateTime:查询完成的时间(如果已完成)
      • statistics:查询执行统计信息(如果可用)
  • 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助手的消息: 列出Athena中的所有数据库

MCP参数:

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

列出数据库中的表

发送给AI助手的消息: 显示默认数据库中的所有表

MCP参数:

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

获取表结构

发送给AI助手的消息: asin_sitebestimg表的结构是什么?

MCP参数:

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

表行预览

发送给AI助手的消息: 展示my_database.mytable的一些行

MCP参数:

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

带过滤和聚合的高级查询

发送给AI助手的消息: 按类别查找在库产品的平均价格

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

许可证

MIT

仓库

GitHub 仓库