Databases Python ★ 292

Snowflake-Labs/mcp

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"
      ]
    }
  }
}

[KULLANIM DIŞI] Snowflake Cortex AI Model Context Protocol (MCP) Sunucusu

[!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.


Eski dokümantasyon (yalnızca referans için)

MCP sunucusu aşağıdaki yetenekleri desteklemekteydi:

  • Cortex Search: Snowflake'deki yapılandırılmamış verileri, özellikle Retrieval Augmented Generation (RAG) uygulamalarında kullanılan şekilde sorgulayın.
  • Cortex Analyst: Zengin anlamsal modelleme yoluyla Snowflake'deki yapılandırılmış verileri sorgulayın.
  • Cortex Agent: Yapılandırılmış ve yapılandırılmamış veri alımı arasında agentic orchestrator
  • Nesne Yönetimi: Oluşturma, silme, güncelleme ve daha fazlası gibi Snowflake'nin en yaygın nesnelerine karşı temel işlemler gerçekleştirin.
  • SQL Yürütme: 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 View Sorgulaması: Snowflake Semantic Views'ı keşfedin ve sorgulayın

Başlangıç

Servis Yapılandırması

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.

Snowflake'e Bağlanma

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:

  • Kullanıcı adı/şifre kimlik doğrulaması
  • Key pair kimlik doğrulaması
  • OAuth kimlik doğrulaması
  • Single Sign-On (SSO)
  • Multi-factor authentication (MFA)

Bağlantı Parametreleri

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-identifier ve --pat, ayrıca çevre değişkeni SNOWFLAKE_PAT, kaldırılmıştır ve gelecek bir sürümde kaldırılacaktır. Lütfen bunun yerine --account ve --password (veya SNOWFLAKE_ACCOUNT ve SNOWFLAKE_PASSWORD) kullanınız.

Transport Yapılandırması

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

Kullanım

# 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

Transport Özelleştirmeleri

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 İstemcileri ile Kullanım

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.

Claude Desktop

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:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

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

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.

fast-agent

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"]

Microsoft Visual Studio Code + GitHub Copilot

Ö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.

Codex

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.

Container Dağıtımı

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 Dağıtımı

Docker kullanarak MCP sunucusunu dağıtmak için bu adımları izleyin:

Adım 1: Konfigürasyon Dosyasını Hazırlayın

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

Adım 2: Hizmetleri Yapılandırın

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

Adım 3: Container Image'ı Oluşturun

Sağlanan Dockerfile'dan Docker image'ını oluşturun:

docker build -f docker/server/Dockerfile -t mcp-server-snowflake .

Adım 4: Çevre Değişkenlerini Ayarlayın

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>

Adım 5: Container'ı Çalıştırın

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

Adım 6: Dağıtımı Doğrulayın

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 Dağıtımı

Docker Compose kullanarak basitleştirilmiş bir dağıtım için bu adımları izleyin:

Adım 1: Konfigürasyon Dosyasını Hazırlayın

Konfigürasyon dizini oluşturun ve şablonu kopyalayın:

mkdir -p ${HOME}/.mcp/
cp services/configuration.yaml ${HOME}/.mcp/tools_config.yaml

Adım 2: Hizmetleri Yapılandırın

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

Adım 3: Çevre Değişkenlerini Ayarlayın

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>

Adım 4: Hizmetleri Başlatın

Docker Compose kullanarak container'ı başlatın:

docker-compose up -d

Adım 5: Dağıtımı Doğrulayın

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 İstemcilerini Container'lara Bağlama

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:

  • Yerel dağıtım: http://localhost:9000/snowflake-mcp
  • Uzak dağıtım: http://<hostname>:<port>/snowflake-mcp

Claude Desktop

claude_desktop_config.json dosyanıza bunu ekleyin:

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "url": "http://localhost:9000/snowflake-mcp"
    }
  }
}

Cursor

Cursor'daki MCP ayarlarınıza bunu ekleyin (Settings -> Cursor Settings -> MCP):

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "url": "http://localhost:9000/snowflake-mcp"
    }
  }
}

fast-agent

fastagent.config.yaml dosyanıza bunu ekleyin:

# MCP Sunucuları
mcp:
    servers:
        mcp-server-snowflake:
            url: "http://localhost:9000/snowflake-mcp"

Notlar:

  • Uzak dağıtımlar için localhost:9000 yerine sunucunuzun hostname'i ve port'unu yazın
  • Firewall'unuzun port 9000'de (veya yapılandırdığınız port'ta) bağlantılara izin verdiğinden emin olun
  • Üretim dağıtımları için HTTPS ve uygun kimlik doğrulama kullanmayı düşünün

Cortex Hizmetleri

Konfigü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:

  • Semantic view için: MY_DATABASE.MY_SCHEMA.MY_SEMANTIC_VIEW
  • Semantic YAML dosyası için: @MY_DATABASE.MY_SCHEMA.MY_STAGE/my_semantic_file.yaml (@ işaretine dikkat edin.)

Nesne Yönetimi

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

Benzer MCP sunucuları

Daha fazla: Databases →