mcpField
M
MCP Trino Server

MCP Trino Server

本地服务
github.com/alaturqua数据库2547 周前更新

关于 MCP Trino Server

MCP Trino Server 是一个基于 MCP Python SDK 开发的 MCP 服务,用于连接 Trino 与 Iceberg。它面向需要通过标准接口探索数据、执行 SQL 以及维护 Iceberg 表的用户。

主要功能

  1. 01执行 SQL 查询并返回格式化结果
  2. 02浏览目录、模式、表与视图结构
  3. 03Iceberg 表的文件压缩与快照清理
  4. 04查看 Iceberg 快照、清单与分区元数据
  5. 05支持 stdio、streamable-http 和 sse 传输

适用场景

  1. 01在 Trino 中交互式探索与分析数据
  2. 02自动化维护和优化 Iceberg 表
  3. 03为 Trino 数据库构建 AI 驱动的工具

MCP 相关

该服务通过 MCP 暴露查询、元数据浏览、Iceberg 维护和查询历史等工具,供 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"trino-python": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MseeP.ai 安全评估徽章

MCP Trino 服务

smithery 徽章 Python 3.12+ VS Code Docker License

MCP Trino 服务是一个 Model Context Protocol (MCP) 服务,可与 Trino 和 Iceberg 无缝集成,通过标准接口提供高级的 数据探索、查询和表维护能力。

使用场景

  • 在 Trino 中进行交互式数据探索与分析
  • 自动化的 Iceberg 表维护与优化
  • 构建与 Trino 数据库交互的 AI 驱动工具
  • 以规范的格式化结果执行和管理 SQL 查询

前提条件

  1. 一个正在运行的 Trino 服务(或用于本地开发的 Docker Compose)
  2. Python 3.12 或更高版本
  3. Docker(可选,用于容器化部署)

快速开始

1. 克隆仓库
git clone https://github.com/alaturqua/mcp-trino-python.git
cd mcp-trino-python
2. 创建环境文件

在根目录下创建 .env 文件:

TRINO_HOST=localhost
TRINO_PORT=8080
TRINO_USER=trino
TRINO_CATALOG=tpch
TRINO_SCHEMA=tiny
3. 在本地运行 Trino(可选)
docker-compose up -d trino

这会在 localhost:8080 上启动一个带有示例 TPC-H 和 TPC-DS 数据的 Trino 服务。

安装

通过 Smithery 安装

要通过 Smithery 自动为 Claude Desktop 安装 MCP Trino 服务:

npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude
使用 uv(推荐)
uv sync
uv run src/server.py
使用 pip
pip install -e .
python src/server.py

传输模式

该服务支持三种传输模式:

传输方式描述使用场景
stdio标准 I/O(默认)VS Code、Claude Desktop、本地 MCP 客户端
streamable-http带流式传输的 HTTP远程访问、Web 客户端、Docker
sseServer-Sent Events旧版 HTTP 传输
使用不同传输方式运行
# stdio (default) - for VS Code and Claude Desktop
python src/server.py

# Streamable HTTP - for remote/web access
python src/server.py --transport streamable-http --host 0.0.0.0 --port 8000

# SSE - legacy HTTP transport
python src/server.py --transport sse --host 0.0.0.0 --port 8000

在 VS Code 中使用

添加到你的 VS Code 设置(Ctrl+Shift+P → Preferences: Open User Settings (JSON)):

{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "uv",
        "args": [
          "run",
          "--with",
          "mcp[cli]",
          "--with",
          "trino",
          "--with",
          "loguru",
          "mcp",
          "run",
          "/path/to/mcp-trino-python/src/server.py"
        ],
        "envFile": "/path/to/mcp-trino-python/.env"
      }
    }
  }
}

或添加到工作区中的 .vscode/mcp.json(不带 mcp 包装键)。

在 Claude Desktop 中使用

添加到你的 Claude Desktop 配置中:

{
  "mcpServers": {
    "trino": {
      "command": "python",
      "args": ["./src/server.py"],
      "env": {
        "TRINO_HOST": "your-trino-host",
        "TRINO_PORT": "8080",
        "TRINO_USER": "trino"
      }
    }
  }
}

Docker 用法

构建镜像
docker build -t mcp-trino-python .
使用 stdio 运行(用于 VS Code)
docker run -i --rm \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  -e TRINO_USER=trino \
  mcp-trino-python
使用 Streamable HTTP 运行
docker run -p 8000:8000 \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  mcp-trino-python \
  --transport streamable-http --host 0.0.0.0 --port 8000
Docker Compose
# Start Trino + MCP server with Streamable HTTP
docker-compose up -d

# Start with SSE transport
docker-compose --profile sse up -d

# Run stdio for testing
docker-compose --profile stdio run --rm mcp-trino-stdio
在 VS Code 中使用 Docker
{
  "mcp": {
    "servers": {
      "mcp-trino-python": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "--network",
          "mcp-trino-python_trino-network",
          "-e",
          "TRINO_HOST=trino",
          "-e",
          "TRINO_PORT=8080",
          "-e",
          "TRINO_USER=trino",
          "mcp-trino-python"
        ]
      }
    }
  }
}

配置

环境变量
变量描述默认值
TRINO_HOSTTrino 服务主机名localhost
TRINO_PORTTrino 服务端口8080
TRINO_USERTrino 用户名trino
TRINO_CATALOG默认 catalogNone
TRINO_SCHEMA默认 schemaNone
TRINO_HTTP_SCHEMEHTTP 协议方案(http/https)http
TRINO_PASSWORDTrino 密码None

工具

查询与探索工具
  • show_catalogs

    • 列出所有可用的 catalog
    • 无需参数
  • show_schemas

    • 列出某个 catalog 中的所有 schema
    • 参数:
      • catalog:Catalog 名称(字符串,必填)
  • show_tables

    • 列出某个 schema 中的所有表
    • 参数:
      • catalog:Catalog 名称(字符串,必填)
      • schema:Schema 名称(字符串,必填)
  • describe_table

    • 显示详细的表结构和列信息
    • 参数:
      • table:表名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • execute_query

    • 执行 SQL 查询并返回格式化结果
    • 参数:
      • query:要执行的 SQL 查询(字符串,必填)
  • show_catalog_tree

    • 显示 catalog、schema 和表的层级树状视图
    • 返回带有视觉指示符的格式化树结构
    • 无需参数
  • show_create_table

    • 显示某张表的 CREATE TABLE 语句
    • 参数:
      • table:表名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_create_view

    • 显示某个视图的 CREATE VIEW 语句
    • 参数:
      • view:视图名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_stats

    • 显示某张表的统计信息
    • 参数:
      • table:表名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
Iceberg 表维护
  • optimize

    • 通过合并小文件来优化 Iceberg 表
    • 参数:
      • table:表名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • optimize_manifests

    • 优化 Iceberg 表的 manifest 文件
    • 参数:
      • table:表名称(字符串,必填)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • expire_snapshots

    • 移除 Iceberg 表中的旧快照
    • 参数:
      • table:表名称(字符串,必填)
      • retention_threshold:时间阈值(例如 "7d")(字符串,可选)
      • catalog:Catalog 名称(字符串,可选)
      • schema:Schema 名称(字符串,可选)
Iceberg 元数据检查
  • show_table_properties

    • 显示 Iceberg 表属性
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_table_history

    • 显示 Iceberg 表历史/变更日志
    • 包含快照时间、血缘和祖先信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_metadata_log_entries

    • 显示 Iceberg 表元数据日志条目
    • 包含元数据文件位置和序列信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_snapshots

    • 显示 Iceberg 表快照
    • 包含快照详细信息,包括操作和清单文件
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_manifests

    • 显示当前或所有快照的 Iceberg 表清单
    • 包含清单文件详细信息和数据文件统计信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
      • all_snapshots:包括所有快照(布尔值,可选)
  • show_partitions

    • 显示 Iceberg 表分区
    • 包含分区统计信息和文件计数
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_files

    • 显示当前快照中的 Iceberg 表数据文件
    • 包含详细文件元数据和列统计信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
  • show_entries

    • 显示当前或所有快照的 Iceberg 表清单条目
    • 包含条目状态和详细文件指标
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
      • all_snapshots:包括所有快照(布尔值,可选)
  • show_refs

    • 显示 Iceberg 表引用(分支和标签)
    • 包含引用配置和快照映射
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名(字符串,可选)
      • schema:Schema 名称(字符串,可选)
查询历史
  • show_query_history
    • 获取已执行查询的历史记录
    • 参数:
      • limit:返回的最大查询数(数字,可选)

License

This project is licensed under the Apache 2.0 License. Please refer to the LICENSE file for the full terms.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。