这是一个通过 Teradata 提供安全数据库交互和商业智能能力的模型上下文协议(MCP)服务器实现。该服务器支持运行 SQL 查询、分析业务数据以及具有企业级 OAuth 2.1 身份验证的工作负载管理。
服务器提供了全面的数据库和工作负载管理工具:
query
teradata:query, teradata:readquery (字符串):要执行的 SELECT SQL 查询list_db
teradata:readlist_tables
teradata:readdb_name (字符串):数据库名称show_tables_details
teradata:readtable_name (字符串):表名db_name (字符串):数据库名称list_missing_values
teradata:readlist_negative_values
teradata:readlist_distinct_values
teradata:readstandard_deviation
teradata:read# 克隆仓库
git clone https://github.com/arturborycki/mcp-teradata.git
cd mcp-teradata
# 安装依赖
uv install
# 使用数据库连接运行
uv run teradata-mcp "teradatasql://user:password@host/database"
# 复制环境配置
cp .env.example .env
# 编辑 .env 文件以添加您的 OAuth 设置
OAUTH_ENABLED=true
KEYCLOAK_URL=https://your-keycloak.com
KEYCLOAK_REALM=teradata-realm
KEYCLOAK_CLIENT_ID=teradata-mcp
KEYCLOAK_CLIENT_SECRET=your-secret
OAUTH_RESOURCE_SERVER_URL=https://your-mcp-server.com
# 使用 OAuth 运行
uv run teradata-mcp "teradatasql://user:password@host/database"
DATABASE_URI=teradatasql://username:password@hostname/database
# 数据库连接的最大重试次数(默认:1)
TOOL_RETRY_MAX_ATTEMPTS=1
# 重试之间的延迟时间(秒,默认:1.0)
TOOL_RETRY_DELAY_SECONDS=1.0
# 启用 OAuth 身份验证
OAUTH_ENABLED=true
# Keycloak 配置
KEYCLOAK_URL=https://keycloak.example.com
KEYCLOAK_REALM=teradata-realm
KEYCLOAK_CLIENT_ID=teradata-mcp
KEYCLOAK_CLIENT_SECRET=your-client-secret
# 资源服务器标识
OAUTH_RESOURCE_SERVER_URL=https://your-mcp-server.com
# 可选:所需范围
OAUTH_REQUIRED_SCOPES=teradata:read,teradata:query
# 安全设置
OAUTH_VALIDATE_AUDIENCE=true
OAUTH_VALIDATE_SCOPES=true
OAUTH_REQUIRE_HTTPS=true
teradata:read - 数据库资源的读取权限teradata:write - 数据库资源的写入权限teradata:query - 执行 SQL 查询teradata:admin - 管理权限(TDWM,用户管理)teradata:schema - 架构管理操作OAuth 2.1 身份验证支持所有 MCP 传输方法:
| 传输方式 | OAuth 支持 | 发现端点 | 备注 |
|---|---|---|---|
| SSE | ✅ 完整支持 | ✅ 可用 | OAuth 端点集成到 Starlette 应用 |
| 可流式传输 HTTP | ✅ 完整支持 | ✅ 可用 | 通过 FastMCP FastAPI 集成的 OAuth 端点 |
| Stdio | ➖ 不适用 | ➖ 不适用 | 无 HTTP 端点,通过环境进行身份验证 |
可用的发现端点:
/.well-known/oauth-protected-resource - 受保护资源元数据(RFC 9728)/.well-known/mcp-server-info - MCP 服务器能力和 OAuth 配置/health - 包含 OAuth 状态的健康检查传输选择:
# SSE(服务器发送事件)- 推荐用于 Web 应用程序
export MCP_TRANSPORT=sse
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
# 可流式传输 HTTP - 推荐用于 API 集成
export MCP_TRANSPORT=streamable-http
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
export MCP_PATH=/mcp/
# Stdio - 用于命令行客户端(Claude Desktop)
export MCP_TRANSPORT=stdio
docker-compose up -d
# 编辑 docker-compose.oauth.yml 中的环境变量
docker-compose -f docker-compose.oauth.yml up -d
# 包括 Keycloak 服务器用于测试
docker-compose -f docker-compose.oauth.yml up keycloak mcp-teradata
使用提供的脚本来自动配置 Keycloak:
# 本地开发
./scripts/setup-keycloak.sh http://localhost:8080 admin admin
# 远程 Keycloak
./scripts/setup-keycloak.sh https://your-keycloak.com admin-user admin-pass
请参阅详细的 Keycloak 配置指南:docs/OAUTH.md
测试您的 OAuth 配置:
# 运行 OAuth 测试
./scripts/test-oauth.py
# 使用自定义设置测试
./scripts/test-oauth.py --keycloak-url https://your-keycloak.com --realm your-realm
当启用 OAuth 时,服务器会暴露发现端点:
/.well-known/oauth-protected-resource - 受保护资源元数据(RFC 9728)/.well-known/mcp-server-info - MCP 服务器能力和 OAuth 信息/health - 包含 OAuth 状态的健康检查{
"mcpServers": {
"teradata": {
"command": "uv",
"args": [
"--directory",
"/Users/MCP/mcp-teradata",
"run",
"teradata-mcp"
],
"env": {
"DATABASE_URI": "teradatasql://user:passwd@host/database"
}
}
}
}
{
"mcpServers": {
"teradata": {
"command": "uv",
"args": [
"--directory",
"/Users/MCP/mcp-teradata",
"run",
"teradata-mcp"
],
"env": {
"DATABASE_URI": "teradatasql://user:passwd@host/database",
"OAUTH_ENABLED": "true",
"KEYCLOAK_URL": "https://your-keycloak.com",
"KEYCLOAK_REALM": "teradata-realm",
"KEYCLOAK_CLIENT_ID": "teradata-mcp",
"KEYCLOAK_CLIENT_SECRET": "your-secret",
"OAUTH_RESOURCE_SERVER_URL": "https://your-server.com"
}
}
}
}
# 将服务器添加到您的 claude_desktop_config.json
{
"mcpServers": {
"teradata": {
"command": "uv",
"args": [
"--directory",
"/Users/MCP/mcp-teradata",
"run",
"teradata-mcp"
],
"env": {
"DATABASE_URI": "teradata://user:passwd@host"
}
}
}
}
确保编辑 docker-compose.yml 并更新环境变量
docker compose build
docker compose up
uv build
OAUTH_REQUIRE_HTTPS=true)OAuth 身份验证失败:
# 测试 Keycloak 连接
curl https://your-keycloak.com/auth/realms/master/.well-known/openid-configuration
# 检查服务器健康状况
curl https://your-mcp-server.com/health
数据库连接问题:
DATABASE_URI 格式:teradatasql://user:pass@host/database连接重试配置:
TOOL_RETRY_MAX_ATTEMPTS 来控制重试行为(0 = 不重试)TOOL_RETRY_DELAY_SECONDS 来控制重试之间的延迟权限被拒绝错误:
启用调试日志记录:
export LOG_LEVEL=DEBUG
export OAUTH_ENABLED=true
uv run teradata-mcp "teradatasql://user:pass@host/db"
欢迎贡献!请:
git checkout -b feature/amazing-feature)git commit -m '添加神奇的功能')git push origin feature/amazing-feature)此 MCP 服务器根据 MIT 许可证发布。这意味着您可以自由地使用、修改和分发软件,但需遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。