使用说明

项目简介

MCP Trino Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,专注于将 Trino 数据查询和 Iceberg 表格管理能力通过 MCP 协议开放给大型语言模型 (LLM) 客户端。它允许 LLM 应用以标准化的方式访问 Trino 数据库中的数据资源,并利用预设的工具执行 SQL 查询、数据探索和 Iceberg 表维护任务。

主要功能点

  • 资源 (Resources) 访问:
    • 浏览 Trino 数据目录 (Catalogs)、模式 (Schemas) 和表 (Tables) 结构。
  • 工具 (Tools) 执行:
    • 数据查询: 执行 SQL 查询并以 JSON 格式返回结果。
    • 数据探索: 查看表结构 (CREATE TABLE/VIEW 语句)、统计信息、目录树状结构等。
    • Iceberg 表维护: 优化 Iceberg 表 (文件压缩、Manifests 优化)、快照过期管理、元数据信息查看等。
    • 查询历史: 查看执行过的查询记录。
  • Prompt 模板 (Prompts):
    • 内置数据探索和 Iceberg 表维护的 Prompt 模板,方便用户快速开始与 Trino 数据进行交互。

安装步骤

  1. 前提条件:

    • 确保已安装 Trino 服务器 并正在运行 (本地开发可以使用 Docker Compose 快速启动)。
    • 安装 Python 3.11 或更高版本
    • (可选)安装 Docker,用于容器化部署。
  2. 克隆仓库:

    git clone https://github.com/alaturqua/mcp-trino-python.git
    cd mcp-trino-python
  3. 安装 Python 依赖: 建议使用虚拟环境:

    python -m venv venv
    source venv/bin/activate  # 或 venv\Scripts\activate for Windows
    pip install -r requirements.txt
  4. 配置 Trino 连接信息: 复制 '.env.example' 文件为 '.env',并根据你的 Trino 服务器信息修改 '.env' 文件:

    TRINO_HOST=your-trino-host  # Trino 服务器主机名,例如 localhost
    TRINO_PORT=8080             # Trino 服务器端口,默认为 8080
    TRINO_USER=trino            # Trino 用户名,默认为 trino
    TRINO_PASSWORD=your-password # Trino 密码 (如果需要)
    TRINO_CATALOG=             # 默认 Catalog (可选)
    TRINO_SCHEMA=              # 默认 Schema (可选)
    TRINO_HTTP_SCHEME=http       # HTTP 协议 (http 或 https),默认为 http

服务器配置 (MCP 客户端配置)

MCP 服务器启动后,需要配置 MCP 客户端 (如 Claude Desktop, VS Code 等) 以连接到该服务器。以下是 MCP 客户端的服务器配置信息示例 (JSON 格式):

1. Claude Desktop 配置示例:

{
  "mcpServers": {
    "trino": {
      "command": "python",
      "args": ["./src/server.py"],
      "env": {
        "TRINO_HOST": "your-trino-host",  // 替换为你的 Trino 服务器主机名
        "TRINO_PORT": "8080",             // 替换为你的 Trino 服务器端口
        "TRINO_USER": "trino"             // 替换为你的 Trino 用户名
      }
    }
  }
}

参数说明:

  • '"trino"': 服务器名称,可以自定义。
  • '"command": "python"': 启动服务器的命令,这里使用 Python 解释器。
  • '"args": ["./src/server.py"]': 传递给 'python' 命令的参数,指定服务器启动脚本为 './src/server.py'。
  • '"env"': 环境变量配置,用于传递 Trino 连接信息。
    • '"TRINO_HOST"': Trino 服务器主机名。
    • '"TRINO_PORT"': Trino 服务器端口。
    • '"TRINO_USER"': Trino 用户名。
    • 其他 Trino 连接相关的环境变量 (例如 'TRINO_PASSWORD', 'TRINO_CATALOG', 'TRINO_SCHEMA', 'TRINO_HTTP_SCHEME') 也可以在此处配置,如果 '.env' 文件中已配置,此处可以省略。

2. VS Code 配置示例 ('.vscode/mcp.json' 或 User Settings):

{
  "mcp": {
    "servers": {
      "trino": {
        "command": "docker",
        "args": ["run", "--rm", "ghcr.io/alaturqua/mcp-trino-python:latest"],
        "env": {
          "TRINO_HOST": "${input:trino_host}",  // 使用 VS Code 输入变量,方便动态配置
          "TRINO_PORT": "${input:trino_port}",
          "TRINO_USER": "${input:trino_user}",
          "TRINO_PASSWORD": "${input:trino_password}",
          "TRINO_HTTP_SCHEME": "${input:trino_http_scheme}",
          "TRINO_CATALOG": "${input:trino_catalog}",
          "TRINO_SCHEMA": "${input:trino_schema}"
        }
      }
    }
  }
}

参数说明:

  • '"trino"': 服务器名称,可以自定义。
  • '"command": "docker"': 启动服务器的命令,这里使用 Docker 运行预构建的镜像。
  • '"args": ["run", "--rm", "ghcr.io/alaturqua/mcp-trino-python:latest"]': 传递给 'docker run' 命令的参数,运行 'ghcr.io/alaturqua/mcp-trino-python:latest' 镜像。 '--rm' 参数表示容器退出后自动删除。
  • '"env"': 环境变量配置,用于传递 Trino 连接信息。
    • '"TRINO_HOST": "${input:trino_host}"': 使用 VS Code 的 'input' 变量,在 VS Code 中配置 MCP 服务器时,会提示用户输入 Trino 主机名。
    • 其他 '"TRINO_PORT"', '"TRINO_USER"' 等类似,都使用 'input' 变量,方便用户在 VS Code 中动态配置。

注意: 你需要根据你的实际部署方式 (直接运行 'server.py' 脚本或使用 Docker 镜像) 和 Trino 服务器连接信息,选择合适的配置示例并进行相应的修改。

基本使用方法

  1. 启动 MCP Trino Server:

    • 直接运行脚本: 在项目根目录下,确保已激活虚拟环境,然后运行命令:
      python ./src/server.py
    • 使用 Docker 镜像: 无需手动启动,MCP 客户端配置中已指定使用 Docker 镜像运行。
  2. 配置 MCP 客户端: 根据你的 MCP 客户端 (如 Claude Desktop, VS Code),按照上述 服务器配置 (MCP 客户端配置) 部分的说明,将相应的 JSON 配置信息添加到客户端的服务器配置中。

  3. 在 MCP 客户端中使用: 配置完成后,在 MCP 客户端中选择已配置的 "trino" 服务器 (或其他你自定义的服务器名称),即可开始使用 MCP Trino Server 提供的资源和工具,与 Trino 数据库进行交互。例如,你可以:

    • 使用资源浏览 Trino 的目录、模式和表。
    • 调用 'execute_query' 工具执行 SQL 查询。
    • 调用 'show_table_properties' 工具查看 Iceberg 表属性。
    • 使用 'explore_data' 或 'maintain_iceberg' Prompt 模板进行交互式数据探索或表维护。

信息

分类

数据库与文件