AWS Athena
Ejecutar consultas SQL en datos en Amazon S3 usando AWS Athena.
Documentación
@lishenxydlgzs/aws-athena-mcp
Un servidor de Protocolo de Contexto de Modelo (MCP) para ejecutar consultas de AWS Athena. Este servidor permite a los asistentes de IA ejecutar consultas SQL contra tus bases de datos de AWS Athena y recuperar resultados.
Uso
-
Configura las credenciales de AWS usando uno de los siguientes métodos:
- Configuración de AWS CLI
- Variables de entorno (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Rol de IAM (si se ejecuta en AWS)
-
Agrega el servidor a tu configuración de 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
}
}
}
}
- El servidor proporciona las siguientes herramientas:
-
run_query: Ejecuta una consulta SQL usando AWS Athena- Parámetros:
- database: La base de datos de Athena a consultar
- query: Consulta SQL a ejecutar
- maxRows: Número máximo de filas a devolver (predeterminado: 1000, máximo: 10000)
- Devuelve:
- Si la consulta se completa dentro del tiempo de espera: Resultados completos de la consulta
- Si se alcanza el tiempo de espera: Solo el queryExecutionId para recuperación posterior
- Parámetros:
-
get_status: Verifica el estado de una ejecución de consulta- Parámetros:
- queryExecutionId: El ID devuelto por run_query
- Devuelve:
- state: Estado de la consulta (QUEUED, RUNNING, SUCCEEDED, FAILED o CANCELLED)
- stateChangeReason: Razón del cambio de estado (si existe)
- submissionDateTime: Cuándo se envió la consulta
- completionDateTime: Cuándo se completó la consulta (si finalizó)
- statistics: Estadísticas de ejecución de la consulta (si están disponibles)
- Parámetros:
-
get_result: Recupera resultados para una consulta completada- Parámetros:
- queryExecutionId: El ID devuelto por run_query
- maxRows: Número máximo de filas a devolver (predeterminado: 1000, máximo: 10000)
- Devuelve:
- Resultados completos de la consulta si esta se completó exitosamente
- Error si la consulta falló o aún está en ejecución
- Parámetros:
-
list_saved_queries: Lista todas las consultas guardadas (con nombre) en Athena. -
Devuelve:
- Un arreglo de consultas guardadas con
id,nameydescriptionopcional - Las consultas se devuelven desde el
ATHENA_WORKGROUPyAWS_REGIONconfigurados
- Un arreglo de consultas guardadas con
-
run_saved_query: Ejecuta una consulta previamente guardada por su ID.
-
Parámetros:
namedQueryId: ID de la consulta guardadadatabaseOverride: Anulación opcional de la base de datos predeterminada de la consulta guardadamaxRows: Número máximo de filas a devolver (predeterminado: 1000)timeoutMs: Tiempo de espera en milisegundos (predeterminado: 60000)
-
Devuelve:
- Mismo comportamiento que
run_query: resultados completos o ID de ejecución
- Mismo comportamiento que
Ejemplos de Uso
Mostrar Todas las Bases de Datos
Mensaje al Asistente de IA:
List all databases in Athena
MCP parameter:
{
"database": "default",
"query": "SHOW DATABASES"
}
Listar Tablas en una Base de Datos
Mensaje al Asistente de IA:
Show me all tables in the default database
MCP parameter:
{
"database": "default",
"query": "SHOW TABLES"
}
Obtener Esquema de Tabla
Mensaje al Asistente de IA:
What's the schema of the asin_sitebestimg table?
MCP parameter:
{
"database": "default",
"query": "DESCRIBE default.asin_sitebestimg"
}
Vista Previa de Filas de Tabla
Mensaje al Asistente de IA:
Show some rows from my_database.mytable
MCP parameter:
{
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10",
"maxRows": 10
}
Consulta Avanzada con Filtrado y Agregación
Mensaje al Asistente de IA:
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
}
Verificación del Estado de la Consulta
{
"queryExecutionId": "12345-67890-abcdef"
}
Obtención de Resultados para una Consulta Completada
{
"queryExecutionId": "12345-67890-abcdef",
"maxRows": 10
}
Listado de Consultas Guardadas
{
"name": "list_saved_queries",
"arguments": {}
}
Ejecución de una Consulta Guardada
{
"name": "run_saved_query",
"arguments": {
"namedQueryId": "abcd-1234-efgh-5678",
"maxRows": 100
}
}
Requisitos
- Node.js >= 16
- Credenciales de AWS con permisos apropiados de Athena y S3
- Bucket de S3 para resultados de consultas
- Las consultas con nombre (opcional) deben existir en el
ATHENA_WORKGROUPyAWS_REGIONespecificados
Licencia
MIT