mcpField
A
AWS Athena MCP Server

AWS Athena MCP Server

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

关于 AWS Athena MCP Server

AWS Athena MCP Server 让 n8n AI Agent 检查 Athena 数据库并运行 SQL 查询。它提供数据库和表发现、架构元数据查询及执行查询的工具,并附有容器和 EKS 部署说明。

主要功能

  1. 01列出数据库和数据表
  2. 02获取表架构和元数据
  3. 03运行 SQL 查询并返回结果
  4. 04通过环境变量配置
  5. 05健康检查与监控

适用场景

  1. 01让 n8n Agent 探索可用的 Athena 数据库
  2. 02编写查询前检查表列信息
  3. 03在 n8n 中运行 SQL 并获取结果
  4. 04通过 Docker 或 EKS 部署服务

MCP 相关

向 MCP 客户端(包括 n8n AI Agent)提供 Athena 数据库发现、元数据查询和 SQL 执行工具。配置项支持 AWS 区域、目录、数据库、工作组及 S3 查询结果位置。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AWS Athena MCP 服务

一个用于 AWS Athena 的模型上下文协议(MCP)服务,旨在与 n8n AI Agent 集成。

概述

此 MCP 服务为 n8n AI Agent 提供了一种标准化的方式来查询 AWS Athena 并检索数据。它实现了模型上下文协议,使 n8n Agent 能够:

  1. 列出可用的数据库和表
  2. 获取表架构和元数据
  3. 执行 SQL 查询并检索结果

功能

  • 为 n8n AI Agent 提供与 Athena 交互的简易 API
  • 内置运行状况检查和监控
  • 可通过环境变量进行配置
  • 容器化,便于部署
  • 支持 Kubernetes,并提供示例 EKS 清单

前提条件

  • 拥有 Athena 访问权限的 AWS 账户
  • 具有适当权限的 AWS 凭证
  • 用于本地开发/测试的 Docker
  • 用于生产部署的 Kubernetes/EKS

环境变量

此服务使用以下环境变量进行配置:

变量描述默认值
AWS_REGIONAthena 的 AWS 区域us-east-1
ATHENA_CATALOGAthena 目录名称AwsDataCatalog
ATHENA_DATABASE要使用的默认数据库无
ATHENA_WORKGROUP要使用的 Athena 工作组primary
ATHENA_OUTPUT_LOCATION查询结果的 S3 位置无(必填)
HOST服务绑定的主机0.0.0.0
PORT侦听端口8050

可用工具

此 MCP 服务为 n8n AI Agent 提供以下工具:

execute_query

对 Athena 执行 SQL 查询并检索结果。

参数:

  • query(字符串,必填):要执行的 SQL 查询
  • database(字符串,可选):数据库名称
  • catalog(字符串,可选):目录名称
  • output_location(字符串,可选):结果的 S3 位置
  • workgroup(字符串,可选):工作组名称
  • max_results(整数,可选):要返回的最大结果数
  • max_wait_seconds(整数,可选):等待查询完成的最长时间
list_databases

列出目录中的可用数据库。

参数:

  • catalog(字符串,可选):目录名称
list_tables

列出指定数据库中的表。

参数:

  • database(字符串,必填):数据库名称
  • catalog(字符串,可选):目录名称
get_table_metadata

获取指定表的元数据,包括列定义。

参数:

  • table(字符串,必填):表名称
  • database(字符串,必填):数据库名称
  • catalog(字符串,可选):目录名称

本地开发

安装
  1. 克隆仓库:
git clone https://github.com/yourusername/aws-athena-mcp-server.git
cd aws-athena-mcp-server
  1. 安装依赖:
pip install -r requirements.txt
  1. 配置 AWS 凭证:
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=your_region
export ATHENA_OUTPUT_LOCATION=s3://your-bucket/folder/
  1. 运行服务:
python main.py

服务将在 http://localhost:8050 上提供。

Docker 设置

构建 Docker 镜像
docker build -t athena-mcp-server:latest .
运行 Docker 容器
docker run -p 8050:8050 \
  -e AWS_REGION=us-east-1 \
  -e ATHENA_OUTPUT_LOCATION=s3://your-bucket/folder/ \
  -e AWS_ACCESS_KEY_ID=your_access_key \
  -e AWS_SECRET_ACCESS_KEY=your_secret_key \
  athena-mcp-server:latest

部署到 AWS EKS

前提条件
  • 已配置适当权限的 AWS CLI
  • 已安装 kubectl,并配置为连接到 EKS 集群
  • 已安装用于构建镜像的 Docker
部署步骤
  1. 构建 Docker 镜像并推送到 ECR:
# Create ECR repository if it doesn't exist
aws ecr create-repository --repository-name athena-mcp-server

# Get ECR login command
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com

# Build and tag the image
docker build -t ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/athena-mcp-server:latest .

# Push the image to ECR
docker push ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/athena-mcp-server:latest
  1. 为 EKS 服务账户创建 IAM 角色:
# Create IAM policy
aws iam create-policy \
  --policy-name AthenaQueryPolicy \
  --policy-document file://k8s/aws-policy.json

# Create IAM role for service account (IRSA)
eksctl create iamserviceaccount \
  --name athena-mcp-server \
  --namespace default \
  --cluster your-eks-cluster \
  --attach-policy-arn arn:aws:iam::${AWS_ACCOUNT_ID}:policy/AthenaQueryPolicy \
  --approve \
  --override-existing-serviceaccounts
  1. 将 Kubernetes 清单中的占位符替换为实际值:
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
export AWS_REGION=us-east-1
export ATHENA_DEFAULT_DATABASE=your_database
export ATHENA_WORKGROUP=primary
export ATHENA_OUTPUT_LOCATION=s3://your-bucket/athena-results/

# Replace variables in YAML files
envsubst < k8s/deployment.yaml > k8s/generated/deployment.yaml
envsubst < k8s/serviceaccount.yaml > k8s/generated/serviceaccount.yaml
  1. 应用 Kubernetes 清单:
kubectl apply -f k8s/generated/serviceaccount.yaml
kubectl apply -f k8s/generated/deployment.yaml
kubectl apply -f k8s/generated/service.yaml
  1. 验证部署:
kubectl get pods -l app=athena-mcp-server
kubectl get service athena-mcp-server
  1. (可选)如果需要外部访问,请创建 ingress 资源。

与 n8n 集成

要在 n8n 中使用此 MCP 服务:

  1. 将 MCP 服务部署到你的基础设施
  2. 使用适当的系统提示词配置 n8n AI Agent 节点(参见 docs/n8n_system_prompt_template.md)
  3. 从 n8n 连接到 MCP 服务端点

n8n AI Agent 系统提示词模板

使用 docs/n8n_system_prompt_template.md 中的模板作为 n8n AI Agent 节点的系统提示词。此模板可指导 AI:

  • 理解数据库架构
  • 编写高效的 SQL 查询
  • 通过 MCP 服务执行查询
  • 清晰地呈现结果

根据你的 Athena 数据库结构和常见查询模式自定义模板。

文档

更多文档请参阅 docs/ 目录:

  • n8n_system_prompt_template.md:n8n AI Agent 系统提示词模板
  • implementation_guide.md:详细的实施指南
  • architecture.md:架构图及说明
  • troubleshooting.md:常见问题的解决方案
  • n8n_integration_example.md:n8n 工作流示例
  • examples/:包含特定使用场景提示词示例的目录

许可证

MIT

贡献

欢迎贡献!请随时提交拉取请求。

评论

支持 Markdown

第一次接触 MCP?

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

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