Token导航 LogoToken导航TokenDH.com
MCP Trino logo
开发工具SSE官方级别未说明来源级核验

MCP Trino

MCP Server

A high-performance Model Context Protocol (MCP) server for Trino implemented in Go.

工具数

6

提示词数

0

GitHub Stars

103

资源数

0
GoClaude数据分析Claude DesktopClaudeCursorWindsurf

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

tuannvm

提供方

tuannvm

最后核验

2026/5/18 04:07

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Go中的Trino MCP服务器

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

](https://github.com/tuannvm/mcp-trino/actions/workflows/build.yml) ](https://github.com/tuannvm/mcp-trino/blob/main/go.mod) ![Trivy Scan](https://github.com/tuannvm/mcp-trino/actions/workflows/build.yml) ![SLSA 3](https://slsa.dev) ![Go Report Card](https://goreportcard.com/report/github.com/tuannvm/mcp-trino) ![Go Reference](https://pkg.go.dev/github.com/tuannvm/mcp-trino) ](https://github.com/tuannvm/mcp-trino/pkgs/container/mcp-trino) ](https://github.com/tuannvm/mcp-trino/releases/latest) ![License: MIT](https://opensource.org/licenses/MIT)

![Trust Score](https://archestra.ai/mcp-catalog/tuannvm__mcp-trino)

概述

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

Trino(前身为PrestoSQL)是一个功能强大的分布式SQL查询引擎,专为快速分析大型数据集而设计。

建筑

graph TB
    subgraph "AI Clients"
        CC[Claude Code]
        CD[Claude Desktop]
        CR[Cursor]
        WS[Windsurf]
        CW[ChatWise]
    end
    
    subgraph "Authentication (Optional)"
        OP[OAuth Provider
Okta/Google/Azure AD]
        JWT[JWT Tokens]
    end
    
    subgraph "MCP Server (mcp-trino)"
        HTTP[HTTP Transport
/mcp endpoint]
        STDIO[STDIO Transport]
        AUTH[OAuth Middleware]
        TOOLS[MCP Tools
• execute_query
• list_catalogs
• list_schemas
• list_tables
• get_table_schema
• explain_query]
    end
    
    subgraph "Data Layer"
        TRINO[Trino Cluster
Distributed SQL Engine]
        CATALOGS[Data Sources
• PostgreSQL
• MySQL
• S3/Hive
• BigQuery
• MongoDB]
    end
    
    %% Connections
    CC -.->|OAuth Flow| OP
    OP -.->|JWT Token| JWT
    
    CC -->|HTTP + JWT| HTTP
    CD -->|STDIO| STDIO
    CR -->|HTTP + JWT| HTTP
    WS -->|STDIO| STDIO
    CW -->|HTTP + JWT| HTTP
    
    HTTP --> AUTH
    AUTH -->|Validated| TOOLS
    STDIO --> TOOLS
    
    TOOLS -->|SQL Queries| TRINO
    TRINO --> CATALOGS
    
    %% Styling
    classDef client fill:#e1f5fe
    classDef auth fill:#f3e5f5
    classDef server fill:#e8f5e8
    classDef data fill:#fff3e0
    
    class CC,CD,CR,WS,CW client
    class OP,JWT auth
    class HTTP,STDIO,AUTH,TOOLS server
    class TRINO,CATALOGS data

关键部件:

  • AI客户端:各种MCP兼容应用程序
  • 认证:可选的OAuth 2.0与OIDC提供商
  • MCP服务器:基于Go的服务器,支持双传输
  • 命令行接口命令模式:用于直接Trino访问的交互式SQL shell(类似psql)
  • 数据层:Trino集群连接到多个数据源

特性

  • 双模式:既可作为MCP服务器,又可作为交互式CLI

- 命令行接口命令模式:类似psql的交互式SQL shell,用于直接Trino访问 - MCP模式:用于AI助手集成的完整MCP服务器

  • ✅ Go中MCP服务器的实现
  • ✅ 通过MCP工具执行Trino SQL查询
  • ✅ 目录、架构和表发现
  • ✅ Docker容器支持
  • ✅ 支持STDIO和HTTP传输
  • ✅ OAuth 2.1身份验证 oauth-mcp代理 图书馆

- 4供应商:HMAC、Okta、谷歌、Azure AD - 原生模式:客户端直接处理OAuth(无服务器端机密) - 代理模式:服务器为简单客户端代理OAuth流 - 生产就绪:令牌缓存、PKCE、深度防御安全 - 可重复使用的:OAuth库可用于任何Go MCP服务器

  • ✅ 具有JWT身份验证的流式HTTP支持(从SSE升级)
  • ✅ 与SSE端点向后兼容
  • ✅ 兼容Cursor、Claude Desktop、Windsurf、ChatWise和任何兼容MCP的客户端。
  • ✅ 用户身份跟踪:

- 查询归因 (自动):通过标记OAuth用户的查询 X-Trino-Client-Tags/Info 标头 - 用户模拟 (选择加入):以OAuth用户身份通过以下方式执行查询 X-Trino-User 头球

安装和快速启动

安装:

# Homebrew
brew install tuannvm/mcp/mcp-trino

# Or one-liner (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash

Run(地方发展):

export TRINO_HOST=localhost TRINO_USER=trino
mcp-trino

有关OAuth的生产部署,请参阅 部署指导OAuth架构.

命令行接口命令模式

mcp-trino可以用作交互式CLI,类似于 psql 或Trino CLI:

# Interactive REPL mode
mcp-trino --interactive

# Execute a query directly
mcp-trino query "SELECT * FROM my_table LIMIT 10"

# List catalogs, schemas, tables
mcp-trino catalogs
mcp-trino schemas my_catalog
mcp-trino tables my_catalog my_schema

# Describe a table
mcp-trino describe my_catalog.my_schema.my_table

# Explain a query
mcp-trino explain "SELECT COUNT(*) FROM my_table"

# Output formats
mcp-trino --format json query "SELECT 1"
mcp-trino --format csv query "SELECT 1"
mcp-trino --format table query "SELECT 1"  # default

内置帮助

每个命令都有结构化的、LLM友好的帮助输出:

# Main help with all commands, flags, examples, and environment variables
mcp-trino --help

# Per-subcommand help
mcp-trino query --help
mcp-trino describe --help

帮助输出遵循Unix手册页的约定,包括以下部分:名称、概要、描述、命令、标志、示例、环境和配置。

退出代码

代码含义
0成功
1运行时错误(连接失败、查询错误等)
2使用错误(未知命令、无效标志、缺少参数)

命名配置文件

mcp-trino支持命名连接配置文件,以便在trino环境之间轻松切换。

配置文件 --同时支持YAML(~/.config/trino/config.yaml)JSON(~/.config/trino/config.json):

# ~/.config/trino/config.yaml
current: prod

profiles:
  prod:
    host: trino.example.com
    port: 443
    user: prod_user
    password: prod_password
    catalog: hive
    schema: analytics
    ssl:
      enabled: true
      insecure: false

  dev:
    host: localhost
    port: 8080
    user: trino
    catalog: memory
    schema: default

  staging:
    host: staging-trino.example.com
    port: 443
    user: staging_user

output:
  format: table

或者在JSON中:

{
  "current": "prod",
  "profiles": {
    "prod": {
      "host": "trino.example.com",
      "port": 443,
      "user": "prod_user",
      "catalog": "hive",
      "ssl": { "enabled": true }
    },
    "dev": {
      "host": "localhost",
      "port": 8080,
      "user": "trino"
    }
  },
  "output": { "format": "table" }
}

当两个文件都存在时, config.json 优先。新配置默认为JSON。

配置文件管理命令:

# List all profiles
mcp-trino config profile list

# Set default profile
mcp-trino config profile use prod

# Show profile details
mcp-trino config profile show staging

# Use a specific profile (overrides config file)
mcp-trino --profile dev catalogs

配置优先级 (从高到低):

  1. CLI标志(--host, --port等等)
  2. --profile 旗帜
  3. TRINO_PROFILE 环境变量
  4. current 配置文件中的字段
  5. default 配置文件回退
  6. 环境变量(TRINO_HOST等等)

环境变量 (最低优先级-被配置文件和标志覆盖):

export TRINO_HOST=trino.example.com
export TRINO_PORT=443
export TRINO_USER=myuser
export TRINO_PASSWORD=mypass
export TRINO_CATALOG=hive
export TRINO_SCHEMA=analytics
export TRINO_SSL=true

秘密管理 (推荐):

机密完全从环境变量加载。在启动时使用secrets CLI通过Unix管道注入它们——该应用程序永远不会触及您的保管库:

# 1Password CLI — resolves op:// references in an env file
op run --env-file=.env -- mcp-trino

# Or inline per-variable
TRINO_PASSWORD=$(op read 'op://Engineering/Trino/password') mcp-trino

docs/secrets.md 用于1Password、Vault和Kubernetes模式,以及安全细微差别(shell历史、进程列表和env-var泄漏)。

REPL元命令 (在交互模式下):

  • \help -显示帮助
  • \quit, \exit, \q -退出REPL
  • \history -显示命令历史记录
  • \catalogs -列出所有目录
  • \schemas [catalog] -列出架构
  • \tables [catalog schema] -列出表格
  • \describe -描述表格
  • \format -更改输出格式

用法

支持的客户端: 克劳德桌面,克劳德代码,光标,风帆,ChatWise

可用工具: execute_query, list_catalogs, list_schemas, list_tables, get_table_schema, explain_query

有关客户端集成和工具文档,请参阅 集成指南工具参考.

配置

关键变量: TRINO_HOST, TRINO_USER, TRINO_SCHEME, MCP_TRANSPORT, OAUTH_PROVIDER

秘密管理: 通过流程环境注入机密-- mcp-trino 直接阅读它们。看 docs/secrets.md 用于1Password、Vault和Kubernetes配方。

# 1Password (biometric-gated, zero disk writes)
op run --env-file=.env -- mcp-trino

# Vault (via vault-agent or CLI)
TRINO_PASSWORD=$(vault kv get -field=password secret/mcp-trino) mcp-trino

# Kubernetes: use standard Secret → envFrom in the Helm chart values

OAuth配置:

# Native mode (most secure - zero server-side secrets)
export OAUTH_ENABLED=true OAUTH_MODE=native OAUTH_PROVIDER=okta
export OIDC_ISSUER=https://company.okta.com OIDC_AUDIENCE=https://mcp-server.com

# Proxy mode (centralized credential management)
export OAUTH_MODE=proxy OIDC_CLIENT_ID=app-id OIDC_CLIENT_SECRET=secret
export OAUTH_REDIRECT_URI=https://mcp-server.com/oauth/callback  # Fixed mode (localhost-only)
export OAUTH_REDIRECT_URI=https://app1.com/cb,https://app2.com/cb  # Allowlist mode
export JWT_SECRET=$(openssl rand -hex 32)  # Required for multi-pod deployments

性能优化:

# Focus AI on specific schemas only (10-20x performance improvement)
export TRINO_ALLOWED_SCHEMAS="hive.analytics,hive.marts,hive.reporting"

用户身份跟踪:

# Query Attribution is AUTOMATIC when OAuth is enabled
# Queries are tagged with X-Trino-Client-Tags and X-Trino-Client-Info headers

# For full impersonation (Trino enforces user permissions):
export TRINO_ENABLE_IMPERSONATION=true
export TRINO_IMPERSONATION_FIELD=email  # Options: username, email, subject

有关完整配置,请参阅 部署指导, OAuth指南, 允许列表指南,以及 用户身份指南.

OAuth实现

mcp trino使用 oauth-mcp代理 -Go MCP服务器的独立OAuth 2.1库。

为什么要有独立的图书馆?

  • ✅ 可在任何Go MCP服务器上重复使用
  • ✅ 独立测试和版本控制
  • ✅ 专用文档和示例
  • ✅ 社区维护的OAuth实现

有关OAuth的详细信息:

贡献

欢迎投稿!请随时提交拉取请求。

许可证

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

相关项目

  • oauth-mcp代理 -mcp-trino使用的OAuth 2.1身份验证库(可用于任何Go mcp服务器)

CI/CD及其发布

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

持续集成检查

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

代码质量

  • 掉毛:使用golangci-lint检查常见的代码问题和样式违规
  • Go模块验证:确保go.mod和go.sum得到妥善维护
  • 格式化:使用gofmt验证代码的格式是否正确

安全

  • 漏洞扫描:使用govullcheck检查依赖关系中的已知漏洞
  • 依赖关系扫描:使用Trivy扫描依赖关系中的漏洞(关键、高和中)
  • SBOM生成:创建用于依赖性跟踪的软件物料清单
  • SLSA来源:为供应链安全创建可验证的构建来源

测试

  • 单元测试:运行带有种族检测和代码覆盖率报告的测试
  • 构建验证:确保代码库构建成功

CI/CD安全

  • 最小权限:工作流以所需的最小权限运行
  • 固定版本:所有GitHub操作都使用特定版本来防止供应链攻击
  • 依赖关系更新:通过Dependabot自动更新依赖关系

发布过程

当更改合并到主分支时:

  1. 运行CI检查以验证代码质量和安全性
  2. 如果成功,将自动创建一个新版本,其中包含:

- 基于提交消息的语义版本控制 - 针对多个平台的二进制构建 - Docker镜像发布到GitHub容器注册表 - SBOM和来源证明

目录标签

目录标签

GoClaude数据分析developer-toolsmcptrinomcp-server分布式SQL本地部署AI助手集成数据库查询高性能服务器Go语言开发

支持客户端

Claude DesktopClaudeCursorWindsurf

接入字段

传输方式(transport,传输协议)

SSE

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

SSEnone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP