Trino数据查询服务

MCP Trino Server是一个与Trino和Iceberg无缝集成的服务,提供高级数据探索、查询和表维护功能。

  • by alaturqua
  • Python
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 alaturqua/mcp-trino-python

使用说明

MCP Trino服务器

MCP Trino服务器是 模型上下文协议(MCP) 与Trino和Iceberg无缝集成的服务器,实现了高级 通过标准接口实现数据探索、查询和表维护功能。

用例

  • Trino中的交互式数据探索和分析
  • 自动冰山表维护和优化
  • 构建与Trino数据库交互的人工智能工具
  • 使用正确的结果格式执行和管理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

这将启动Trino服务器 localhost:8080 具有样本TPC-H和TPC-DS数据。

安装

通过Smithery安装

通过以下方式自动安装适用于Claude Desktop的MCP Trino服务器 铁匠铺:

npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude

使用紫外线(推荐)

uv sync
uv run src/server.py

使用pip

pip install -e .
python src/server.py

运输方式

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

运输 描述 用例
stdio 标准I/O(默认) VS代码、克劳德桌面、本地MCP客户端
streamable-http 带流媒体的HTTP 远程访问、web客户端、Docker
sse 服务器发送事件 传统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代码

添加到您的VS代码设置(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代码)

docker run -i --rm \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  -e TRINO_USER=trino \
  mcp-trino-python

使用流式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代码与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_HOST TRINO服务器主机名 本地主机
TRINO_PORT TRINO服务器端口 8080
trin/user Trino用户名 Trino
TRINO_CATALOG 默认目录 无
TRINO_SCHEMA 默认模式 无
TRINO_HTTP_SCHEME HTTP方案(HTTP/https) HTTP
TRINO_PASSWORD TRINO密码 无

工具

查询和探索工具

  • show_catalogs

    • 列出所有可用目录
    • 无需参数
  • show_schemas

    • 列出目录中的所有架构
    • 参数:
      • catalog:目录名称(字符串,必填)
  • show_tables

    • 列出架构中的所有表
    • 参数:
      • catalog:目录名称(字符串,必填)
      • schema:架构名称(字符串,必填)
  • describe_table

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

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

    • 显示目录、模式和表的层次树视图
    • 返回带有视觉指示器的格式化树结构
    • 无需参数
  • show_create_table

    • 显示表的CREATE TABLE语句
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • show_create_view

    • 显示视图的CREATE VIEW语句
    • 参数:
      • view:视图名称(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • show_stats

    • 显示表的统计信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)

冰山表维护

  • 优化

    • 通过压缩小文件优化冰山表
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • 优化参数

    • 优化冰山表的清单文件
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • 过期快照

    • 从冰山表中删除旧快照
    • 参数:
      • table:表名(字符串,必填)
      • retention_threshold:年龄阈值(例如“7d”)(字符串,可选)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)

冰山元数据检查

  • show_table_特性

    • 显示冰山表属性
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • show_table_历史

    • 显示冰山表历史记录/更改日志
    • 包含快照时间、沿袭和祖先信息
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • show_meta_log_entries

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

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

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

    • 显示冰山餐桌隔板
    • 包含分区统计信息和文件计数
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)
  • show_files

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

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

    • 显示冰山表引用(分支和标签)
    • 包含参考配置和快照映射
    • 参数:
      • table:表名(字符串,必填)
      • catalog:目录名称(字符串,可选)
      • schema:架构名称(字符串,可选)

查询历史

  • show_query_历史
    • 获取已执行查询的历史记录
    • 参数:
      • limit:要返回的最大查询数(数字,可选)

许可证

此项目根据Apache 2.0许可证获得许可。请参阅许可文件了解完整条款。