Teradata MCP Server

Interactúa con bases de datos Teradata para consultas de datos e inteligencia de negocios.

Documentación

Teradata MCP Server

Un servidor de Model Context Protocol (MCP) para la base de datos Teradata con autenticación OAuth 2.1, múltiples mecanismos de autenticación (TD2, LDAP, Kerberos) y visualización interactiva de datos.

Características

  • Múltiples mecanismos de autenticación — TD2 (predeterminado), LDAP, Kerberos, JWT mediante Teradata LOGMECH
  • OAuth 2.1 con integración de Keycloak, validación de JWT, autorización basada en ámbitos (scopes)
  • Metadatos de recursos protegidos (compatible con RFC 9728)
  • Visualización interactiva — Aplicación MCP basada en ECharts con 19 tipos de gráficos
  • Resiliencia de conexión — reintento automático con retroceso exponencial
  • E/S sin bloqueo — todas las operaciones de base de datos se ejecutan mediante asyncio.to_thread()
  • QueryBand por herramienta — pista de auditoría para la gestión de cargas de trabajo de Teradata

Herramientas

Herramientas de consulta

  • query — Ejecuta consultas SQL y devuelve resultados tabulares simples
  • visualize_query — Ejecuta SQL y renderiza gráficos interactivos de ECharts mediante la aplicación MCP

Herramientas de esquema

  • list_db — Lista todas las bases de datos
  • list_tables — Lista tablas/vistas en una base de datos
  • show_tables_details — Muestra nombres y tipos de columnas de una tabla

Herramientas de análisis

  • list_missing_values — Columnas con recuentos de valores NULL
  • list_negative_values — Columnas con recuentos de valores negativos
  • list_distinct_values — Recuentos de categorías distintas por columna
  • standard_deviation — Media y desviación estándar de una columna

Aplicación MCP — Visualización interactiva

La herramienta visualize_query renderiza los resultados como gráficos interactivos en el cliente MCP.

CategoríaGráficos
BarrasBásico, Agrupado, Apilado, Horizontal, Ordenado, Cascada, Redondeado, Polar
LíneasBásico, Suave, Área, Área apilada, Escalonado
CircularCircular, Dona, Rosa / Nightingale
DispersiónDispersión, Burbuja
MixtoBarras + Líneas

Inicio rápido

Instalación

git clone https://github.com/arturborycki/mcp-teradata.git
cd mcp-teradata
uv sync

Ejecutar con TD2 (autenticación estándar)

uv run teradata-mcp "teradatasql://user:password@host/database"

O mediante variable de entorno:

export DATABASE_URI="teradatasql://user:password@host/database"
uv run teradata-mcp

Configuración

Claude Desktop

Añade a tu claude_desktop_config.json:

TD2 (usuario/contraseña)

{
  "mcpServers": {
    "teradata": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/mcp-teradata",
        "run", "teradata-mcp"
      ],
      "env": {
        "DATABASE_URI": "teradatasql://user:password@host/database"
      }
    }
  }
}

Autenticación LDAP

{
  "mcpServers": {
    "teradata": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/mcp-teradata",
        "run", "teradata-mcp"
      ],
      "env": {
        "DATABASE_URI": "teradatasql://@host/database",
        "DB_LOGMECH": "LDAP",
        "DB_LOGDATA": "authcid=ldap_user password=ldap_password"
      }
    }
  }
}

El formato de authcid depende del directorio LDAP:

DirectorioFormato
Active Directory (Simple Bind)authcid=user@domain.com
Active Directory (DIGEST-MD5)authcid=DOMAIN\username
OpenLDAP / Sun DSauthcid=username

Autenticación Kerberos

{
  "mcpServers": {
    "teradata": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/mcp-teradata",
        "run", "teradata-mcp"
      ],
      "env": {
        "DATABASE_URI": "teradatasql://@host/database",
        "DB_LOGMECH": "KRB5"
      }
    }
  }
}

Configuración con OAuth habilitado

{
  "mcpServers": {
    "teradata": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/mcp-teradata",
        "run", "teradata-mcp"
      ],
      "env": {
        "DATABASE_URI": "teradatasql://user:password@host/database",
        "OAUTH_ENABLED": "true",
        "KEYCLOAK_URL": "https://your-keycloak.example.com",
        "KEYCLOAK_REALM": "teradata-realm",
        "KEYCLOAK_CLIENT_ID": "teradata-mcp",
        "KEYCLOAK_CLIENT_SECRET": "your-secret",
        "OAUTH_RESOURCE_SERVER_URL": "https://your-mcp-server.example.com"
      }
    }
  }
}

Variables de entorno

Conexión a la base de datos

VariableDescripciónPredeterminado
DATABASE_URIURL de conexión de Teradata (teradatasql://user:pass@host/db)—
DB_LOGMECHMecanismo de autenticación: TD2, LDAP, KRB5, TDNEGO, JWTTD2
DB_LOGDATACredenciales LDAP/JWT (p. ej., authcid=user password=pass)—
DB_SSL_MODEModo TLS: ALLOW, PREFER, REQUIRE, VERIFY-CA, VERIFY-FULL—
DB_ENCRYPT_DATAHabilitar cifrado de transportetrue

Resiliencia de conexión

VariableDescripciónPredeterminado
DB_MAX_RETRIESIntentos máximos de reconexión3
DB_INITIAL_BACKOFFRetraso inicial de retroceso (segundos)1.0
DB_MAX_BACKOFFRetraso máximo de retroceso (segundos)30.0

Transporte MCP

VariableDescripciónPredeterminado
MCP_TRANSPORTTransporte: stdio, sse, streamable-httpstdio
MCP_HOSTDirección de enlace para transportes HTTPlocalhost
MCP_PORTPuerto para transportes HTTP8000
MCP_PATHRuta para streamable-http/mcp/

OAuth 2.1

VariableDescripciónPredeterminado
OAUTH_ENABLEDHabilitar autenticación OAuthfalse
KEYCLOAK_URLURL del servidor Keycloak—
KEYCLOAK_REALMNombre del realm de Keycloak—
KEYCLOAK_CLIENT_IDID de cliente OAuth—
KEYCLOAK_CLIENT_SECRETSecreto de cliente OAuth—
OAUTH_RESOURCE_SERVER_URLURL del servidor de recursos—
OAUTH_REQUIRED_SCOPESÁmbitos requeridos (separados por comas)—
OAUTH_VALIDATE_AUDIENCEValidar audiencia del tokentrue
OAUTH_VALIDATE_SCOPESValidar ámbitos del tokentrue
OAUTH_REQUIRE_HTTPSRequerir HTTPS para URLs de OAuthtrue
CORS_ALLOWED_ORIGINSOrígenes permitidos para CORS*

Ámbitos de OAuth

ÁmbitoDescripción
teradata:readAcceso de lectura a los recursos de la base de datos
teradata:writeAcceso de escritura a los recursos de la base de datos
teradata:queryEjecutar consultas SQL
teradata:adminAcceso administrativo
teradata:schemaOperaciones de gestión de esquemas

Compatibilidad de transporte

TransporteOAuthEndpoints de descubrimientoCaso de uso
stdioN/DN/DClaude Desktop, clientes CLI
SSECompletoDisponiblesAplicaciones web
Streamable HTTPCompletoDisponiblesIntegraciones de API

Endpoints de descubrimiento (cuando OAuth está habilitado):

  • /.well-known/oauth-protected-resource — metadatos RFC 9728
  • /.well-known/mcp-server-info — capacidades de MCP
  • /health — verificación de estado

Implementación con Docker

Desarrollo

docker compose up -d

Con OAuth

docker compose -f docker-compose.oauth.yml up -d

Compilación

uv build

Solución de problemas

Problemas de conexión a la base de datos:

  • Verifica el formato de DATABASE_URI: teradatasql://user:pass@host/database
  • Comprueba la conectividad de red con el servidor Teradata
  • Para LDAP: asegúrate de que DB_LOGMECH=LDAP y DB_LOGDATA estén configurados correctamente
  • Los problemas de conexión se reintentan automáticamente (configurable mediante DB_MAX_RETRIES)

La autenticación LDAP falla:

  • Verifica que el servidor Teradata tenga LDAP configurado en TDGSS
  • Comprueba que el formato de authcid coincida con tu tipo de directorio
  • Escapa caracteres especiales en las contraseñas (@ → \@, espacios → usa comillas)

Errores de permiso denegado:

  • Verifica que el usuario tenga los ámbitos de OAuth requeridos
  • Comprueba las asignaciones de roles en Keycloak
  • visualize_query requiere el ámbito teradata:query (no solo teradata:read)

Registro de depuración:

export LOG_LEVEL=DEBUG
uv run teradata-mcp

Licencia

Licencia MIT. Consulta LICENSE para más detalles.

Agradecimientos