Teradata MCP Server

Interaja com bancos de dados Teradata para consultas de dados e inteligência de negócios.

Documentação

Servidor MCP Teradata

Um servidor Model Context Protocol (MCP) para banco de dados Teradata com autenticação OAuth 2.1, múltiplos mecanismos de autenticação (TD2, LDAP, Kerberos) e visualização interativa de dados.

Recursos

  • Múltiplos Mecanismos de Autenticação — TD2 (padrão), LDAP, Kerberos, JWT via Teradata LOGMECH
  • OAuth 2.1 com integração Keycloak, validação JWT, autorização baseada em escopos
  • Metadados de Recursos Protegidos (compatível com RFC 9728)
  • Visualização Interativa — App MCP baseado em ECharts com 19 tipos de gráficos
  • Resiliência de Conexão — nova tentativa automática com backoff exponencial
  • I/O Não Bloqueante — todas as operações de banco de dados executadas via asyncio.to_thread()
  • QueryBand por Ferramenta — trilha de auditoria para gerenciamento de carga de trabalho Teradata

Ferramentas

Ferramentas de Consulta

  • query — Executa consultas SQL, retorna resultados tabulares simples
  • visualize_query — Executa SQL e renderiza gráficos ECharts interativos via App MCP

Ferramentas de Esquema

  • list_db — Lista todos os bancos de dados
  • list_tables — Lista tabelas/visões em um banco de dados
  • show_tables_details — Mostra nomes de colunas e tipos de uma tabela

Ferramentas de Análise

  • list_missing_values — Colunas com contagens de valores NULL
  • list_negative_values — Colunas com contagens de valores negativos
  • list_distinct_values — Contagens de categorias distintas por coluna
  • standard_deviation — Média e desvio padrão para uma coluna

App MCP — Visualização Interativa

A ferramenta visualize_query renderiza resultados como gráficos interativos no cliente MCP.

CategoriaGráficos
BarraBásico, Agrupado, Empilhado, Horizontal, Ordenado, Cascata, Arredondado, Polar
LinhaBásico, Suave, Área, Área Empilhada, Degrau
PizzaPizza, Rosca, Rosa / Nightingale
DispersãoDispersão, Bolha
MistoBarra + Linha

Início Rápido

Instalação

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

Executar com TD2 (Autenticação Padrão)

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

Ou via variável de ambiente:

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

Configuração

Claude Desktop

Adicione ao seu claude_desktop_config.json:

TD2 (Usuário/Senha)

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

Autenticação 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"
      }
    }
  }
}

O formato authcid depende do diretório LDAP:

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

Autenticação Kerberos

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

Configuração Habilitada para OAuth

{
  "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"
      }
    }
  }
}

Variáveis de Ambiente

Conexão com Banco de Dados

VariávelDescriçãoPadrão
DATABASE_URIURL de conexão Teradata (teradatasql://user:pass@host/db)—
DB_LOGMECHMecanismo de autenticação: TD2, LDAP, KRB5, TDNEGO, JWTTD2
DB_LOGDATACredenciais LDAP/JWT (ex.: authcid=user password=pass)—
DB_SSL_MODEModo TLS: ALLOW, PREFER, REQUIRE, VERIFY-CA, VERIFY-FULL—
DB_ENCRYPT_DATAHabilita criptografia de transportetrue

Resiliência de Conexão

VariávelDescriçãoPadrão
DB_MAX_RETRIESMáximo de tentativas de reconexão3
DB_INITIAL_BACKOFFAtraso inicial de backoff (segundos)1.0
DB_MAX_BACKOFFAtraso máximo de backoff (segundos)30.0

Transporte MCP

VariávelDescriçãoPadrão
MCP_TRANSPORTTransporte: stdio, sse, streamable-httpstdio
MCP_HOSTEndereço de bind para transportes HTTPlocalhost
MCP_PORTPorta para transportes HTTP8000
MCP_PATHCaminho para streamable-http/mcp/

OAuth 2.1

VariávelDescriçãoPadrão
OAUTH_ENABLEDHabilita autenticação OAuthfalse
KEYCLOAK_URLURL do servidor Keycloak—
KEYCLOAK_REALMNome do realm Keycloak—
KEYCLOAK_CLIENT_IDID do cliente OAuth—
KEYCLOAK_CLIENT_SECRETSegredo do cliente OAuth—
OAUTH_RESOURCE_SERVER_URLURL do servidor de recursos—
OAUTH_REQUIRED_SCOPESEscopos necessários (separados por vírgula)—
OAUTH_VALIDATE_AUDIENCEValidar audiência do tokentrue
OAUTH_VALIDATE_SCOPESValidar escopos do tokentrue
OAUTH_REQUIRE_HTTPSExigir HTTPS para URLs OAuthtrue
CORS_ALLOWED_ORIGINSOrigens permitidas para CORS*

Escopos OAuth

EscopoDescrição
teradata:readAcesso de leitura aos recursos do banco de dados
teradata:writeAcesso de escrita aos recursos do banco de dados
teradata:queryExecutar consultas SQL
teradata:adminAcesso administrativo
teradata:schemaOperações de gerenciamento de esquema

Compatibilidade de Transporte

TransporteOAuthEndpoints de DescobertaCaso de Uso
stdioN/AN/AClaude Desktop, clientes CLI
SSECompletoDisponívelAplicações web
HTTP StreamableCompletoDisponívelIntegrações de API

Endpoints de descoberta (quando OAuth habilitado):

  • /.well-known/oauth-protected-resource — metadados RFC 9728
  • /.well-known/mcp-server-info — capacidades MCP
  • /health — verificação de saúde

Implantação Docker

Desenvolvimento

docker compose up -d

Com OAuth

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

Build

uv build

Solução de Problemas

Problemas de conexão com banco de dados:

  • Verifique o formato DATABASE_URI: teradatasql://user:pass@host/database
  • Verifique a conectividade de rede com o servidor Teradata
  • Para LDAP: garanta que DB_LOGMECH=LDAP e DB_LOGDATA estejam configurados corretamente
  • Problemas de conexão são automaticamente tentados novamente (configurável via DB_MAX_RETRIES)

Falha na autenticação LDAP:

  • Verifique se o servidor Teradata tem LDAP configurado no TDGSS
  • Verifique se o formato authcid corresponde ao tipo do seu diretório
  • Escape caracteres especiais em senhas (@ → \@, espaços → use aspas)

Erros de permissão negada:

  • Verifique se o usuário tem os escopos OAuth necessários
  • Verifique as atribuições de papéis no Keycloak
  • visualize_query requer escopo teradata:query (não apenas teradata:read)

Registro de depuração:

export LOG_LEVEL=DEBUG
uv run teradata-mcp

Licença

Licença MIT. Consulte LICENSE para detalhes.

Agradecimentos