这是一个使用Go实现的高性能模型上下文协议(MCP)服务器,用于Trino。该项目使AI助手能够通过标准化的MCP工具无缝地与Trino的分布式SQL查询引擎交互。
本项目实现了使用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 数据
关键组件:
安装:
# 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_query,list_catalogs,list_schemas,list_tables,get_table_schema,explain_query
关键变量:TRINO_HOST,TRINO_USER,TRINO_SCHEME,MCP_TRANSPORT,OAUTH_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架构和允许列表指南。
mcp-trino使用oauth-mcp-proxy - 一个独立的适用于Go MCP服务器的OAuth 2.1库。
为什么是单独的库?
关于OAuth详情:
欢迎贡献!请随时提交Pull Request。
本项目采用MIT许可证 - 详见LICENSE文件。
本项目使用GitHub Actions进行持续集成,并使用GoReleaser进行自动化发布。
我们的CI流水线在所有PR和主分支的提交上执行以下检查:
当更改合并到主分支时: