返回市场
麦普特里诺

麦普特里诺

作者:tuannvm82 星标更新:2025-11-10

项目介绍

使用Go编写的Trino MCP服务器

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

GitHub Workflow Status Go Version Trivy Scan SLSA 3 Go Report Card Go Reference Docker Image GitHub Release License: MIT

Trust Score

概述

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

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

架构

graph TB
    subgraph "AI客户端"
        CC[Claude Code]
        CD[Claude Desktop]
        CR[Cursor]
        WS[Windsurf]
        CW[ChatWise]
    end
    
    subgraph "认证(可选)"
        OP[OAuth提供者<br/>Okta/Google/Azure AD]
        JWT[JWT令牌]
    end
    
    subgraph "MCP服务器(mcp-trino)"
        HTTP[HTTP传输<br/>/mcp端点]
        STDIO[STDIO传输]
        AUTH[OAuth中间件]
        TOOLS[MCP工具<br/>• 执行查询<br/>• 列出目录<br/>• 列出模式<br/>• 列出表<br/>• 获取表模式<br/>• 解释查询]
    end
    
    subgraph "数据层"
        TRINO[Trino集群<br/>分布式SQL引擎]
        CATALOGS[数据源<br/>• PostgreSQL<br/>• MySQL<br/>• S3/Hive<br/>• BigQuery<br/>• MongoDB]
    end
    
    %% 连接
    CC -.->|OAuth流程| OP
    OP -.->|JWT令牌| JWT
    
    CC -->|HTTP + JWT| HTTP
    CD -->|STDIO| STDIO
    CR -->|HTTP + JWT| HTTP
    WS -->|STDIO| STDIO
    CW -->|HTTP + JWT| HTTP
    
    HTTP --> AUTH
    AUTH -->|验证| TOOLS
    STDIO --> TOOLS
    
    TOOLS -->|SQL查询| TRINO
    TRINO --> CATALOGS
    
    %% 样式
    classDef 客户端 fill:#e1f5fe
    classDef 认证 fill:#f3e5f5
    classDef 服务器 fill:#e8f5e8
    classDef 数据 fill:#fff3e0
    
    class CC,CD,CR,WS,CW 客户端
    class OP,JWT 认证
    class HTTP,STDIO,AUTH,TOOLS 服务器
    class TRINO,CATALOGS 数据

关键组件:

  • AI客户端:各种兼容MCP的应用程序
  • 认证:可选的OAuth 2.0与OIDC提供商
  • MCP服务器:支持双传输的基于Go的服务器
  • 数据层:连接到多个数据源的Trino集群

特性

  • ✅ 使用Go实现的MCP服务器
  • ✅ 通过MCP工具执行Trino SQL查询
  • ✅ 目录、模式和表发现
  • ✅ 支持Docker容器
  • ✅ 支持STDIO和HTTP传输
  • ✅ 通过oauth-mcp-proxy库实现OAuth 2.1认证
    • 4个提供商:HMAC,Okta,Google,Azure AD
    • 本地模式:客户端直接处理OAuth(零服务器端秘密)
    • 代理模式:服务器代理OAuth流以简化客户端
    • 生产就绪:令牌缓存,PKCE,纵深防御安全
    • 可重用:任何Go MCP服务器可用的OAuth库
  • ✅ 支持JWT认证的StreamableHTTP(从SSE升级)
  • ✅ 兼容SSE端点的向后兼容性
  • ✅ 兼容Cursor,Claude Desktop,Windsurf,ChatWise以及任何兼容MCP的客户端。

安装及快速开始

安装:

# Homebrew
brew install tuannvm/mcp/mcp-trino

# 或单行命令(macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash

运行(本地开发):

export TRINO_HOST=localhost TRINO_USER=trino
mcp-trino

对于带有OAuth的生产部署,请参阅部署指南OAuth架构

使用

支持的客户端:Claude Desktop,Claude Code,Cursor,Windsurf,ChatWise

可用工具execute_querylist_catalogslist_schemaslist_tablesget_table_schemaexplain_query

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

配置

关键变量TRINO_HOSTTRINO_USERTRINO_SCHEMEMCP_TRANSPORTOAUTH_PROVIDER

OAuth配置:

# 本地模式(最安全 - 零服务器端秘密)
export OAUTH_ENABLED=true OAUTH_MODE=native OAUTH_PROVIDER=okta
export OIDC_ISSUER=https://company.okta.com OIDC_AUDIENCE=https://mcp-server.com

# 代理模式(集中凭证管理)
export OAUTH_MODE=proxy OIDC_CLIENT_ID=app-id OIDC_CLIENT_SECRET=secret
export OAUTH_REDIRECT_URI=https://mcp-server.com/oauth/callback  # 固定模式(仅限localhost)
export OAUTH_REDIRECT_URI=https://app1.com/cb,https://app2.com/cb  # 允许列表模式
export JWT_SECRET=$(openssl rand -hex 32)  # 多pod部署所需

性能优化:

# 专注于特定模式(性能提升10-20倍)
export TRINO_ALLOWED_SCHEMAS="hive.analytics,hive.marts,hive.reporting"

有关完整的配置,请参阅部署指南OAuth架构允许列表指南

OAuth实现

mcp-trino使用oauth-mcp-proxy - 一个独立的适用于Go MCP服务器的OAuth 2.1库。

为什么是单独的库?

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

关于OAuth详情:

贡献

欢迎贡献!请随时提交Pull Request。

许可证

本项目采用MIT许可证 - 详见LICENSE文件。

相关项目

  • oauth-mcp-proxy - 由mcp-trino使用的OAuth 2.1认证库(可用于任何Go MCP服务器)

CI/CD和发布

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

持续集成检查

我们的CI流水线在所有PR和主分支的提交上执行以下检查:

代码质量

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

安全

  • 漏洞扫描:使用govulncheck检查依赖项中的已知漏洞
  • 依赖项扫描:使用Trivy扫描依赖项中的漏洞(严重、高和中等)
  • SBOM生成:创建依赖项跟踪的软件物料清单
  • SLSA证明:创建可验证的构建证明以保障供应链安全

测试

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

CI/CD安全

  • 最小权限:工作流以最低必需权限运行
  • 固定版本:所有GitHub Actions使用特定版本以防止供应链攻击
  • 依赖项更新:通过Dependabot自动更新依赖项

发布过程

当更改合并到主分支时:

  1. 运行CI检查以验证代码质量和安全性
  2. 如果成功,则自动创建新版本,包括:
    • 基于提交消息的语义版本
    • 多平台的二进制构建
    • 将Docker镜像发布到GitHub容器注册表
    • SBOM和证明属性