Teradata数据库MCP服务器

Teradata数据库的模型上下文协议服务器,支持OAuth 2.1认证、多种认证机制和数据交互式可视化。

  • by arturborycki
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 arturborycki/mcp-teradata

使用说明

Teradata MCP服务器

用于Teradata数据库的模型上下文协议(MCP)服务器,具有OAuth 2.1身份验证、多种身份验证机制(TD2、LDAP、Kerberos)和交互式数据可视化。

特性

  • 多种身份验证机制 --TD2(默认)、LDAP、Kerberos、通过Teradata的JWT LOGMECH
  • OAuth 2.1 通过Keycloak集成、JWT验证、基于范围的授权
  • 受保护资源元数据 (符合RFC 9728)
  • 交互式可视化 --基于ECharts的MCP应用程序,有19种图表类型
  • 连接弹性 --指数回退自动重试
  • 非阻塞I/O --所有数据库操作都通过以下方式运行 asyncio.to_thread()
  • 按工具QueryBand --Teradata工作负载管理的审计跟踪

工具

查询工具

  • query --执行SQL查询,返回纯表格结果
  • visualize_query --通过MCP应用程序执行SQL并呈现交互式ECharts图表

架构工具

  • 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_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(简单绑定) authcid=user@domain.com
活动目录(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 Teradata连接URL(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 可流式传输http的路径 /mcp/

OAuth 2.1

变量 描述 默认值
OAUTH_ENABLED 启用OAuth身份验证 false
KEYCLOAK_URL 密钥斗篷服务器URL --
KEYCLOAK_REALM 密钥斗篷领域名称 --
KEYCLOAK_CLIENT_ID OAuth客户端ID --
KEYCLOAK_CLIENT_SECRET OAuth客户端机密 --
OAUTH_RESOURCE_SERVER_URL 资源服务器URL --
OAUTH_REQUIRED_SCOPES 必填范围(逗号分隔) --
OAUTH_VALIDATE_AUDIENCE 验证令牌受众 true
OAUTH_VALIDATE_SCOPES 验证令牌范围 true
OAUTH_REQUIRE_HTTPS OAuth URL需要HTTPS true
CORS_ALLOWED_ORIGINS CORS允许的来源 *

OAuth 授权范围

范围 描述
teradata:read 读取数据库资源的访问权限
teradata:write 对数据库资源的写访问权限
teradata:query 执行SQL查询
teradata:admin 管理权限
teradata:schema 架构管理操作

运输兼容性

传输 OAuth 发现端点 用例
标准 N/A N/A Claude Desktop,CLI客户端
上海证券交易所 完整 可用 Web应用程序
可流式传输的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服务器是否在TDGSS中配置了LDAP
  • 检查 authcid 格式与您的目录类型匹配
  • 转义密码中的特殊字符(@ → \@,空格→ 使用引号)

权限被拒绝错误:

  • 验证用户是否具有所需的OAuth作用域
  • 检查Keycloak角色分配
  • visualize_query 需要 teradata:query 范围(不仅 teradata:read)

调试日志记录:

export LOG_LEVEL=DEBUG
uv run teradata-mcp

许可证

MIT许可证。看 许可证 了解详情。

致谢