Skip to main content
Glama
arturborycki

Teradata MCP Server

by arturborycki

Teradata MCP Server

Сервер протокола контекста модели (MCP) для базы данных Teradata с аутентификацией OAuth 2.1, поддержкой различных механизмов аутентификации (TD2, LDAP, Kerberos) и интерактивной визуализацией данных.

Возможности

  • Множество механизмов аутентификации — TD2 (по умолчанию), LDAP, Kerberos, JWT через Teradata LOGMECH

  • OAuth 2.1 с интеграцией Keycloak, проверкой JWT, авторизацией на основе областей (scopes)

  • Метаданные защищенных ресурсов (соответствие RFC 9728)

  • Интерактивная визуализация — приложение MCP на базе ECharts с 19 типами диаграмм

  • Устойчивость соединений — автоматический повтор попыток с экспоненциальной задержкой

  • Неблокирующий ввод-вывод — все операции с БД выполняются через asyncio.to_thread()

  • QueryBand для каждого инструмента — журнал аудита для управления рабочей нагрузкой Teradata

Инструменты

Инструменты запросов

  • query — выполнение SQL-запросов, возврат результатов в виде таблицы

  • visualize_query — выполнение SQL и отрисовка интерактивных диаграмм ECharts через приложение MCP

Инструменты схемы

  • list_db — список всех баз данных

  • list_tables — список таблиц/представлений в базе данных

  • show_tables_details — отображение имен столбцов и типов данных для таблицы

Инструменты анализа

  • list_missing_values — столбцы с количеством значений NULL

  • list_negative_values — столбцы с количеством отрицательных значений

  • list_distinct_values — количество уникальных категорий для каждого столбца

  • standard_deviation — среднее значение и стандартное отклонение для столбца

Приложение MCP — Интерактивная визуализация

Инструмент visualize_query отображает результаты в виде интерактивных диаграмм в клиенте MCP.

Категория

Диаграммы

Столбчатые

Базовая, Группированная, С накоплением, Горизонтальная, Сортированная, Водопадная, Скругленная, Полярная

Линейные

Базовая, Сглаженная, Область, Область с накоплением, Ступенчатая

Круговые

Круговая, Кольцевая, Роза / Соловья

Точечные

Точечная, Пузырьковая

Смешанные

Столбчатая + Линейная

Быстрый старт

Установка

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

Запуск с TD2 (Стандартная аутентификация)

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

Или через переменную окружения:

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

Конфигурация

Claude Desktop

Добавьте в ваш claude_desktop_config.json:

TD2 (Имя пользователя/Пароль)

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

Аутентификация 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"
      }
    }
  }
}

Формат authcid зависит от каталога LDAP:

Каталог

Формат

Active Directory (Simple Bind)

authcid=user@domain.com

Active Directory (DIGEST-MD5)

authcid=DOMAIN\username

OpenLDAP / Sun DS

authcid=username

Аутентификация Kerberos

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

Конфигурация с поддержкой 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"
      }
    }
  }
}

Переменные окружения

Подключение к базе данных

Переменная

Описание

По умолчанию

DATABASE_URI

URL подключения к Teradata (teradatasql://user:pass@host/db)

DB_LOGMECH

Механизм аутентификации: TD2, LDAP, KRB5, TDNEGO, JWT

TD2

DB_LOGDATA

Учетные данные LDAP/JWT (например, authcid=user password=pass)

DB_SSL_MODE

Режим TLS: ALLOW, PREFER, REQUIRE, VERIFY-CA, VERIFY-FULL

DB_ENCRYPT_DATA

Включить шифрование передачи данных

true

Устойчивость соединений

Переменная

Описание

По умолчанию

DB_MAX_RETRIES

Макс. количество попыток переподключения

3

DB_INITIAL_BACKOFF

Начальная задержка повтора (секунды)

1.0

DB_MAX_BACKOFF

Макс. задержка повтора (секунды)

30.0

Транспорт MCP

Переменная

Описание

По умолчанию

MCP_TRANSPORT

Транспорт: stdio, sse, streamable-http

stdio

MCP_HOST

Адрес привязки для HTTP-транспорта

localhost

MCP_PORT

Порт для HTTP-транспорта

8000

MCP_PATH

Путь для streamable-http

/mcp/

OAuth 2.1

Переменная

Описание

По умолчанию

OAUTH_ENABLED

Включить аутентификацию OAuth

false

KEYCLOAK_URL

URL сервера Keycloak

KEYCLOAK_REALM

Имя области (realm) Keycloak

KEYCLOAK_CLIENT_ID

ID клиента OAuth

KEYCLOAK_CLIENT_SECRET

Секрет клиента OAuth

OAUTH_RESOURCE_SERVER_URL

URL сервера ресурсов

OAUTH_REQUIRED_SCOPES

Требуемые области (через запятую)

OAUTH_VALIDATE_AUDIENCE

Проверять аудиторию токена

true

OAUTH_VALIDATE_SCOPES

Проверять области токена

true

OAUTH_REQUIRE_HTTPS

Требовать HTTPS для URL OAuth

true

CORS_ALLOWED_ORIGINS

Разрешенные источники CORS

*

Области OAuth (Scopes)

Область

Описание

teradata:read

Доступ на чтение к ресурсам БД

teradata:write

Доступ на запись к ресурсам БД

teradata:query

Выполнение SQL-запросов

teradata:admin

Административный доступ

teradata:schema

Операции управления схемой

Совместимость транспорта

Транспорт

OAuth

Конечные точки обнаружения

Вариант использования

stdio

Н/Д

Н/Д

Claude Desktop, CLI-клиенты

SSE

Полная

Доступны

Веб-приложения

Streamable HTTP

Полная

Доступны

Интеграции API

Конечные точки обнаружения (при включенном OAuth):

  • /.well-known/oauth-protected-resource — метаданные RFC 9728

  • /.well-known/mcp-server-info — возможности MCP

  • /health — проверка работоспособности

Развертывание в Docker

Разработка

docker compose up -d

С OAuth

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

Сборка

uv build

Устранение неполадок

Проблемы с подключением к базе данных:

  • Проверьте формат DATABASE_URI: teradatasql://user:pass@host/database

  • Проверьте сетевое подключение к серверу Teradata

  • Для LDAP: убедитесь, что DB_LOGMECH=LDAP и DB_LOGDATA установлены правильно

  • Проблемы с подключением автоматически повторяются (настраивается через DB_MAX_RETRIES)

Ошибка аутентификации LDAP:

  • Убедитесь, что на сервере Teradata настроен LDAP в TDGSS

  • Проверьте, что формат authcid соответствует типу вашего каталога

  • Экранируйте специальные символы в паролях (@\@, пробелы → используйте кавычки)

Ошибки отказа в доступе (Permission denied):

  • Убедитесь, что у пользователя есть необходимые области OAuth

  • Проверьте назначение ролей в Keycloak

  • visualize_query требует область teradata:query (а не только teradata:read)

Отладочное логирование:

export LOG_LEVEL=DEBUG
uv run teradata-mcp

Лицензия

Лицензия MIT. Подробности см. в файле LICENSE.

Благодарности

Install Server
A
security – no known vulnerabilities
F
license - not found
B
quality - B tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arturborycki/mcp-teradata'

If you have feedback or need assistance with the MCP directory API, please join our Discord server