关于 AWS Athena MCP Server
AWS Athena MCP Server 让 n8n AI Agent 检查 Athena 数据库并运行 SQL 查询。它提供数据库和表发现、架构元数据查询及执行查询的工具,并附有容器和 EKS 部署说明。
主要功能
- 01列出数据库和数据表
- 02获取表架构和元数据
- 03运行 SQL 查询并返回结果
- 04通过环境变量配置
- 05健康检查与监控
适用场景
- 01让 n8n Agent 探索可用的 Athena 数据库
- 02编写查询前检查表列信息
- 03在 n8n 中运行 SQL 并获取结果
- 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 能够:
- 列出可用的数据库和表
- 获取表架构和元数据
- 执行 SQL 查询并检索结果
功能
- 为 n8n AI Agent 提供与 Athena 交互的简易 API
- 内置运行状况检查和监控
- 可通过环境变量进行配置
- 容器化,便于部署
- 支持 Kubernetes,并提供示例 EKS 清单
前提条件
- 拥有 Athena 访问权限的 AWS 账户
- 具有适当权限的 AWS 凭证
- 用于本地开发/测试的 Docker
- 用于生产部署的 Kubernetes/EKS
环境变量
此服务使用以下环境变量进行配置:
| 变量 | 描述 | 默认值 |
|---|---|---|
AWS_REGION | Athena 的 AWS 区域 | us-east-1 |
ATHENA_CATALOG | Athena 目录名称 | 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(字符串,可选):目录名称
本地开发
安装
- 克隆仓库:
git clone https://github.com/yourusername/aws-athena-mcp-server.git
cd aws-athena-mcp-server
- 安装依赖:
pip install -r requirements.txt
- 配置 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/
- 运行服务:
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
部署步骤
- 构建 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
- 为 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
- 将 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
- 应用 Kubernetes 清单:
kubectl apply -f k8s/generated/serviceaccount.yaml
kubectl apply -f k8s/generated/deployment.yaml
kubectl apply -f k8s/generated/service.yaml
- 验证部署:
kubectl get pods -l app=athena-mcp-server
kubectl get service athena-mcp-server
- (可选)如果需要外部访问,请创建 ingress 资源。
与 n8n 集成
要在 n8n 中使用此 MCP 服务:
- 将 MCP 服务部署到你的基础设施
- 使用适当的系统提示词配置 n8n AI Agent 节点(参见
docs/n8n_system_prompt_template.md) - 从 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
贡献
欢迎贡献!请随时提交拉取请求。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。