项目简介
Teradata MCP 服务器是一个强大的应用后端,旨在通过标准化的 Model Context Protocol (MCP) 接口,让大型语言模型(LLM)客户端能够安全、高效地与 Teradata 数据库进行交互。它不仅提供数据查询和模式管理工具,还集成了业务智能分析功能和企业级的 OAuth 2.1 认证机制,确保数据访问的安全性和可控性。
主要功能点
- 数据库查询与管理: 允许LLM执行SQL查询来读取数据,并提供工具来列出数据库、表格和视图,以及查看表格的详细模式信息。
- 数据分析工具: 提供多种内置工具来帮助LLM进行数据探索和分析,例如识别表格中缺失值最多的特征、统计具有负值的特征数量、列出某个列的唯一分类数量,以及计算数值列的均值和标准差。
- Prompt 模板支持: 定义并渲染预设的 Prompt 模板,用于指导LLM进行复杂任务,如“分析数据库”、“分析表格”或“训练GLM回归模型”,从而实现更高效、定制化的LLM交互模式。
- OAuth 2.1 安全认证: 集成 Keycloak 进行企业级的 OAuth 2.1 认证,支持 JWT 令牌验证、基于范围(Scope)的细粒度访问控制以及符合 RFC 9728 标准的受保护资源元数据发现。
- 连接弹性与错误处理: 具备生产级的数据库连接弹性,支持针对连接问题的自动重试机制,提升了服务器的可靠性和可用性。
- 多种传输协议: 支持 Stdio (标准输入输出)、Server-Sent Events (SSE) 和 Streamable HTTP 等多种 MCP 传输协议,以适应不同的LLM客户端和部署场景。
安装步骤
- 克隆仓库: 在您的本地机器上打开终端,运行以下命令将项目代码克隆到本地:
git clone https://github.com/arturborycki/mcp-teradata.git cd mcp-teradata - 安装依赖: 使用 'uv' 工具(一个现代的 Python 包安装器和管理器)安装项目所需的全部依赖:
uv install
服务器配置(MCP客户端使用)
MCP 客户端(例如 Claude Desktop)需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 MCP 服务器建立连接。以下是根据仓库信息生成的配置示例,旨在帮助您理解并配置您的 MCP 客户端。
基本配置(无认证)
此配置适用于开发或测试环境,不启用 OAuth 认证。
{ "mcpServers": { "teradata": { // 服务器名称,您可以自定义,但需在客户端中保持一致 "command": "uv", // 启动 MCP 服务器的命令 "args": [ "--directory", "/Users/MCP/mcp-teradata", // **重要:替换为您的 mcp-teradata 项目的实际路径** "run", "teradata-mcp" // 运行 teradata-mcp 模块 ], "env": { // 环境变量设置,用于传递数据库连接信息 "DATABASE_URI": "teradatasql://user:passwd@host/database" // **重要:您的 Teradata 数据库连接 URI,请替换为实际用户名、密码、主机和数据库名** } } } }
启用 OAuth 认证的配置(生产环境推荐)
在生产环境中,强烈建议启用 OAuth 2.1 认证以保障数据访问安全。
第一步:配置服务器端环境变量 在 'mcp-teradata' 项目的根目录下创建一个 '.env' 文件,并填写您的 OAuth 和数据库连接设置。这些环境变量会在服务器启动时被读取:
# .env 文件示例 (请替换为您的实际值) OAUTH_ENABLED=true # 启用 OAuth 认证 KEYCLOAK_URL=https://your-keycloak.com # 您的 Keycloak 认证服务器的 URL KEYCLOAK_REALM=teradata-realm # 您在 Keycloak 中配置的 Realm 名称 KEYCLOAK_CLIENT_ID=teradata-mcp # 您的 Keycloak 客户端 ID KEYCLOAK_CLIENT_SECRET=your-secret # 您的 Keycloak 客户端密钥 (请确保安全存储) OAUTH_RESOURCE_SERVER_URL=https://your-mcp-server.com # 此 MCP 服务器的公开访问 URL (例如:http://localhost:8000 或您的域名) DATABASE_URI=teradatasql://user:passwd@host/database # 您的 Teradata 数据库连接 URI
第二步:配置 MCP 客户端 在您的 MCP 客户端配置文件中添加如下配置。请注意,'env' 部分包含的 OAuth 相关变量应与您在 '.env' 文件中设置的值保持一致。
{ "mcpServers": { "teradata": { // 服务器名称 "command": "uv", // 启动命令 "args": [ "--directory", "/Users/MCP/mcp-teradata", // **重要:替换为您的 mcp-teradata 项目的实际路径** "run", "teradata-mcp" // 运行 teradata-mcp 模块 ], "env": { // 环境变量设置,用于传递数据库和 OAuth 配置 "DATABASE_URI": "teradatasql://user:passwd@host/database", // **您的 Teradata 数据库连接 URI** "OAUTH_ENABLED": "true", // 启用 OAuth 认证 "KEYCLOAK_URL": "https://your-keycloak.com", // 您的 Keycloak URL "KEYCLOAK_REALM": "teradata-realm", # 您在 Keycloak 中配置的 Realm 名称 "KEYCLOAK_CLIENT_ID": "teradata-mcp", # 您的 Keycloak 客户端 ID "KEYCLOAK_CLIENT_SECRET": "your-secret", # 您的 Keycloak 客户端密钥 "OAUTH_RESOURCE_SERVER_URL": "https://your-mcp-server.com" # 此 MCP 服务器的公开访问 URL } } } }
请务必根据您的实际环境替换 '"/Users/MCP/mcp-teradata"'、Keycloak URL、Realm、Client ID、Client Secret、MCP 服务器 URL 和 Teradata 连接 URI。
基本使用方法
配置完成后,您的 MCP 客户端将能够发现并调用 Teradata MCP 服务器提供的工具和资源。
-
启动服务器:
- 无认证模式: 在 'mcp-teradata' 项目根目录下,运行:
uv run teradata-mcp "teradatasql://user:password@host/database" - OAuth 认证模式: 确保您已创建并配置 '.env' 文件,然后在 'mcp-teradata' 项目根目录下运行:
服务器将在后台运行,监听 MCP 客户端的请求。uv run teradata-mcp "teradatasql://user:password@host/database"
- 无认证模式: 在 'mcp-teradata' 项目根目录下,运行:
-
通过 LLM 客户端交互:
- 调用工具: LLM 客户端可以通过 JSON-RPC 请求调用服务器暴露的工具,如 'query'(执行 SQL 查询)、'list_db'(列出数据库)、'list_tables'(列出表)、'list_missing_values'(列出缺失值)等。例如,请求列出所有数据库的 JSON-RPC 消息可能如下:
{ "jsonrpc": "2.0", "method": "tool_code/list_db", "params": {}, "id": 1 } - 访问资源: LLM 客户端可以请求读取数据库中的特定资源(例如,某个表的模式信息)。
- 使用 Prompt 模板: LLM 客户端可以获取预定义的 Prompt 模板,如 'Analyze_database' 或 'Analyze_table',并根据模板提供的参数生成定制化的数据库分析请求,从而引导 LLM 进行更深入的交互。
- OAuth 认证: 如果启用了 OAuth,客户端需要在 HTTP 请求头中提供有效的 Bearer Token 进行身份验证和授权。服务器将根据 Token 中包含的范围(Scope)判断客户端是否有权执行请求的操作。
- 调用工具: LLM 客户端可以通过 JSON-RPC 请求调用服务器暴露的工具,如 'query'(执行 SQL 查询)、'list_db'(列出数据库)、'list_tables'(列出表)、'list_missing_values'(列出缺失值)等。例如,请求列出所有数据库的 JSON-RPC 消息可能如下:
信息
分类
数据库与文件