返回市场
MCP-Trino-Python服务器

MCP-Trino-Python服务器

作者:alaturqua19 星标更新:2025-04-26

项目介绍

MCP Trino Server

smithery 徽章 Python 3.11+ VS Code Docker License

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

使用场景

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

预备条件

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

安装

通过 Smithery 安装

要通过 Smithery 自动安装 MCP Trino Server:

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

本地运行 Trino

最简单的方法是使用包含的 Docker Compose 配置来本地运行 Trino:

docker-compose up -d

这将在 localhost:8080 启动一个 Trino 服务器。现在你可以继续配置 MCP 服务器。

与 VS Code 结合使用

为了快速安装,你可以在你的 VS Code 设置中添加以下配置。你可以通过按 Ctrl + Shift + P 并键入 Preferences: Open User Settings (JSON) 来完成此操作。

可选地,你可以将其添加到工作区中的 .vscode/mcp.json 文件中。这将允许你与其他用户共享配置。

注意:在 .vscode/mcp.json 文件中不需要 mcp 键。

{
  "mcp": {
    "servers": {
      "trino": {
        "command": "docker",
        "args": ["run", "--rm", "ghcr.io/alaturqua/mcp-trino-python:latest"],
        "env": {
          "TRINO_HOST": "${input:trino_host}",
          "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}"
        }
      }
    }
  }
}

与 Claude Desktop 结合使用

在你的 Claude Desktop 设置中添加以下配置:

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

配置

环境变量

变量描述默认值
TRINO_HOSTTrino 服务器主机名localhost
TRINO_PORTTrino 服务器端口8080
TRINO_USERTrino 用户名trino
TRINO_CATALOG默认目录None
TRINO_SCHEMA默认模式None
TRINO_HTTP_SCHEMEHTTP 方案 (http/https)http
TRINO_PASSWORDTrino 密码None

工具

查询和探索工具

  • 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: 模式名称(字符串,可选)

Iceberg 表维护

  • optimize

    • 通过合并小文件来优化 Iceberg 表
    • 参数:
      • table: 表名称(字符串,必需)
      • catalog: 目录名称(字符串,可选)
      • schema: 模式名称(字符串,可选)
  • optimize_manifests

    • 优化 Iceberg 表的清单文件
    • 参数:
      • table: 表名称(字符串,必需)
      • catalog: 目录名称(字符串,可选)
      • schema: 模式名称(字符串,可选)
  • expire_snapshots

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

Iceberg 元数据检查

  • show_table_properties

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

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

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

    • 显示 Iceberg 表的快照
    • 包含快照详情,包括操作和清单文件
    • 参数:
      • table: 表名称(字符串,必需)
      • catalog: 目录名称(字符串,可选)
      • schema: 模式名称(字符串,可选)
  • show_manifests

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

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

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

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

    • 显示 Iceberg 表引用(分支和标签)
    • 包含引用配置和快照映射
    • 参数:
      • table: 表名称(字符串,必需)
      • catalog: 目录名称(字符串,可选)
      • schema: 模式名称(字符串,可选)

查询历史

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

许可证

本项目根据 Apache 2.0 许可证发布。请参阅 LICENSE 文件以获取完整条款。