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许可证。看 许可证 了解详情。
