Serveur Snowflake Cortex AI Model Context Protocol (MCP)
Ce serveur MCP Snowflake fournit des outils pour les fonctionnalités de Snowflake Cortex AI, apportant ces capacités à l'écosystème MCP. Lorsqu'il est connecté à un client MCP (par exemple Claude for Desktop, fast-agent, Agentic Orchestration Framework), les utilisateurs peuvent exploiter ces fonctionnalités de Cortex AI.
Le serveur MCP prend actuellement en charge les fonctionnalités de Cortex AI ci-dessous :
- Cortex Search: Interrogation de données non structurées dans Snowflake, telle qu'elle est couramment utilisée dans les applications RAG (Retrieval Augmented Generation).
- Cortex Analyst: Interrogation de données structurées dans Snowflake via une modélisation sémantique riche.
- Cortex Agent:(bientôt disponible) orchestrateur agentique pour la recherche de données structurées et non structurées
Pour commencer
Configuration du service
Un simple fichier de configuration permet de créer des outils pour les différentes fonctionnalités de Cortex AI. Un exemple se trouve à services/tools_config.yaml et un modèle est présenté ci-dessous. De nombreux services Cortex Search et Cortex Analyst peuvent être ajoutés. Les descriptions idéales sont à la fois très descriptives et mutuellement exclusives. Le chemin d'accès à ce fichier de configuration sera transmis au serveur et son contenu sera utilisé pour créer les outils du serveur MCP au démarrage.
search_services : # Liste de tous les services de recherche Cortex - nom_du_service : "<nom_du_service>" description : > # Doit commencer par "Service de recherche qui ..." "<Services de recherche qui ...>" nom_de_la_base_de_données : "<nom_de_la_base_de_données>" nom_du_schéma : "<nom_du_schéma>" colonnes : [] # Facultatif : Liste des colonnes à renvoyer pour chaque résultat pertinent (par défaut : []) limit : 10 # Facultatif : Limite sur le nombre de résultats à retourner (par défaut : 10) - service_name : "<service_name>" description : > # Doit commencer par "Service de recherche qui ..." "<Service de recherche qui ...>" database_name : "<database_name>" schema_name : "<schema_name>" columns : [] # Facultatif : Liste des colonnes à renvoyer pour chaque résultat pertinent (par défaut : []) limit : 10 # Facultatif : Limite du nombre de résultats à renvoyer (par défaut : 10) analyst_services : # Liste de tous les modèles/vues sémantiques de Cortex Analyst - service_name : "<service_name>" # Créer un nom descriptif pour le service semantic_model : "<semantic_yaml_or_view>" # Qualifier complètement le modèle sémantique YAML ou la description de la vue sémantique : > # Doit commencer par "Analyst service that ..." "<Analyst service that ...>" - service_name : "<service_name>" # Créer un nom descriptif pour le service semantic_model : "<semantic_yaml_or_view>" # Qualifier complètement le modèle sémantique YAML ou la description de la vue sémantique : > # Doit commencer par "Analyst service that ..." "<Analyst service that ...>"
Connexion à Snowflake
Le serveur MCP utilise le connecteur Snowflake Python pour toutes les méthodes d'authentification et de connexion. Veuillez vous référer à la documentation officielle de Snowflake pour connaître toutes les options d'authentification et les meilleures pratiques.
Les paramètres de connexion peuvent être transmis en tant qu'arguments CLI et/ou variables d'environnement. Le serveur supporte toutes les méthodes d'authentification disponibles dans le connecteur Snowflake Python, y compris :
- Authentification par nom d'utilisateur/mot de passe
- Authentification par paire de clés
- Authentification OAuth
- L'authentification unique (SSO)
- Authentification multi-facteurs (MFA)
Paramètres de connexion
Les paramètres de connexion peuvent être transmis en tant qu'arguments CLI et/ou variables d'environnement :
Paramètre | Arguments CLI | Variable d'environnement | Description de la variable d'environnement |
---|---|---|---|
Compte | --compte | COMPTE_FLOCON_NEIGE | Identifiant du compte (par exemple xy12345.us-east-1) |
Hôte | --host | SNOWFLAKE_HOST | URL de l'hôte du flocon de neige |
Utilisateur | --user, --username | SNOWFLAKE_USER | Nom d'utilisateur pour l'authentification |
Mot de passe | --mot_de_passe | MOT_DE_PASSE SNOWFLAKE | Mot de passe ou jeton d'accès programmatique |
Rôle | --rôle | SNOWFLAKE_ROLE | Rôle à utiliser pour la connexion |
Entrepôt | --entrepôt | SNOWFLAKE_WAREHOUSE | Entrepôt à utiliser pour les requêtes |
Code d'accès dans le mot de passe | --passcode-in-password | - | Indique si le code de passe est incorporé dans le mot de passe |
Code de passe | --passcode | CODE_FLOCON_DE_NEIGE | Code d'authentification MFA |
Clé privée | --Clé privée | CLÉ_PRIVÉE_DU_FLOCON | Clé privée pour l'authentification par paire de clés |
Fichier de clé privée | --Fichier de clé privée | FICHIER DE CLÉ PRIVÉE DU FLOCON DE NEIGE | Chemin d'accès au fichier de clé privée |
Mot de passe de la clé privée | --Mot de passe de la clé privée | MOT_DE_PASSE_DE_LA_CLÉ_PRIVÉE_DU_FLOCON DE NEIGE | Mot de passe pour la clé privée cryptée |
Authentificateur | --authenticator | - | Type d'authentification (par défaut : snowflake) |
Nom de la connexion | --nom-de-la-connexion | - | Nom de la connexion à partir du fichier connections.toml (ou config.toml) |
[Avis de dépréciation: Les arguments CLI
--account-identifier
et--pat
, ainsi que la variable d'environnementSNOWFLAKE_PAT
, sont obsolètes et seront supprimés dans une prochaine version. Veuillez utiliser--account
et--password
(ouSNOWFLAKE_ACCOUNT
etSNOWFLAKE_PASSWORD
) à la place.
Utilisation avec des clients MCP
Le serveur MCP est agnostique et fonctionnera avec la plupart des clients MCP qui supportent les fonctionnalités de base des outils MCP et (optionnellement) des ressources. Voici quelques exemples.
Claude Desktop
Pour intégrer ce serveur avec Claude Desktop en tant que client MCP, ajoutez ce qui suit à la configuration du serveur de votre application. Par défaut, cette configuration se trouve à l'endroit suivant
- macOS : ~/Bibliothèque/Application Support/Claude/claude_desktop_config.json
- Windows : %APPDATA%\Claudeclaude_desktop_config.json
Définissez le chemin d'accès au fichier de configuration du service et configurez votre méthode de connexion.
{ "mcpServers" : { "mcp-server-snowflake" : {"command" : "uvx", "args" : ["--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<chemin vers le fichier>/tools_config.yaml", "--connection-name", "default" ] } } }
Curseur
Enregistrez le serveur MCP dans le curseur en ouvrant le curseur et en naviguant vers Settings -> Cursor Settings -> MCP. Ajoutez les éléments suivants.
{ "mcpServers" : { "mcp-server-snowflake" : { "command" : "uvx", "args" : ["--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<chemin vers le fichier>/tools_config.yaml", "--connection-name", "default" ] } } }
Ajoutez le serveur MCP comme contexte dans le chat.
Pour résoudre les problèmes liés au serveur Cursor, consultez les journaux en ouvrant le panneau de sortie et en sélectionnant Cursor MCP dans le menu déroulant.
fast-agent
Mettez à jour la section fastagent .config.yaml
mcp server avec le chemin du fichier de configuration et le nom de la connexion.
# MCP Servers mcp : servers : mcp-server-snowflake : command : "uvx" args : ["--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<chemin vers le fichier>/tools_config.yaml", "--connection-name", "default"]
Microsoft Visual Studio Code + GitHub Copilot
Pour les prérequis, la configuration de l'environnement, le guide étape par étape et les instructions, veuillez vous référer à ce blog.
Résolution des problèmes
Exécution de l'inspecteur MCP
L'inspecteur MCP est suggéré pour dépanner le serveur MCP. Exécutez la commande suivante pour lancer l'inspecteur.
npx @modelcontextprotocol/inspector uvx --from "git+https://github.com/Snowflake-Labs/mcp" mcp-server-snowflake --service-config-file "<path_to_file>/tools_config.yaml" --connection-name "default"
Questions fréquentes
Comment puis-je me connecter à Snowflake ?
- Le serveur MCP supporte toutes les méthodes de connexion supportées par le connecteur Python de Snowflake. Voir Connexion à Snowflake avec le connecteur Python pour plus d'informations.
Puis-je utiliser un jeton d'accès programmatique (PAT) au lieu d'un mot de passe ?
- Oui. Passez-le à l'option CLI --password ou définissez-le comme variable d'environnement SNOWFLAKE_PASSWORD.
Comment puis-je essayer cela ?
- Le serveur MCP est destiné à être utilisé comme une partie de l'écosystème MCP. Considérez-le comme un ensemble d'outils. Vous aurez besoin d'un client MCP pour agir en tant qu'orchestrateur. Voir l'introduction de MCP pour plus d'informations.
Où est-ce déployé ? Est-ce dans Snowpark Container Services ?
- Tous les outils de ce serveur MCP sont des services gérés, accessibles via l'API REST. Aucun déploiement de service distant séparé n'est nécessaire. Au lieu de cela, la version actuelle du serveur est destinée à être démarrée par le client MCP, tel que Claude Desktop, Cursor, fast-agent, etc. En configurant ces clients MCP avec le serveur, l'application lancera le service du serveur pour vous. Les futures versions du serveur MCP pourront être déployées en tant que service distant à l'avenir.
Je reçois des erreurs de permission de mes appels d'outils.
- Si vous utilisez des jetons d'accès programmatiques, notez qu'ils n'évaluent pas les rôles secondaires. Lorsque vous les créez, veuillez sélectionner un rôle unique qui a accès à tous les services et à leurs objets sous-jacents OU sélectionnez n'importe quel rôle. Un nouveau PAT devra être créé pour modifier cette propriété.
Combien de Cortex Search ou de Cortex Analysts puis-je ajouter ?
- Vous pouvez ajouter plusieurs instances des deux services. Le client MCP déterminera le(s) service(s) approprié(s) à utiliser en fonction de l'invite de l'utilisateur.
A l'aide ! Je reçois une erreur SSLError ?
- Si le nom de votre compte contient des traits de soulignement, essayez d'utiliser la version en pointillés de l'URL
- Identifiant de compte avec traits de soulignement :
acme-marketing_test_account
- Identifiant de compte avec tirets :
acme-marketing-test-account
- Identifiant de compte avec traits de soulignement :
Rapports de bogues, commentaires ou autres questions
Veuillez ajouter des problèmes au dépôt GitHub.