Extensibilité de la CLI Cortex Code

La CLI Cortex Code peut être étendue avec des comportements personnalisés, des agents spécialisés, des hooks de cycle de vie et des intégrations d’outils externes. Cette rubrique couvre les quatre principaux mécanismes d’extensibilité :

Compétences

Fichiers Markdown qui injectent des connaissances et des instructions spécifiques au domaine dans les conversations. Utilisez les compétences pour transmettre à Cortex Code les bonnes pratiques, les normes de codage ou les workflows spécialisés de votre organisation.

Sous-agents

Agents AI autonomes et spécialisés qui gèrent des tâches spécifiques de manière indépendante. Les sous-agents permettent l’exécution parallèle, l’expertise ciblée et les workflows complexes à plusieurs étapes.

Hooks

Scripts qui interceptent et personnalisent le comportement de Cortex Code aux points clés du cycle de vie. Utilisez les hooks pour valider les entrées des outils, enregistrer des opérations ou appliquer des politiques.

MCP (Protocole de contexte de modèle)

Un standard ouvert pour connecter Cortex Code à des outils et sources de données externes tels que GitHub, Jira et des bases de données.

Compétences

Les compétences étendent Cortex Code avec des connaissances et des capacités spécifiques au domaine en injectant des instructions spécialisées et en activant des outils supplémentaires.

Que sont les compétences ?

Les compétences sont des fichiers Markdown qui montrent :

  • Des instructions et des bonnes pratiques spécifiques au domaine

  • Quand utiliser une compétence

  • Des exemples de workflows

  • Des configurations d’outils facultatives

Lorsque vous invoquez une compétence, ses instructions sont injectées dans le contexte de la conversation.

Utilisation des compétences

Exécutez /skill list pour lister les compétences disponibles, et invoquez-les par leur nom pour charger la compétence dans la conversation.

Emplacements des compétences

Les compétences sont chargées à partir de plusieurs emplacements, listés ci-dessous de la priorité la plus élevée à la plus basse :

Emplacement

Chemin

Portée

Projet

.cortex/skills/ ou .claude/skills/

Projet

Utilisateur

~/.snowflake/cortex/skills/ ou ~/.claude/skills/

Utilisateur

Global

~/.snowflake/cortex/skills/

Système

Session

Ajouté temporairement

Session

Distant

Cloné depuis Git

Cache

Groupé

Intégré à Cortex Code

Système

Création de compétences personnalisées

Les compétences sont des répertoires contenant un fichier SKILL.md avec des instructions sur les compétences, et des exemples et modèles facultatifs. Vous pouvez créer des compétences dans l’un des emplacements suivants :

Portée

Chemin

Projet

.cortex/commands/ ou .claude/commands/ dans le répertoire du projet

Global

~/.snowflake/cortex/commands/

Utilisateur

~/.claude/commands/

Pour commencer à créer une compétence personnalisée, procédez comme suit :

  1. Créez le répertoire de compétence. Cet exemple crée un répertoire de compétence nommé « my-skill » dans l’emplacement du projet :

    mkdir -p .cortex/skills/my-skill
    
    Copy
  2. Créez SKILL.md dans ce répertoire et ajoutez des instructions de compétence. Cet exemple montre la structure de base :

    ---
    name: my-skill
    description: Brief description of what this skill does
    tools:
    - optional_tool_name
    ---
    
    # When to Use
    
    - Describe when this skill should be invoked
    - List specific user intents or scenarios
    
    # What This Skill Provides
    
    Explain the capabilities and knowledge this skill adds.
    
    # Instructions
    
    Step-by-step guidance for the AI when this skill is active.
    
    ## Best Practices
    
    - Best practice 1
    - Best practice 2
    
    ## Common Patterns
    
    ### Pattern 1
    Description and example.
    
    ### Pattern 2
    Description and example.
    
    # Examples
    
    ## Example 1: Basic Usage
    User: $my-skill Do something Assistant: [Expected behavior]
    
    
    ## Example 2: Advanced Usage
    User: $my-skill Complex task with @file.txt Assistant: [Expected behavior]
    
    Copy
  3. Vérifiez que votre compétence apparaît dans la liste à l’aide de la commande $$ :

    > $$
    
    Copy

    Si votre compétence est répertoriée, cela signifie qu’elle a été correctement chargée et qu’elle est disponible pour être utilisée.

  4. Utilisez votre compétence dans une conversation :

    > $my-skill Test it out
    
    Copy

Paramètres de compte personnalisés

Les options de chaque compétence sont définies dans l’en-tête YAML en haut de SKILL.md. Les options suivantes sont prises en charge :

Option

Description

nom : <skill name>

Obligatoire : Identificateur unique

description : <description>

Obligatoire : Affiché dans la liste $$

outils :

En option : Outils à activer dans cette compétence

  - tool_name_1

  - tool_name_2

Cet exemple montre une compétence qui utilise deux outils :

---
name: database-admin
description: Database administration tasks
tools:
- snowflake_sql_execute
- snowflake_object_search
---
Copy

Bonnes pratiques en matière de compétences

Pour écrire des compétences efficaces, suivez les instructions suivantes :

  • Soyez précis : des instructions claires produisent de meilleurs résultats

  • Fournissez des exemples : affichez les entrées et les sorties attendues

  • Incluez des cas limites : gérez les erreurs et les exceptions courantes

  • Restez orienté : une compétence est égale à un domaine ou une capacité

Gestion des compétences

Commande avec barre oblique

Description

/skill

Gestionnaire de compétences interactif

/skill list

Lister toutes les compétences

/skill sync <nom>

Synchroniser avec l’emplacement global

/skill add <git-url>

Ajouter une compétence distante

Conflits de compétences

Lorsque la même compétence existe dans plusieurs emplacements pris en charge et que le contenu diffère, un conflit se produit, et un indicateur de conflit apparaît dans la liste des compétences. Utilisez /skill sync pour résoudre les conflits en synchronisant la portée locale avec la portée globale.

Compétences compositionnelles

Les compétences personnalisées peuvent faire référence à d’autres compétences, ou combiner des compétences avec un contexte de fichier :

> $code-review Review @src/auth.py following $security-guidelines
Copy

Compétences distantes

Vous pouvez ajouter des compétences distantes depuis les référentiels Git. Un référentiel peut contenir un nombre illimité de compétences. La disposition des compétences distantes doit correspondre à la structure des compétences locale.

/skill add https://github.com/org/my-skills.git
Copy

Les compétences distantes sont mises en cache localement. Pour les mettre à jour, utilisez /skill sync.

Référence des commandes de compétences

Commandes CLI :

cortex skill list
cortex skill add <path>
cortex skill remove <path>
Copy

Commandes avec barre oblique :

/skill list
/skill add <path>
Copy

Résolution des problèmes liés aux compétences

Compétence non active
  • Utilisez un langage spécifique lié à l’objectif de la compétence

  • Mentionnez explicitement la compétence : « Utiliser l’optimisation de la vue sémantique »

  • Vérifiez la disponibilité : /skill list

Comportement inattendu
  • Donnez plus de contexte concernant votre objectif

  • Essayez une requête plus spécifique

  • Soumettez des commentaires : /feedback

Sous-agents

Les sous-agents sont des agents AI autonomes et spécialisés qui gèrent des tâches spécifiques de manière indépendante. Ils permettent l’exécution parallèle, l’expertise ciblée et les workflows complexes à plusieurs étapes.

Les sous-agents :

  • S’exécutent indépendamment de la conversation principale

  • Ont leur propre contexte et accès aux outils

  • Peuvent fonctionner au premier plan ou en arrière-plan

  • Se spécialisent dans des domaines ou des tâches spécifiques

Types de sous-agents intégrés

general-purpose

Agent tout usage ayant accès à tous les outils. Mieux adapté pour :

  • Tâches de recherche complexes

  • Modifications du code à plusieurs étapes

  • Tâches nécessitant plusieurs outils

explore

Spécialiste de l’exploration rapide de la base de code. Mieux adapté pour :

  • Recherche de fichiers par modèles

  • Code de recherche de mots-clés

  • Compréhension de la structure de la base de code

  • Reconnaissance rapide

Vous pouvez spécifier le niveau de recherche de l’agent Explore :

  • "quick" : Recherche de base

  • "medium" : Exploration modérée

  • "very thorough" : Analyse complète

plan

Conçoit et élabore des plans de mise en œuvre complexes. Mieux adapté pour :

  • Conception de stratégies de mise en œuvre

  • Identification des fichiers critiques

  • Évaluation des compromis architecturaux

  • Création de plans étape par étape

feedback

Collection de commentaires structurés. Mieux adapté pour :

  • Rassemblement des entrées utilisateur

  • Questions structurées

  • Commentaires sur la session

Sous-agents en cours d’exécution

Cortex Code délègue automatiquement aux sous-agents lorsque cela est possible. Par exemple, cette requête délègue à un agent Explore :

> Find all files that import the authentication module
Copy

Vous pouvez également demander explicitement des types de sous-agents spécifiques par leur nom :

> Use an Explore agent to find all database query definitions
> Use the Explore agent to find all API endpoint definitions
> Launch a Plan agent to design the authentication refactor
Copy

Vous pouvez également demander à plusieurs sous-agents de s’exécuter en parallèle pour traiter différents aspects d’une tâche :

> In parallel, search for all test files and all config files
Copy

Les agents peuvent s’exécuter en arrière-plan pendant que vous continuez de travailler :

> Run a background agent to refactor all the test files
Copy

L’agent démarre immédiatement et renvoie un ID d’agent pour le suivi. Lorsque l’agent se termine, vous pouvez récupérer sa sortie à l’aide de son ID :

> Get the output from agent abc1234
Copy

Pour surveiller l’état de tous les sous-agents en cours d’exécution, utilisez la commande /agents (ou appuyez sur Ctrl-B) pour ouvrir la visionneuse des processus en arrière-plan. Vous pouvez arrêter un agent en cours d’exécution à l’aide de son ID, ou avec l’interface /agents :

> kill agent abc1234
Copy

Les agents arrêtés cessent de fonctionner, mais conservent leur contexte indéfiniment. Vous pouvez reprendre un agent arrêté à l’aide de son ID :

> Resume agent abc1234 and continue from where it left off
Copy

Types d’agents

Autonomes

Un agent autonome s’exécute sans interaction de l’utilisateur. L’agent :

  • Se termine indépendamment

  • Ne se bloque jamais pour poser des questions

  • Est adapté pour les tâches bien définies

Non autonomes

Un agent non autonome peut suspendre l’exécution pour poser des questions à l’utilisateur. L’agent :

  • Peut poser des questions de clarification

  • Peut demander des autorisations de manière interactive

  • Est adapté pour les tâches nécessitant des conseils

Personnalisés

Les agents personnalisés sont des sous-agents définis par l’utilisateur avec des configurations et des invites spécialisées. Vous créez des agents adaptés à des domaines ou à des workflows spécifiques dans des fichiers Markdown, de manière similaire à des compétences personnalisées.

Création de sous-agents personnalisés

Les sous-agents personnalisés sont définis dans des fichiers Markdown avec un en-tête YAML. L’en-tête spécifie le nom, la description, l’accès à l’outil et le modèle de l’agent. Le corps contient l’invite du système qui guide le comportement de l’agent.

Vous pouvez stocker des fichiers Markdown d’agents personnalisés à l’un des trois emplacements suivants :

Portée

Chemin

Projet

.cortex/agents/ ou .claude/agents/

Global

~/.snowflake/cortex/agents/

Utilisateur

~/.claude/agents/

Le format d’une définition d’agent est montré ci-dessous :

---
name: my-agent
description: What this agent specializes in
tools:

- Bash
- Read
- Write

model: claude-sonnet-4-5
---

# System Prompt

You are a specialized agent for [domain].

## Your Responsibilities

1. Task 1
2. Task 2

## Guidelines

- Guideline 1
- Guideline 2

## Output Format

Describe expected output format.
Copy

Exemple : Agent Test Runner

Le fichier Markdown suivant définit un agent Test Runner personnalisé qui exécute des tests et résume les résultats :

---
name: test-runner
description: Runs tests and reports results
tools:
- Bash
- Read
- Grep
---

# Test Runner Agent

You run tests and provide clear reports of the results.

## Process

1. Identify the test framework (pytest, jest, go test, etc.)
2. Run appropriate test command
3. Parse and summarize results
4. Highlight failures with relevant code context

## Output Format

## Test Results Summary
- Total: X
- Passed: Y
- Failed: Z

## Failures
### Test Name
- File: path/to/file.py
- Error: Description
- Relevant code snippet
Copy

Configuration d’un agent

La configuration d’un agent personnalisé est spécifiée dans l’en-tête YAML du fichier Markdown.

Accès aux outils

Les agents peuvent spécifier les outils auxquels ils ont accès :

tools:
- "*"           # All tools
- Bash          # Specific tools
- Read
- Write
Copy
Sélection de modèles

Vous pouvez choisir un modèle pour un agent spécifique. Cela remplace le modèle par défaut de la session.

model: claude-sonnet-4-5   # Specific model
model: auto                # Cost-optimized
Copy

Isolement de l’arborescence de travail

Les agents peuvent être exécutés dans des arborescences de travail Git isolées ou des branches. Lorsque vous demandez l’isolement de l’arborescence de travail, la CLI Cortex Code crée une arborescence de travail Git distincte dans laquelle l’agent peut opérer. Cela permet à plusieurs agents de fonctionner en parallèle sans modifications conflictuelles et facilite le nettoyage ultérieur. Les arborescences de travail isolées sont particulièrement utiles pour l’exploration et l’expérimentation. La branche Git créée par l’agent est nommée agent/<agentId>.

Pour utiliser l’isolement de l’arborescence de travail, il suffit de l’inclure dans votre invite :

> Run a background agent with worktree isolation to implement feature X
Copy

Modèle en essaim

Vous pouvez lancer un essaim d’agents pour traiter différents aspects d‘une tâche complexe en parallèle. Chaque agent fonctionne indépendamment, et les résultats sont agrégés lorsque tous les agents se terminent. Tous les types d’agents peuvent participer à un essaim.

Les cas d’utilisation des essaims comprennent :

  • Analyse de code : plusieurs agents analysent différents aspects

  • Refactorisation : des agents parallèles traitent des fichiers différents

  • Test : des agents exécutent différentes suites de tests

  • Documentation : des agents documentent différents composants

Pour créer un essaim, il suffit de décrire les différents agents que vous souhaitez lancer :

> Launch a swarm of agents:
> 1. Explore agent to find all database queries
> 2. Explore agent to find all API endpoints
> 3. Explore agent to find all test files
Copy

Bonnes pratiques en matière de sous-agents

Utilisez des sous-agents pour :

  • Tâches complexes : Décomposez des tâches en sous-tâches pour une exécution parallèle

  • Exploration : Utilisez l’agent Explore pour des recherches dans la base de code

  • Planification : Utilisez l’agent Plan avant des modifications majeures

  • Travail en arrière-plan : Tâches de longue durée qui ne nécessitent aucune attention particulière

Les sous-agents peuvent ne pas être idéaux pour :

  • Requêtes simples : les outils directs sont plus rapides

  • Modifications d’un seul fichier : l’agent principal est plus efficace

  • Travail interactif : lorsque vous avez besoin de commentaires immédiats

Les invites détaillées sont généralement plus efficaces :

Bonne

Recherchez tous les fichiers Python qui contiennent des requêtes de base de données et répertoriez-les avec des numéros de ligne

Meilleure

Utilisez l’agent Explore (très complet) pour rechercher tous les fichiers Python contenant des requêtes de base de données. Pour chaque fichier, extrayez les modèles de requête et identifiez les risques d’injection SQL potentiels.

Affichage des sous-agents actifs

Commande /agents

Émettez la commande /agents dans une session Cortex Code pour ouvrir la visionneuse d’agents interactive. Cette interface affiche tous les agents en cours d’exécution, leurs types, leurs états et une prévisualisation des sorties.

Visionneuse des processus en arrière-plan

Dans une session CLI Cortex Code, appuyez sur Ctrl-B pour afficher :

  • Tous les processus en arrière-plan

  • Les sessions des agents

  • Les processus Bash

Les limites des agents

Les limites suivantes s’appliquent aux sous-agents dans le CLI Cortex Code :

  • Maximum de 50 agents en arrière-plan simultanés

  • Les agents héritent des autorisations de session

  • Les agents en arrière-plan ne peuvent pas générer d’autres agents en arrière-plan

Hooks

Les hooks vous permettent d’intercepter et de personnaliser le comportement de Cortex Code aux points clés du cycle de vie. Un hook est une invite ou un script shell qui s’exécute en réponse à un événement :

  • Avant l’utilisation de l’outil : valider ou modifier les entrées de l’outil

  • Après l’utilisation de l’outil : ajouter du contexte ou des résultats de journalisation

  • Sur l’entrée utilisateur : contexte de la session d’injection

  • Sur les événements de la session : initialiser ou nettoyer

Événements de hooks

Les événements suivants peuvent déclencher des hooks :

Événement

Description

Peut bloquer

PreToolUse

Avant l’exécution de l’outil

Oui

PostToolUse

Après l’exécution de l’outil

Non

PermissionRequest

Lorsqu’une autorisation est nécessaire

Oui

UserPromptSubmit

Lorsque l’utilisateur soumet une invite

Non

SessionStart

Au démarrage de la session

Non

SessionEnd

Lorsque la session se termine

Non

PreCompact

Avant le compactage du contexte

Non

Arrêt

Lorsque l’utilisateur arrête Claude

Non

SubagentStop

Lorsque le sous-agent s’arrête

Non

Notification

Sur les notifications système

Non

Configuration

Lors de l’initialisation

Non

Configuration des hooks

Les hooks sont configurés dans des fichiers de paramètres, qui peuvent se trouver dans n’importe quel répertoire de configuration (répertoriés ci-dessous par ordre de priorité décroissante) :

Emplacement

Chemin

Local

.claude/settings.local.json ou .cortex/settings.local.json

Projet

.claude/settings.json ou .cortex/settings.json

Utilisateur

~/.claude/settings.json

Global

~/.snowflake/cortex/hooks.json

Les hooks sont définis au format JSON, spécifiant l’événement, la correspondance de l’outil et les actions de hook. Un exemple simple d’un hook avant utilisation de l’outil est présenté ci-dessous :

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/validate-bash.sh",
            "timeout": 60
          }
        ]
      }
    ]
  }
}
Copy

Deux types de hooks sont pris en charge : les hooks de commande et les hooks d’invite.

  • Les hooks de commande exécutent des commandes shell ou des scripts.

    {
      "type": "command",
      "command": "bash /path/to/script.sh",
      "timeout": 60,
      "enabled": true
    }
    
    Copy
  • Les hooks d’invite sont évalués comme des invites en langage naturel pour un modèle de langage.

    {
      "type": "prompt",
      "prompt": "Is this command safe? $ARGUMENTS",
      "timeout": 30
    }
    
    Copy

Pour exécuter votre hook uniquement sur des outils spécifiques, placez les noms des outils ou les modèles dans le champ matcher. Par exemple, pour faire correspondre toutes les outils SQL, utilisez "matcher": "SQL*". Vous pouvez utiliser des expressions régulières pour faire correspondre plusieurs outils.

Motif

Correspond

*

Tous les outils

Bash

Bash uniquement

Edit|Write

Modifier ou écrire

mcp__.*

Tous les outils MCP

Notebook.*

NotebookEdit, NotebookExecute

Écriture de scripts de hook

Les scripts de hook acceptent l’entrée JSON via une entrée standard et la sortie JSON via une sortie standard. La sortie contient un champ indiquant si l’opération est autorisée ou refusée. En option, le script de hook peut renvoyer une version modifiée de l’entrée de l’outil.

Exemple d’entrée :

{
  "session_id": "abc123",
  "transcript_path": "/path/to/transcript.json",
  "cwd": "/working/directory",
  "permission_mode": "default",
  "hook_event_name": "PreToolUse",
  "tool_name": "Bash",
  "tool_input": {
    "command": "ls -la"
  }
}
Copy

Exemple de sortie :

{
  "decision": "allow",
  "systemMessage": "Note: This operation was validated.",
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "updatedInput": {
      "command": "ls -la --color=never"
    }
  }
}
Copy

Le code de retour indique s’il faut bloquer l’opération :

  • 0 : Ne pas bloquer

  • 2 : Bloquer

Ces informations peuvent également être renvoyées dans le cadre de la sortie JSON, comme indiqué ci-dessous.

{
  "decision": "block",
  "reason": "Operation not allowed"
}
Copy

Les variables d’environnement suivantes sont disponibles dans les scripts de hook :

Variable

Description

CORTEX_PROJECT_DIR

Chemin du répertoire de projet

CORTEX_CODE_REMOTE

"true" si contexte web

CORTEX_ENV_FILE

Chemin d’accès persistant au fichier env

Exemples de hook

Les exemples suivants illustrent la sortie possible pour les cas d’utilisation courants des hooks.

Modifier l’entrée de l’outil

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "updatedInput": {
      "command": "modified command"
    }
  }
}
Copy

Ajouter un contexte

{
  "hookSpecificOutput": {
    "hookEventName": "PostToolUse",
    "additionalContext": "Note: File was recently modified."
  }
}
Copy

Afficher les messages système

{
  "systemMessage": "Warning: This operation may take a while."
}
Copy

Décisions d’autorisation

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "allow",
    "permissionDecisionReason": "Auto-approved by policy"
  }
}
Copy

Hooks distants

Vous pouvez référencer des scripts dans les référentiels Git comme indiqué ci-dessous :

{
  "type": "command",
  "command": "bash",
  "source": {
    "source": "github:org/hooks-repo/scripts/validate.sh",
    "ref": "main"
  }
}
Copy

Bonnes pratiques en matière de hooks

  • Maintenez la vitesse des hooks : les délais d’expiration sont de 60 secondes par défaut

  • Traitez les erreurs correctement : renvoyez la sortie 0 en cas d’incertitude

  • Journalisez le débogage : écrivez dans les fichiers pour la résolution des problèmes

  • Utilisez des correspondances : ciblez des outils spécifiques, et non tous les outils

  • Effectuez des tests avancés : utilisez le gestionnaire de hooks pour vérifier le comportement

Protocole de contexte de modèle (MCP)

Vous pouvez connecter le CLI Cortex Code à des outils et des sources de données externes avec le protocole de contexte de modèle (MCP). Le MCP est un standard ouvert pour connecter des agents AI à des outils externes comme GitHub, Jira et des bases de données. Une fois configurés, les serveurs MCP donnent à Cortex Code l’accès aux outils hébergés au-delà des capacités intégrées.

Types de transports

Cortex Code prend en charge trois types de transports MCP :

Type

Cas d’utilisation

Connexion

stdio

Outils locaux, wrappers CLI

Sous-processus avec stdin/stdout

http

Services Web, APIs

Requêtes HTTP

sse

Services en temps réel

Événements envoyés par le serveur

Vous pouvez utiliser OAuth pour vous authentifier auprès de serveurs MCP HTTP. La première fois que vous vous connectez à un serveur configuré pour OAuth, CLI Code Cortex ouvre une fenêtre du navigateur, où l’utilisateur s’authentifie. Le jeton résultant est stocké dans ~/.snowflake/cortex/mcp_oauth/ et actualisé automatiquement selon les besoins. Voici un exemple de configuration OAuth :

{
   "oauth": {
      "client_id": "pre-registered-client-id",
      "client_name": "My Client",
      "redirect_port": 8585,
      "scope": "openid mcp read write",
      "authorization_server_url": "https://auth.example.com"
   }
}
Copy

Gestion des serveurs MCP

Vous pouvez émettre la commande /mcp dans une session CLI Cortex Code interactive pour ouvrir une visionneuse d’état MCP interactive. Utilisez la commande cortex mcp pour gérer les configurations de serveurs MCP à partir de la ligne de commande.

Commande

Description

Ligne de commande

Description

cortex mcp add

Ajouter un nouveau serveur (voir ci-dessous)

cortex mcp list

Liste des serveurs configurés

cortex mcp get <server>

Obtenir des détails pour un serveur spécifique

cortex mcp remove <server>

Supprimer un serveur

cortex mcp start <server>

Vérifier l’état du serveur et les outils disponibles

Ajout d’un serveur

La commande cortex mcp add accepte des options pour la configuration des serveurs.

cortex mcp add <name> <command> [args...]
Copy

Options :

--transport, -t    Transport type (stdio, http, sse)
--type             Alias for --transport
--env, -e          Environment variable (KEY=value)
--header, -H       HTTP header
--timeout          Connection timeout in ms
Copy

Note

Les outils MCP disposent d’un espace de noms pour éviter les conflits, utilisant le format ci-dessous :

mcp__{server-name}__{tool-name}
Copy

Par exemple, un outil appelé search provenant du serveur github se voit attribuer le nom mcp__github__search.

Configuration d’MCP

La configuration du serveur MCP est stockée dans ~/.snowflake/cortex/mcp.json sous la clé mcpServers. L’exemple suivant montre la structure d’un fichier de configuration avec un seul serveur MCP :

{
   "mcpServers": {
      "server-name": {
         "type": "stdio",
         "command": "command-to-run",
         "args": ["arg1", "arg2"]
      }
   }
}
Copy

Variables d’environnement

Utilisez la syntaxe ${VAR} ou $VAR pour insérer les valeurs des variables d’environnement dans le fichier de configuration.

{
"mcpServers": {
   "my-server": {
      "type": "http",
      "url": "https://api.example.com",
      "headers": {
      "Authorization": "Bearer ${MY_API_TOKEN}"
      }
   }
}
Copy

Important

Il est recommandé d’utiliser des variables d’environnement pour les identifiants de connexion. Ne codez jamais en dur des jetons dans mcp.json. Ajoutez une ligne au profil de votre shell, comme ~/.bashrc ou ~/.zshrc, comme suit :

export GITHUB_TOKEN="your_token_here"
Copy

Configuration à partir de la ligne de commande

Pour ajouter un serveur MCP à partir de la ligne de commande, utilisez la commande cortex mcp add. Par exemple :

Action

Commande

Ajouter un serveur stdio

cortex mcp add git-server uvx mcp-server-git

Ajouter un serveur HTTP

cortex mcp add api-server https://api.example.com --type http

Ajouter avec des variables d’environnement

cortex mcp add my-server npx my-mcp-server -e API_KEY=secret

Ajouter avec des en-têtes

cortex mcp add my-server https://api.example.com -H "Authorization: Bearer token"

Utilisation des outils MCP

Une fois configurés, les outils MCP sont disponibles automatiquement dans les sessions CLI Cortex Code. Vous les invoquez via des commandes en langage naturel :

Show me recent GitHub pull requests
Create a Jira ticket for this bug
Query the PostgreSQL database for user activity
Copy

Les autorisations sont demandées lors de la première utilisation. Configurez les valeurs par défaut dans ~/.snowflake/cortex/permissions.json :

{
  "allow": ["mcp__github__read_file", "mcp__github__list_repos"],
  "deny": ["mcp__github__delete_repo"]
}
Copy

Exemples de configurations MCP

Les exemples suivants illustrent les configurations de serveurs MCP pour les cas d’utilisation courants.

Serveur Git (stdio)

{
  "mcpServers": {
    "git": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "/path/to/repo"]
    }
  }
}
Copy

API HTTP avec OAuth

{
  "mcpServers": {
    "my-api": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "oauth": {
        "client_id": "my-client-id",
        "redirect_port": 8585,
        "scope": "openid mcp"
      }
    }
  }
}
Copy

Serveur SSE avec en-têtes

{
  "mcpServers": {
    "realtime": {
      "type": "sse",
      "url": "https://realtime.example.com/events",
      "headers": {
        "Authorization": "Bearer ${API_TOKEN}",
        "X-Custom-Header": "value"
      },
      "timeout": 30000
    }
  }
}
Copy

Intégration du graphique source

{
  "mcpServers": {
    "sourcegraph": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@sourcegraph/mcp-server"],
      "env": {
        "SRC_ACCESS_TOKEN": "${SOURCEGRAPH_TOKEN}",
        "SRC_ENDPOINT": "https://sourcegraph.company.com"
      }
    }
  }
}
Copy

Résolution des problèmes liés au MCP

Serveur qui ne se connecte pas
  • Vérifiez /mcp pendant une session pour s’assurer qu’il figure dans la liste

  • Utilisez cortex mcp start <server> pour tester la connexion

  • Vérifier que les identifiants de connexion sont correctement définis dans les variables d’environnement

  • cat ~/.snowflake/cortex/logs/mcp.log pour examiner le journal à la recherche d’indices

Outils qui n’apparaissent pas
  • Exécutez cortex mcp list pour vérifier la configuration

  • Assurez-vous que les noms des outils sont valides (ils ne contiennent que des caractères alphanumériques, des tirets bas et des traits d’union)

  • Vérifiez que les noms des outils font moins de 64 caractères

Problèmes OAuth
  • Effacez les jetons mis en cache : rm ~/.snowflake/cortex/mcp_oauth/{server}*

  • Reconnectez-vous pour déclencher un nouveau flux OAuth

  • Vérifiez que le port de redirection est disponible (par défaut, 8585)

Variables d’environnement non développées
  • Utilisez la syntaxe ${VAR} (avec des accolades) plutôt que $VAR

  • Assurez-vous que la variable est définie dans votre shell (echo $VAR)

  • Vérifiez les fautes de frappe dans les noms de variables

Bonnes pratiques en matière de MCP

  • Utilisez des noms de serveurs descriptifs : clarifiez l’espace de noms des outils

  • Définissez des délais d’expiration appropriés : la valeur par défaut est de 10 minutes pour la liste des outils

  • Identifiants de connexion sécurisés : utilisez des variables d’environnement, et non des secrets codés en dur

  • Testez les connexions : utilisez cortex mcp start avant d’utiliser un serveur