AWS Athena

Ejecutar consultas SQL en datos en Amazon S3 usando AWS Athena.

Documentación

@lishenxydlgzs/aws-athena-mcp

LightNow

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.

aws-athena-mcp MCP server

Uso

  1. 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)
  2. 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
      }
    }
  }
}
  1. 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
  • 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)
  • 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
  • list_saved_queries: Lista todas las consultas guardadas (con nombre) en Athena.

  • Devuelve:

    • Un arreglo de consultas guardadas con id, name y description opcional
    • Las consultas se devuelven desde el ATHENA_WORKGROUP y AWS_REGION configurados
  • run_saved_query: Ejecuta una consulta previamente guardada por su ID.

  • Parámetros:

    • namedQueryId: ID de la consulta guardada
    • databaseOverride: Anulación opcional de la base de datos predeterminada de la consulta guardada
    • maxRows: 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

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_WORKGROUP y AWS_REGION especificados

Licencia

MIT

Repositorio

Repositorio de GitHub