项目简介

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客户端和部署场景。

安装步骤

  1. 克隆仓库: 在您的本地机器上打开终端,运行以下命令将项目代码克隆到本地:
    git clone https://github.com/arturborycki/mcp-teradata.git
    cd mcp-teradata
  2. 安装依赖: 使用 '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 服务器提供的工具和资源。

  1. 启动服务器:

    • 无认证模式: 在 'mcp-teradata' 项目根目录下,运行:
      uv run teradata-mcp "teradatasql://user:password@host/database"
    • OAuth 认证模式: 确保您已创建并配置 '.env' 文件,然后在 'mcp-teradata' 项目根目录下运行:
      uv run teradata-mcp "teradatasql://user:password@host/database"
      服务器将在后台运行,监听 MCP 客户端的请求。
  2. 通过 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)判断客户端是否有权执行请求的操作。

信息

分类

数据库与文件