Teradata MCP Server
Interactúa con bases de datos Teradata para consultas de datos e inteligencia de negocios.
GitHub
9
Prueba este MCPPatrocinadoDocumentació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 simplesvisualize_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 datoslist_tables— Lista tablas/vistas en una base de datosshow_tables_details— Muestra nombres y tipos de columnas de una tabla
Herramientas de análisis
list_missing_values— Columnas con recuentos de valores NULLlist_negative_values— Columnas con recuentos de valores negativoslist_distinct_values— Recuentos de categorías distintas por columnastandard_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ía | Gráficos |
|---|---|
| Barras | Básico, Agrupado, Apilado, Horizontal, Ordenado, Cascada, Redondeado, Polar |
| Líneas | Básico, Suave, Área, Área apilada, Escalonado |
| Circular | Circular, Dona, Rosa / Nightingale |
| Dispersión | Dispersión, Burbuja |
| Mixto | Barras + 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:
| Directorio | Formato |
|---|---|
| Active Directory (Simple Bind) | authcid=user@domain.com |
| Active Directory (DIGEST-MD5) | authcid=DOMAIN\username |
| OpenLDAP / Sun DS | authcid=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
| Variable | Descripción | Predeterminado |
|---|---|---|
DATABASE_URI | URL de conexión de Teradata (teradatasql://user:pass@host/db) | — |
DB_LOGMECH | Mecanismo de autenticación: TD2, LDAP, KRB5, TDNEGO, JWT | TD2 |
DB_LOGDATA | Credenciales LDAP/JWT (p. ej., authcid=user password=pass) | — |
DB_SSL_MODE | Modo TLS: ALLOW, PREFER, REQUIRE, VERIFY-CA, VERIFY-FULL | — |
DB_ENCRYPT_DATA | Habilitar cifrado de transporte | true |
Resiliencia de conexión
| Variable | Descripción | Predeterminado |
|---|---|---|
DB_MAX_RETRIES | Intentos máximos de reconexión | 3 |
DB_INITIAL_BACKOFF | Retraso inicial de retroceso (segundos) | 1.0 |
DB_MAX_BACKOFF | Retraso máximo de retroceso (segundos) | 30.0 |
Transporte MCP
| Variable | Descripción | Predeterminado |
|---|---|---|
MCP_TRANSPORT | Transporte: stdio, sse, streamable-http | stdio |
MCP_HOST | Dirección de enlace para transportes HTTP | localhost |
MCP_PORT | Puerto para transportes HTTP | 8000 |
MCP_PATH | Ruta para streamable-http | /mcp/ |
OAuth 2.1
| Variable | Descripción | Predeterminado |
|---|---|---|
OAUTH_ENABLED | Habilitar autenticación OAuth | false |
KEYCLOAK_URL | URL del servidor Keycloak | — |
KEYCLOAK_REALM | Nombre del realm de Keycloak | — |
KEYCLOAK_CLIENT_ID | ID de cliente OAuth | — |
KEYCLOAK_CLIENT_SECRET | Secreto de cliente OAuth | — |
OAUTH_RESOURCE_SERVER_URL | URL del servidor de recursos | — |
OAUTH_REQUIRED_SCOPES | Ámbitos requeridos (separados por comas) | — |
OAUTH_VALIDATE_AUDIENCE | Validar audiencia del token | true |
OAUTH_VALIDATE_SCOPES | Validar ámbitos del token | true |
OAUTH_REQUIRE_HTTPS | Requerir HTTPS para URLs de OAuth | true |
CORS_ALLOWED_ORIGINS | Orígenes permitidos para CORS | * |
Ámbitos de OAuth
| Ámbito | Descripción |
|---|---|
teradata:read | Acceso de lectura a los recursos de la base de datos |
teradata:write | Acceso de escritura a los recursos de la base de datos |
teradata:query | Ejecutar consultas SQL |
teradata:admin | Acceso administrativo |
teradata:schema | Operaciones de gestión de esquemas |
Compatibilidad de transporte
| Transporte | OAuth | Endpoints de descubrimiento | Caso de uso |
|---|---|---|---|
| stdio | N/D | N/D | Claude Desktop, clientes CLI |
| SSE | Completo | Disponibles | Aplicaciones web |
| Streamable HTTP | Completo | Disponibles | Integraciones 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=LDAPyDB_LOGDATAesté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
authcidcoincida 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_queryrequiere el ámbitoteradata:query(no soloteradata:read)
Registro de depuración:
export LOG_LEVEL=DEBUG
uv run teradata-mcp
Licencia
Licencia MIT. Consulta LICENSE para más detalles.