Trino için Model Context Protocol (MCP) sunucusunun Go uygulaması.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"tuannvm-mcp-trino": {
"command": "node",
"args": [
"~/.mcp/mcp-trino/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/tuannvm/mcp-trino.git ~/.mcp/mcp-trino
cd ~/.mcp/mcp-trino Trino için Go'da uygulanmış yüksek performanslı bir Model Context Protocol (MCP) sunucusu. Bu proje, AI asistanlarının Trino'nun dağıtılmış SQL sorgu motoruyla standardlaştırılmış MCP araçları aracılığıyla sorunsuz bir şekilde etkileşim kurmasını sağlar.
Bu proje, Trino için bir Model Context Protocol (MCP) sunucusu Go'da uygulamaktadır. AI asistanlarının Trino'nun dağıtılmış SQL sorgu motoruna standardlaştırılmış MCP araçları aracılığıyla erişmesini sağlar.
Trino (eski adıyla PrestoSQL), büyük veri setleri üzerinde hızlı analitiği için tasarlanmış güçlü bir dağıtılmış SQL sorgu motorudur.
graph TB
subgraph "AI Clients"
CC[Claude Code]
CD[Claude Desktop]
CR[Cursor]
WS[Windsurf]
CW[ChatWise]
end
subgraph "Authentication (Optional)"
OP[OAuth Provider<br/>Okta/Google/Azure AD]
JWT[JWT Tokens]
end
subgraph "MCP Server (mcp-trino)"
HTTP[HTTP Transport<br/>/mcp endpoint]
STDIO[STDIO Transport]
AUTH[OAuth Middleware]
TOOLS[MCP Tools<br/>• execute_query<br/>• list_catalogs<br/>• list_schemas<br/>• list_tables<br/>• get_table_schema<br/>• explain_query]
end
subgraph "Data Layer"
TRINO[Trino Cluster<br/>Distributed SQL Engine]
CATALOGS[Data Sources<br/>• PostgreSQL<br/>• MySQL<br/>• S3/Hive<br/>• BigQuery<br/>• 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
Ana Bileşenler:
X-Trino-Client-Tags/Info başlıkları aracılığıyla OAuth kullanıcısıyla etiketlerX-Trino-User başlığı aracılığıyla OAuth kullanıcısı olarak sorguları yürütürKurun:
# Homebrew
brew install tuannvm/mcp/mcp-trino
# Veya tek satırlı (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/tuannvm/mcp-trino/main/install.sh | bash
Çalıştırın (Yerel Geliştirme):
export TRINO_HOST=localhost TRINO_USER=trino
mcp-trino
OAuth ile üretime hazır dağıtım için Dağıtım Rehberi ve OAuth Mimarisi başlıklarına bakın.
mcp-trino, psql veya Trino CLI'ya benzer şekilde etkileşimli CLI olarak kullanılabilir:
# Etkileşimli REPL modu
mcp-trino --interactive
# Bir sorguyu doğrudan yürütün
mcp-trino query "SELECT * FROM my_table LIMIT 10"
# Katalogları, şemaları, tabloları listeleyin
mcp-trino catalogs
mcp-trino schemas my_catalog
mcp-trino tables my_catalog my_schema
# Bir tabloyu açıklayın
mcp-trino describe my_catalog.my_schema.my_table
# Bir sorguyu açıklayın
mcp-trino explain "SELECT COUNT(*) FROM my_table"
# Çıktı formatları
mcp-trino --format json query "SELECT 1"
mcp-trino --format csv query "SELECT 1"
mcp-trino --format table query "SELECT 1" # varsayılan
Her komutun yapılandırılmış, LLM dostu yardım çıktısı vardır:
# Tüm komutları, bayrakları, örnekleri ve ortam değişkenlerini gösteren ana yardım
mcp-trino --help
# Alt komuta özgü yardım
mcp-trino query --help
mcp-trino describe --help
Yardım çıktısı Unix man-sayfası kurallarını takip eder: NAME, SYNOPSIS, DESCRIPTION, COMMANDS, FLAGS, EXAMPLES, ENVIRONMENT ve CONFIGURATION bölümleri.
| Kod | Anlam |
|---|---|
| 0 | Başarı |
| 1 | Çalışma zamanı hatası (bağlantı başarısız, sorgu hatası, vb.) |
| 2 | Kullanım hatası (bilinmeyen komut, geçersiz bayraklar, eksik argümanlar) |
mcp-trino, Trino ortamları arasında kolay geçiş için adlandırılmış bağlantı profillerini destekler.
Yapılandırma Dosyası — YAML (~/.config/trino/config.yaml) ve JSON (~/.config/trino/config.json) ikisini destekler:
# ~/.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
Veya eşdeğer olarak JSON'da:
{
"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" }
}
Her iki dosya mevcut olduğunda, config.json önceliklidir. Yeni konfigurasyonlar varsayılan olarak JSON'dur.
Profil Yönetimi Komutları:
# Tüm profilleri listeleyin
mcp-trino config profile list
# Varsayılan profili ayarlayın
mcp-trino config profile use prod
# Profil ayrıntılarını gösterin
mcp-trino config profile show staging
# Belirli bir profil kullanın (yapılandırma dosyasını geçersiz kılar)
mcp-trino --profile dev catalogs
Yapılandırma Önceliği (en yüksekten en düşüğe):
--host, --port, vb.)--profile bayrağıTRINO_PROFILE ortam değişkenicurrent alanıdefault profil geri dönüşüTRINO_HOST, vb.)Ortam Değişkenleri (en düşük öncelik - profiller ve bayraklar tarafından geçersiz kılınır):
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
Sır Yönetimi (önerilen):
Sırlar yalnızca ortam değişkenlerinden yüklenir. Başlangıç zamanında Unix piping aracılığıyla bir sırlar CLI kullanarak bunları enjekte edin — uygulama asla kasanıza dokunmaz:
# 1Password CLI — .env dosyasında op:// referanslarını çözer
op run --env-file=.env -- mcp-trino
# Veya satır içi değişken başına
TRINO_PASSWORD=$(op read 'op://Engineering/Trino/password') mcp-trino
docs/secrets.md dosyasına bakın 1Password, Vault ve Kubernetes desenleri için, ve güvenlik nüansları (shell geçmişi, işlem listesi ve ortam değişkeni sızıntısı) için.
REPL Meta-Komutları (etkileşimli modda):
\help - Yardımı göster\quit, \exit, \q - REPL'den çık\history - Komut geçmişini göster\catalogs - Tüm katalogları listele\schemas [catalog] - Şemaları listele\tables [catalog schema] - Tabloları listele\describe <table> - Tabloyu açıkla\format <table|json|csv> - Çıktı formatını değiştirDesteklenen İstemciler: Claude Desktop, Claude Code, Cursor, Windsurf, ChatWise
Mevcut Araçlar: execute_query, list_catalogs, list_schemas, list_tables, get_table_schema, explain_query
İstemci entegrasyonu ve araç dokümantasyonu için Entegrasyon Rehberi ve Araçlar Referansı başlıklarına bakın.
Temel Değişkenler: TRINO_HOST, TRINO_USER, TRINO_SCHEME, MCP_TRANSPORT, OAUTH_PROVIDER
Sır Yönetimi: Sırları işlem ortamı aracılığıyla enjekte edin — mcp-trino bunları doğrudan okur. docs/secrets.md dosyasına bakın 1Password, Vault ve Kubernetes tarifler için.
# 1Password (biyometrik kapsama, disk yazıları sıfır)
op run --env-file=.env -- mcp-trino
# Vault (vault-agent veya CLI aracılığıyla)
TRINO_PASSWORD=$(vault kv get -field=password secret/mcp-trino) mcp-trino
# Kubernetes: Helm chart değerlerinde standart Secret → envFrom kullanın
OAuth Yapılandırması:
# Native mod (en güvenli - sunucu tarafında sıfır sır)
export OAUTH_ENABLED=true OAUTH_MODE=native OAUTH_PROVIDER=okta
export OIDC_ISSUER=https://company.okta.com OIDC_AUDIENCE=https://mcp-server.com
# Proxy mod (merkezi kimlik bilgileri yönetimi)
export OAUTH_MODE=proxy OIDC_CLIENT_ID=app-id OIDC_CLIENT_SECRET=secret
export OAUTH_REDIRECT_URI=https://mcp-server.com/oauth/callback # Sabit mod (yalnızca localhost)
export OAUTH_REDIRECT_URI=https://app1.com/cb,https://app2.com/cb # İzin listesi modu
export JWT_SECRET=$(openssl rand -hex 32) # Multi-pod dağıtımlar için gerekli
Performans Optimizasyonu:
# AI'ı yalnızca belirli şemaları odaklanmasını sağlayın (10-20x performans iyileşmesi)
export TRINO_ALLOWED_SCHEMAS="hive.analytics,hive.marts,hive.reporting"
Kullanıcı Kimlik İzleme:
# Sorgu Atlaması OAuth etkinleştirildiğinde OTOMATİKTİR
# Sorgular X-Trino-Client-Tags ve X-Trino-Client-Info başlıklarıyla etiketlenir
# Tam kimlik bürünme için (Trino kullanıcı izinlerini zorunlu kılar):
export TRINO_ENABLE_IMPERSONATION=true
export TRINO_IMPERSONATION_FIELD=email # Seçenekler: username, email, subject
Tam yapılandırma için Dağıtım Rehberi, OAuth Rehberi, İzin Listeleri Rehberi ve Kullanıcı Kimlik Rehberi başlıklarına bakın.
mcp-trino, oauth-mcp-proxy — Go MCP sunucuları için bağımsız OAuth 2.1 kütüphanesi kullanır.
Neden ayrı bir kütüphane?
OAuth ayrıntıları için:
Katkılar memnuniyetle karşılanır! Lütfen bir Pull Request göndermekten çekinmeyin.
Bu proje MIT Lisansı altında lisanslanmıştır - ayrıntılar için LICENSE dosyasına bakın.
Bu proje, sürekli entegrasyon için GitHub Actions ve otomatik yayınlar için GoReleaser kullanır.
CI pipeline'ı, tüm PR'ler ve main branch'e yapılan commits üzerinde aşağıdaki kontrolleri gerçekleştirir:
Değişiklikler main branch'e birleştirildiğinde:
Veritabanları için kolay, hızlı ve güvenli araçlar sağlayan açık kaynak MCP sunucusu.
Baserow veritabanı entegrasyonu ile tablo arama, listeleme ve satır oluşturma, okuma, güncelleme ve silme işlemlerini gerçekleştirebilirsiniz.
Postgres geliştirme ve operasyonları için kapsamlı MCP sunucusu; performans analizi, ayarlama ve sağlık kontrolleri için araçlar içerir.
Supabase'in resmi MCP sunucusu, AI asistanlarını doğrudan Supabase projenize bağlayarak tablo yönetimi, config getirme ve veri sorgulama gibi işlemleri gerçekleştirmelerine olanak tanır.
NodeJS'de MySQL veritabanı entegrasyonu, yapılandırılabilir erişim kontrolleri ve schema incelemesi özellikleri ile sağlanır.
A Qdrant MCP server