Skip to main content
Glama

Trino MCP 服务器(Go 语言)

一个用 Go 语言实现的 Trino 高性能模型上下文协议 (MCP) 服务器。该项目使 AI 助手能够通过标准化的 MCP 工具与 Trino 的分布式 SQL 查询引擎无缝交互。

GitHub 工作流程状态 Go 版本 琐事扫描SLSA 3 围棋成绩单 Go 参考 Docker 镜像 GitHub 发布 许可证:MIT

概述

该项目使用 Go 语言为 Trino 实现了模型上下文协议 (MCP) 服务器。它使 AI 助手能够通过标准化的 MCP 工具访问 Trino 的分布式 SQL 查询引擎。

Trino(以前称为 PrestoSQL)是一个强大的分布式 SQL 查询引擎,旨在对大型数据集进行快速分析。

特征

  • ✅ 使用 Go 语言实现 MCP 服务器

  • ✅ 通过 MCP 工具执行 Trino SQL 查询

  • ✅ 目录、架构和表发现

  • ✅ Docker 容器支持

  • ✅ 支持 STDIO 和 HTTP 传输

  • ✅ 服务器发送事件 (SSE) 支持 Cursor 和其他 MCP 客户端

  • ✅ 与 Cursor、Claude Desktop、Windsurf、ChatWise 以及任何兼容 MCP 的客户端兼容。

安装

Homebrew(macOS 和 Linux)

安装 mcp-trino 最简单的方法是使用 Homebrew:

# Add the tap repository brew tap tuannvm/mcp # Install mcp-trino brew install mcp-trino

要更新到最新版本:

brew update && brew upgrade mcp-trino

替代安装方法

手册下载

  1. GitHub 发布页面下载适合您平台的二进制文件。

  2. 将二进制文件放在 PATH 中包含的目录中(例如,Linux/macOS 上的/usr/local/bin

  3. 使其可执行(Linux/macOS 上为chmod +x mcp-trino

来自源

git clone https://github.com/tuannvm/mcp-trino.git cd mcp-trino make build # Binary will be in ./bin/

下载

您可以下载适合您平台的预先构建的二进制文件:

平台

建筑学

下载链接

macOS

x86_64(英特尔)

下载

macOS

ARM64(Apple Silicon)

下载

Linux

x86_64

下载

Linux

ARM64

下载

视窗

x86_64

下载

或者查看GitHub 发布页面上的所有可用下载。

MCP 集成

该 MCP 服务器可以与多个 AI 应用程序集成:

使用 Docker 镜像

要使用 Docker 镜像而不是本地二进制文件:

{ "mcpServers": { "mcp-trino": { "command": "docker", "args": ["run", "--rm", "-i", "-e", "TRINO_HOST=<HOST>", "-e", "TRINO_PORT=<PORT>", "-e", "TRINO_USER=<USERNAME>", "-e", "TRINO_PASSWORD=<PASSWORD>", "-e", "TRINO_SCHEME=http", "ghcr.io/tuannvm/mcp-trino:latest"], "env": {} } } }

注意host.docker.internal特殊 DNS 名称允许容器连接到主机上运行的服务。如果您的 Trino 服务器在其他地方运行,请将其替换为相应的主机。

此 Docker 配置可用于以下任何应用程序。

光标

要与Cursor一起使用,请创建或编辑~/.cursor/mcp.json

{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

用您的特定 Trino 配置替换环境变量。

对于 HTTP+SSE 传输模式(支持 Cursor 集成):

{ "mcpServers": { "mcp-trino-http": { "url": "http://localhost:9097/sse" } } }

然后在单独的终端中启动服务器:

MCP_TRANSPORT=http TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD> mcp-trino

克劳德桌面

要与Claude Desktop一起使用,请编辑您的 Claude 配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

更新配置后,重新启动 Claude Desktop。您将在工具菜单中看到 MCP 工具。

风帆冲浪

要与Windsurf一起使用,请创建或编辑mcp_config.json

{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

重启 Windsurf 以应用更改。Trino MCP 工具将可供 Cascade AI 使用。

ChatWise

要与ChatWise一起使用,请按照以下步骤操作:

  1. 打开 ChatWise 并转到“设置”

  2. 导航到“工具”部分

  3. 单击“+”图标添加新工具

  4. 选择“命令行 MCP”

  5. 使用以下详细信息进行配置:

    • ID: mcp-trino (或您喜欢的任何名称)

    • 命令: mcp-trino

    • 参数:(留空)

    • Env:添加以下环境变量:

      TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD>

或者,您可以从 JSON 导入配置:

  1. 将此 JSON 复制到剪贴板:

    { "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }
  2. 在 ChatWise 设置 > 工具中,点击“+”图标

  3. 选择“从剪贴板导入 JSON”

  4. 切换工具旁边的开关以启用它

启用后,单击 ChatWise 中输入框下方的锤子图标即可访问 Trino MCP 工具。

可用的 MCP 工具

该服务器提供以下 MCP 工具:

执行查询

对 Trino 执行 SQL 查询,并为复杂的分析查询提供完整的 SQL 支持。

示例提示:

“每个地区有多少客户?您能按降序显示吗?”

例子:

{ "query": "SELECT region, COUNT(*) as customer_count FROM tpch.tiny.customer GROUP BY region ORDER BY customer_count DESC" }

回复:

{ "columns": ["region", "customer_count"], "data": [ ["AFRICA", 5], ["AMERICA", 5], ["ASIA", 5], ["EUROPE", 5], ["MIDDLE EAST", 5] ] }

列表目录

列出 Trino 服务器中可用的所有目录,提供数据生态系统的全面视图。

示例提示:

“我们在 Trino 环境中可以访问哪些数据库?”

例子:

{}

回复:

{ "catalogs": ["tpch", "memory", "system", "jmx"] }

列表模式

列出目录中的所有模式,帮助您有效地浏览数据层次结构。

示例提示:

“tpch 目录中有哪些可用的模式或数据集?”

例子:

{ "catalog": "tpch" }

回复:

{ "schemas": ["information_schema", "sf1", "sf100", "sf1000", "tiny"] }

列表表

列出模式中的所有表,让您了解可用的数据集。

示例提示:

“tpch tiny 模式中有哪些表?我需要知道我们可以查询哪些数据。”

例子:

{ "catalog": "tpch", "schema": "tiny" }

回复:

{ "tables": ["customer", "lineitem", "nation", "orders", "part", "partsupp", "region", "supplier"] }

获取表模式

获取表的模式,了解数据的结构以便更好地进行查询规划。

示例提示:

“客户表中有哪些列?在编写查询之前,我需要了解数据类型和结构。”

例子:

{ "catalog": "tpch", "schema": "tiny", "table": "customer" }

回复:

{ "columns": [ { "name": "custkey", "type": "bigint", "nullable": false }, { "name": "name", "type": "varchar", "nullable": false }, { "name": "address", "type": "varchar", "nullable": false }, { "name": "nationkey", "type": "bigint", "nullable": false }, { "name": "phone", "type": "varchar", "nullable": false }, { "name": "acctbal", "type": "double", "nullable": false }, { "name": "mktsegment", "type": "varchar", "nullable": false }, { "name": "comment", "type": "varchar", "nullable": false } ] }

在针对表编写查询之前,这些信息对于理解列名、数据类型和可空性约束非常有价值。

端到端示例

以下是一个完整的交互示例,展示了人工智能助手如何使用这些工具来回答业务问题:

用户查询: “您能帮我分析一下我们最大的客户吗?我想知道账户余额最高的前5个客户。”

AI助手的工作流程:

  1. 首先,发现可用的目录

    > Using list_catalogs tool > Discovers tpch catalog
  2. 然后,找到可用的模式

    > Using list_schemas tool with catalog "tpch" > Discovers "tiny" schema
  3. 探索可用表

    > Using list_tables tool with catalog "tpch" and schema "tiny" > Finds "customer" table
  4. 检查客户表架构

    > Using get_table_schema tool > Discovers "custkey", "name", "acctbal" and other columns
  5. 最后,执行查询

    > Using execute_query tool with: > "SELECT custkey, name, acctbal FROM tpch.tiny.customer ORDER BY acctbal DESC LIMIT 5"
  6. 将结果返回给用户:

    The top 5 customers with highest account balances are: 1. Customer #65 (Customer#000000065): $9,222.78 2. Customer #13 (Customer#000000013): $8,270.47 3. Customer #89 (Customer#000000089): $7,990.56 4. Customer #11 (Customer#000000011): $7,912.91 5. Customer #82 (Customer#000000082): $7,629.41

这种无缝的工作流程展示了 MCP 工具如何使 AI 助手能够以对话的方式探索和查询数据。

配置

可以使用以下环境变量配置服务器:

多变的

描述

默认

TRINO_HOST

Trino 服务器主机名

本地主机

TRINO_PORT

Trino 服务器端口

8080

TRINO_用户

Trino 用户

特里诺

TRINO_密码

Trino 密码

(空的)

TRINO_目录

默认目录

记忆

TRINO_SCHEMA

默认架构

默认

TRINO_SCHEME

连接方案(http/https)

https

TRINO_SSL

启用 SSL

真的

TRINO_SSL_不安全

允许不安全的 SSL

真的

TRINO_ALLOW_WRITE_QUERIES

允许非只读 SQL 查询

错误的

TRINO_QUERY_超时

查询超时(秒)

三十

MCP_传输

传输方法(stdio/http)

标准输入输出

MCP_端口

用于 http 传输的 HTTP 端口

9097

MCP_主机

HTTP 回调的主机

本地主机

注意:当TRINO_SCHEME设置为“https”时,无论提供的值是什么, TRINO_SSL都会自动设置为 true。

重要提示:默认连接模式为 HTTPS。如果您使用的是仅 HTTP 的 Trino 服务器,则必须在环境变量中设置TRINO_SCHEME=http

安全注意事项:默认情况下,仅允许执行只读查询(SELECT、SHOW、DESCRIBE、EXPLAIN),以防止 SQL 注入。如果您需要执行写入操作或其他非读取查询,请设置TRINO_ALLOW_WRITE_QUERIES=true ,但请注意,这会绕过此安全保护。

对于 Cursor 集成:与 Cursor 一起使用时,请设置MCP_TRANSPORT=http并连接到/sse端点。服务器将自动处理 SSE(服务器发送事件)连接。

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

CI/CD 和发布

该项目使用 GitHub Actions 进行持续集成,使用 GoReleaser 进行自动发布。

持续集成检查

我们的 CI 管道对所有 PR 执行以下检查并提交到主分支:

代码质量

  • Linting :使用 golangci-lint 检查常见代码问题和代码风格违规

  • Go 模块验证:确保 go.mod 和 go.sum 得到正确维护

  • 格式化:使用 gofmt 验证代码格式是否正确

安全

  • 漏洞扫描:使用 govulncheck 检查依赖项中的已知漏洞

  • 依赖项扫描:使用 Trivy 扫描依赖项中的漏洞(严重、高和中等)

  • SBOM 生成:创建用于依赖关系跟踪的软件物料清单

  • SLSA Provenance :为供应链安全创建可验证的构建来源

测试

  • 单元测试:运行带有竞争检测和代码覆盖率报告的测试

  • 构建验证:确保代码库构建成功

CI/CD 安全

  • 最小权限:工作流以所需的最低权限运行

  • 固定版本:所有 GitHub Actions 都使用特定版本来防止供应链攻击

  • 依赖项更新:通过 Dependabot 自动更新依赖项

发布流程

当更改合并到主分支时:

  1. 运行 CI 检查来验证代码质量和安全性

  2. 如果成功,则会自动创建一个新版本:

    • 基于提交消息的语义版本控制

    • 适用于多个平台的二进制构建

    • Docker 镜像发布到 GitHub Container Registry

    • SBOM 和来源证明

-
security - not tested
-
license - not tested
-
quality - not tested

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    Go server implementing Model Context Protocol (MCP) for filesystem operations.
    Last updated -
    525
    MIT License
  • -
    security
    A
    license
    -
    quality
    An MCP server that enables listing and querying Trino tables using Python, providing access to data resources through the Model-Control-Protocol.
    Last updated -
    18
    MIT License
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with Go's Language Server Protocol (LSP) and benefit from advanced Go code analysis features.
    Last updated -
    49
    Apache 2.0
  • -
    security
    A
    license
    -
    quality
    This is a Model Context Protocol (MCP) server implemented in Go, providing a tool to analyze Go pprof performance profiles.
    Last updated -
    39
    MIT License
    • Linux
    • Apple

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tuannvm/mcp-trino'

If you have feedback or need assistance with the MCP directory API, please join our Discord server