使用说明
项目简介
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 数据进行交互。
安装步骤
-
前提条件:
- 确保已安装 Trino 服务器 并正在运行 (本地开发可以使用 Docker Compose 快速启动)。
- 安装 Python 3.11 或更高版本。
- (可选)安装 Docker,用于容器化部署。
-
克隆仓库:
git clone https://github.com/alaturqua/mcp-trino-python.git cd mcp-trino-python -
安装 Python 依赖: 建议使用虚拟环境:
python -m venv venv source venv/bin/activate # 或 venv\Scripts\activate for Windows pip install -r requirements.txt -
配置 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 服务器连接信息,选择合适的配置示例并进行相应的修改。
基本使用方法
-
启动 MCP Trino Server:
- 直接运行脚本: 在项目根目录下,确保已激活虚拟环境,然后运行命令:
python ./src/server.py - 使用 Docker 镜像: 无需手动启动,MCP 客户端配置中已指定使用 Docker 镜像运行。
- 直接运行脚本: 在项目根目录下,确保已激活虚拟环境,然后运行命令:
-
配置 MCP 客户端: 根据你的 MCP 客户端 (如 Claude Desktop, VS Code),按照上述 服务器配置 (MCP 客户端配置) 部分的说明,将相应的 JSON 配置信息添加到客户端的服务器配置中。
-
在 MCP 客户端中使用: 配置完成后,在 MCP 客户端中选择已配置的 "trino" 服务器 (或其他你自定义的服务器名称),即可开始使用 MCP Trino Server 提供的资源和工具,与 Trino 数据库进行交互。例如,你可以:
- 使用资源浏览 Trino 的目录、模式和表。
- 调用 'execute_query' 工具执行 SQL 查询。
- 调用 'show_table_properties' 工具查看 Iceberg 表属性。
- 使用 'explore_data' 或 'maintain_iceberg' Prompt 模板进行交互式数据探索或表维护。
信息
分类
数据库与文件