Snowflake-Labs tarafından sunulan açık kaynak MCP sunucusu, Cortex Agents istemini, yapılandırılmış ve yapılandırılmamış veri sorgulama, nesne yönetimi, SQL yürütme, semantik view sorgulama ve daha fazlasını destekler. RBAC, ayrıntılı CRUD kontrolleri ve tüm kimlik doğrulama yöntemleri desteklenmektedir.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"snowflake-labs-mcp": {
"command": "python",
"args": [
"-m",
"mcp"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/Snowflake-Labs/mcp.git ~/.mcp/mcp
cd ~/.mcp/mcp [!CAUTION] Bu proje kullanım dışıdır ve artık bakımı yapılmamaktadır. Lütfen resmi Snowflake MCP Sunucusu'na geçiş yapınız. Resmi sunucu aktif olarak geliştirilmekte, Snowflake tarafından tam desteklenmekte ve yeni özellikler eklemeye devam etmektedir.
Bu topluluk MCP sunucusu daha önce Snowflake Cortex AI, nesne yönetimi ve SQL orkestrasyonu için araçlar sağlamıştır. Artık desteklenmemektedir. Tüm yeni ve mevcut kullanım durumları için lütfen bunun yerine resmi Snowflake MCP Sunucusu'nu kullanınız.
MCP sunucusu aşağıdaki yetenekleri desteklemekteydi:
Tüm araçları yönlendirmek için basit bir konfigürasyon dosyası kullanılır. services/configuration.yaml adresinde bir örnek görebilir ve aşağıda bir şablon bulunmaktadır. Bu konfigürasyon dosyasının yolu sunucuya iletilecek ve içeriği başlangıçta MCP sunucusu araçlarını oluşturmak için kullanılacaktır.
Cortex Hizmetleri
Birçok Cortex Agent, Search ve Analyst hizmeti eklenebilir. İdeal açıklamalar hem oldukça açıklayıcı hem de birbirini dışlayan niteliktedir. Yalnızca açıkça listelenen Cortex hizmetleri MCP istemcisinde araç olarak kullanılabilir.
Diğer Hizmetler
Diğer hizmetler nesne yönetimi, sorgu yürütme ve semantic view kullanımı için araçlar içerir.
Bu araç grupları, konfigürasyon dosyasının other_services bölümünde True olarak ayarlanarak etkinleştirilebilir.
SQL Statement İzinleri
sql_statement_permissions bölümü, yalnızca Snowflake nesnelerini değiştirme erişimi olan herhangi bir araç aracılığıyla onaylı bildirimlerin yürütülmesini sağlar.
Liste SQL ifade türlerini içerir. True ile işaretlenenler izin verilen, False ile işaretlenenler izin verilmeyenler olup, her ifade türünün örnekleri için lütfen SQL Yürütme bölümüne bakınız.
agent_services: # Tüm Cortex Agent hizmetlerini listeleyin
- service_name: <service_name>
description: > # agent hizmetinin içeriğini açıklayın
<Agent service that ...>
database_name: <database_name>
schema_name: <schema_name>
- service_name: <service_name>
description: > # agent hizmetinin içeriğini açıklayın
<Agent service that ...>
database_name: <database_name>
schema_name: <schema_name>
search_services: # Tüm Cortex Search hizmetlerini listeleyin
- service_name: <service_name>
description: > # search hizmetinin içeriğini açıklayın
<Search services that ...>
database_name: <database_name>
schema_name: <schema_name>
- service_name: <service_name>
description: > # search hizmetinin içeriğini açıklayın
<Search services that ...>
database_name: <database_name>
schema_name: <schema_name>
analyst_services: # Tüm Cortex Analyst semantic model/view'larını listeleyin
- service_name: <service_name> # hizmet için açıklayıcı bir ad oluşturun
semantic_model: <semantic_yaml_or_view> # Tam olarak nitelendirilmiş semantic YAML model veya Semantic View
description: > # analyst hizmetinin içeriğini açıklayın
<Analyst service that ...>
- service_name: <service_name> # hizmet için açıklayıcı bir ad oluşturun
semantic_model: <semantic_yaml_or_view> # Tam olarak nitelendirilmiş semantic YAML model veya Semantic View
description: > # analyst hizmetinin içeriğini açıklayın
<Analyst service that ...>
other_services: # Araç grupları için istediğiniz araç grubunu True olarak ayarlayarak etkinleştirin
object_manager: True # Snowflake'nin en yaygın nesnelerine karşı oluşturma, silme, güncelleme ve daha fazlası gibi temel işlemler gerçekleştirin.
query_manager: True # Kullanıcı tarafından yapılandırılan izinler tarafından yönetilen LLM tarafından oluşturulan SQL'i çalıştırın.
semantic_manager: True # Snowflake Semantic Views'larını ve bunların bileşenlerini keşfedin ve sorgulayın.
sql_statement_permissions: # Açıkça izin vermek için (True) veya yasaklamak için (False) SQL ifadelerini listeleyin.
# - All: True # Her şeye izin vermek için, açıklamayı kaldırın ve All: True olarak ayarlayın.
- Alter: True
- Command: True
- Comment: True
- Commit: True
- Copy: True
- Create: True
- Delete: True
- Describe: True
- Drop: True
- Insert: True
- Merge: True
- Rollback: True
- Select: True
- Transaction: True
- TruncateTable: True
- Unknown: False # Bilinmeyen veya eşleşmeyen ifade türlerine izin vermek için Unknown: True olarak ayarlayın.
- Update: True
- Use: True
[!NOTE] Konfigürasyon dosyasının önceki sürümleri her Cortex Search hizmeti için sütunların ve limit'in açık değerlerini belirtmeyi desteklemekteydi. Bunun yerine, bunlar artık yalnızca kullanıcı istemine dayalı olarak dinamiktir. Belirtilmemişse, bir search hizmetinin varsayılan search_columns 10'luk bir limit ile döndürülecektir.
MCP sunucusu, tüm kimlik doğrulama ve bağlantı yöntemleri için Snowflake Python Connector'ı kullanır. Kapsamlı kimlik doğrulama seçenekleri ve en iyi uygulamalar için lütfen resmi Snowflake dokümantasyonuna bakınız.
MCP sunucusu, bağlantı parametrelerine geçilen belirtilen role (role parametresi geçilmişse) veya kullanıcının varsayılan role'ü (role geçilmemişse) atanan RBAC izinlerini onurlandırır.
Bağlantı parametreleri CLI argümanları ve/veya çevre değişkenleri olarak iletilabilir. Sunucu, Snowflake Python Connector'da bulunan tüm kimlik doğrulama yöntemlerini destekler:
Bağlantı parametreleri CLI argümanları ve/veya çevre değişkenleri olarak iletilebilir:
| Parametre | CLI Argümanları | Çevre Değişkeni | Açıklama |
|---|---|---|---|
| Account | --account | SNOWFLAKE_ACCOUNT | Hesap tanımlayıcısı (örn. xy12345.us-east-1) |
| Host | --host | SNOWFLAKE_HOST | Snowflake host URL'si |
| User | --user, --username | SNOWFLAKE_USER | Kimlik doğrulama için kullanıcı adı |
| Password | --password | SNOWFLAKE_PASSWORD | Şifre veya programmatic access token |
| Role | --role | SNOWFLAKE_ROLE | Bağlantı için kullanılacak role |
| Warehouse | --warehouse | SNOWFLAKE_WAREHOUSE | Sorgular için kullanılacak warehouse |
| Passcode in Password | --passcode-in-password | - | Passcode'un şifreye gömülü olup olmadığı |
| Passcode | --passcode | SNOWFLAKE_PASSCODE | MFA kimlik doğrulaması için passcode |
| Private Key | --private-key | SNOWFLAKE_PRIVATE_KEY | Key pair kimlik doğrulaması için private key |
| Private Key File | --private-key-file | SNOWFLAKE_PRIVATE_KEY_FILE | Private key dosyasının yolu |
| Private Key Password | --private-key-file-pwd | SNOWFLAKE_PRIVATE_KEY_FILE_PWD | Şifrelenmiş private key için şifre |
| Authenticator | --authenticator | - | Kimlik doğrulama türü (varsayılan: snowflake) |
| Connection Name | --connection-name | - | connections.toml (veya config.toml) dosyasından bağlantı adı |
[!WARNING] Kaldırma Bildirimi: CLI argümanları
--account-identifierve--pat, ayrıca çevre değişkeniSNOWFLAKE_PAT, kaldırılmıştır ve gelecek bir sürümde kaldırılacaktır. Lütfen bunun yerine--accountve--password(veyaSNOWFLAKE_ACCOUNTveSNOWFLAKE_PASSWORD) kullanınız.
MCP sunucusu birden fazla transport mekanizmasını destekler. MCP transport'ları hakkında ayrıntılı bilgi için FastMCP Transport Protocols bölümüne bakınız.
| Transport | Açıklama | Kullanım Durumu |
|---|---|---|
stdio |
Standart input/output (varsayılan) | Yerel geliştirme, MCP istemcisi entegrasyonu |
sse (eski) |
Server-Sent Events | Streaming uygulamaları |
streamable-http |
Streamable HTTP transport | Container dağıtımları, uzak sunucular |
# Varsayılan stdio transport
uvx snowflake-labs-mcp --service-config-file config.yaml
# Özel endpoint ile HTTP transport
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http --endpoint /my-endpoint
# Container'lar için (port 9000 üzerinde streamable-http kullanır)
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http --endpoint /snowflake-mcp
sse ve streamable-http transport'ları için mevcut olan sunucu özelleştirmeleri:
| Parametre | CLI Argümanı | Çevre Değişkeni | Varsayılan |
|---|---|---|---|
| Host | --server-host | SNOWFLAKE_MCP_HOST | "0.0.0.0" |
| Port | --port | SNOWFLAKE_MCP_PORT | 9000 |
| Endpoint | --endpoint | SNOWFLAKE_MCP_ENDPOINT | /mcp |
| Debug Logging | --verbose | SNOWFLAKE_MCP_VERBOSE | false |
Örnek:
export SNOWFLAKE_MCP_ENDPOINT="/my-mcp"
uvx snowflake-labs-mcp --service-config-file config.yaml --transport streamable-http
MCP sunucusu istemci-agnostiktir ve MCP araçları ve (isteğe bağlı) kaynaklar için temel işlevselliği destekleyen çoğu MCP İstemcisi ile çalışır. Aşağıda yerel yükleme örnekleri bulunmaktadır. Container dağıtımlarına bağlanmak için MCP İstemcilerini Container'lara Bağlama bölümüne bakınız.
Bu sunucuyu Claude Desktop ile MCP İstemcisi olarak entegre etmek için, uygulamanızın sunucu konfigürasyonunun aşağıdakini ekleyin. Varsayılan olarak, bu şu konumdadır:
Hizmet konfigürasyon dosyasının yolunu ayarlayın ve bağlantı yönteminizi yapılandırın:
{
"mcpServers": {
"mcp-server-snowflake": {
"command": "uvx",
"args": [
"snowflake-labs-mcp",
"--service-config-file",
"<path_to_file>/tools_config.yaml",
"--connection-name",
"default"
]
}
}
}
Cursor'da MCP sunucusunu, Cursor'u açıp Settings -> Cursor Settings -> MCP'ye giderek kaydettirin. Aşağıdakini ekleyin:
{
"mcpServers": {
"mcp-server-snowflake": {
"command": "uvx",
"args": [
"snowflake-labs-mcp",
"--service-config-file",
"<path_to_file>/tools_config.yaml",
"--connection-name",
"default"
]
}
}
}
MCP sunucusunu sohbetde bağlam olarak ekleyin.
Cursor sunucusu sorunlarını gidermek için, Output panelini açıp açılır menüden Cursor MCP'yi seçerek günlükleri görüntüleyin.
fastagent.config.yaml MCP sunucusu bölümünü konfigürasyon dosyası yolu ve bağlantı adı ile güncelleyin:
# MCP Sunucuları
mcp:
servers:
mcp-server-snowflake:
command: "uvx"
args: ["snowflake-labs-mcp", "--service-config-file", "<path_to_file>/tools_config.yaml", "--connection-name", "default"]
Ön koşullar, ortam kurulumu, adım adım kılavuz ve talimatlar için lütfen bu blog yazısına bakınız.
MCP sunucusunu codex'te kaydettirin, ~/.codex/config.toml dosyasına aşağıdakini ekleyerek
[mcp_servers.mcp-server-snowflake]
command = "uvx"
args = [
"snowflake-labs-mcp",
"--service-config-file",
"<path_to_file>/tools_config.yaml",
"--connection-name",
"default"
]
Düzenledikten sonra, snowflake mcp, terminaldeki codex mcp list çıktısında görünmelidir.
MCP sunucusunu uzak erişim veya üretim ortamları için container olarak dağıtın. Bu kılavuz, hem Docker hem de Docker Compose dağıtımları için adım adım talimatlar sağlar.
Docker kullanarak MCP sunucusunu dağıtmak için bu adımları izleyin:
MCP konfigürasyonu için bir dizin oluşturun ve şablonu kopyalayın:
mkdir -p ${HOME}/.mcp/
cp services/configuration.yaml ${HOME}/.mcp/tools_config.yaml
Konfigürasyon dosyasını ortamınızla eşleştirmek için düzenleyin:
# Konfigürasyon dosyasını gerektiği şekilde düzenleyin
# Hizmet adlarını, veritabanı/şema referanslarını güncelleyin ve istediğiniz özellikleri etkinleştirin
nano ${HOME}/.mcp/tools_config.yaml
Sağlanan Dockerfile'dan Docker image'ını oluşturun:
docker build -f docker/server/Dockerfile -t mcp-server-snowflake .
Snowflake bağlantı parametrelerinizi yapılandırın. Aşağıdaki kimlik doğrulama yöntemlerinden birini seçin:
Kullanıcı Adı/Şifre Kimlik Doğrulaması:
export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
export SNOWFLAKE_PASSWORD=<your_password>
Key Pair Kimlik Doğrulaması:
export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
export SNOWFLAKE_PRIVATE_KEY="$(cat <path_to_private_key.p8>)"
export SNOWFLAKE_PRIVATE_KEY_FILE_PWD=<your_key_password>
Konfigürasyon ve çevre değişkenleriniz ile container'ı başlatın:
Kullanıcı Adı/Şifre Kimlik Doğrulaması İçin:
docker run -d \
--name mcp-server-snowflake \
-p 9000:9000 \
-e SNOWFLAKE_ACCOUNT=${SNOWFLAKE_ACCOUNT} \
-e SNOWFLAKE_USER=${SNOWFLAKE_USER} \
-e SNOWFLAKE_PASSWORD=${SNOWFLAKE_PASSWORD} \
-v ${HOME}/.mcp/tools_config.yaml:/app/services/tools_config.yaml:ro \
mcp-server-snowflake
Key Pair Kimlik Doğrulaması İçin:
docker run -d \
--name mcp-server-snowflake \
-p 9000:9000 \
-e SNOWFLAKE_ACCOUNT=${SNOWFLAKE_ACCOUNT} \
-e SNOWFLAKE_USER=${SNOWFLAKE_USER} \
-e SNOWFLAKE_PRIVATE_KEY="${SNOWFLAKE_PRIVATE_KEY}" \
-e SNOWFLAKE_PRIVATE_KEY_FILE_PWD=${SNOWFLAKE_PRIVATE_KEY_FILE_PWD} \
-v ${HOME}/.mcp/tools_config.yaml:/app/services/tools_config.yaml:ro \
mcp-server-snowflake
Container'ın çalıştığından ve erişilebilir olduğundan emin olun:
# Container durumunu kontrol edin
docker ps
# Container günlüklerini kontrol edin
docker logs mcp-server-snowflake
# Endpoint'i test edin (MCP sunucusu bilgisini döndürmelidir)
curl http://localhost:9000/snowflake-mcp
Docker Compose kullanarak basitleştirilmiş bir dağıtım için bu adımları izleyin:
Konfigürasyon dizini oluşturun ve şablonu kopyalayın:
mkdir -p ${HOME}/.mcp/
cp services/configuration.yaml ${HOME}/.mcp/tools_config.yaml
Konfigürasyon dosyasını ortamınızla eşleştirmek için düzenleyin:
# Hizmet konfigürasyonlarını gerektiği şekilde güncelleyin
nano ${HOME}/.mcp/tools_config.yaml
Snowflake bağlantı parametrelerinizi yapılandırın:
export SNOWFLAKE_ACCOUNT=<your_account>
export SNOWFLAKE_USER=<your_username>
# Kullanıcı adı/şifre kimlik doğrulaması için:
export SNOWFLAKE_PASSWORD=<your_password>
# Key pair kimlik doğrulaması için, ayrıca ayarlayın:
# export SNOWFLAKE_PRIVATE_KEY="$(cat <path_to_private_key.p8>)"
# export SNOWFLAKE_PRIVATE_KEY_FILE_PWD=<your_key_password>
Docker Compose kullanarak container'ı başlatın:
docker-compose up -d
Hizmetlerin çalıştığından emin olun:
# Hizmet durumunu kontrol edin
docker-compose ps
# Günlükleri görüntüleyin
docker-compose logs
# Endpoint'i test edin
curl http://localhost:9000/snowflake-mcp
MCP sunucunuz container'da çalıştıktan sonra, çeşitli MCP istemcilerini buna bağlayabilirsiniz. Bağlantı konfigürasyonu tüm istemciler arasında aynıdır - yalnızca konfigürasyon biçimi farklıdır.
Bağlantı URL'si Biçimi:
http://localhost:9000/snowflake-mcphttp://<hostname>:<port>/snowflake-mcpclaude_desktop_config.json dosyanıza bunu ekleyin:
{
"mcpServers": {
"mcp-server-snowflake": {
"url": "http://localhost:9000/snowflake-mcp"
}
}
}
Cursor'daki MCP ayarlarınıza bunu ekleyin (Settings -> Cursor Settings -> MCP):
{
"mcpServers": {
"mcp-server-snowflake": {
"url": "http://localhost:9000/snowflake-mcp"
}
}
}
fastagent.config.yaml dosyanıza bunu ekleyin:
# MCP Sunucuları
mcp:
servers:
mcp-server-snowflake:
url: "http://localhost:9000/snowflake-mcp"
Notlar:
localhost:9000 yerine sunucunuzun hostname'i ve port'unu yazınKonfigürasyon dosyasının agent_services bölümündeki Cortex Agent (in agent_services section), Cortex Search (in search_services section) ve Cortex Analyst (in analyst_services section) örnekleri araçlar olarak sunulacaktır. Bu tür araçları hariç tutmak için bu bölümleri boş bırakın.
MCP sunucusunda yalnızca Cortex Agent nesneleri desteklenir. Yani, yalnızca Snowflake'de önceden yapılandırılan Cortex Agent nesneleri araç olarak kullanılabilir. Daha fazla ayrıntı için Cortex Agent Run API bölümüne bakınız.
Tüm hizmetlerin hizmet adı, veritabanı, şema vb. için doğru bağlam adlarına sahip olduğundan emin olun. İdeal açıklamalar hem oldukça açıklayıcı hem de birbirini dışlayan niteliktedir.
Analyst hizmetlerindeki semantic_model değeri, tam nitelikli bir semantic view VEYA Snowflake stage'deki semantic YAML dosyası olmalıdır:
MY_DATABASE.MY_SCHEMA.MY_SEMANTIC_VIEW@MY_DATABASE.MY_SCHEMA.MY_STAGE/my_semantic_file.yaml (@ işaretine dikkat edin.)MCP sunucusu, temel operasyon yönetimini yerine getirmek için dar kapsamlı düzinelerce araç içerir. Gelişmiş nesne yönetimi için Snowsight'ı doğrudan kullanmanız önerilir.
MCP sunucusu şu anda aşağıdaki nesne türlerini oluşturma, silme, oluşturma veya değiştirme, açıklama ve listeleme işlemlerini desteklemektedir.
Bu araçları etkinleştirmek için, konfigürasyon dosyasında other_services altında object_manager öğesini True olarak ayarlayın.
- Database
- Schema
- Table
- View
- Warehouse
- Compute Pool
- Role
- Stage
- User
- Image Repository
Lütfen bu araçların, konfigüras
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