Serveurs MCP

Cette rubrique décrit comment étendre le SDK de Cortex Code Agent avec des serveurs MCP (Model Context Protocol) externes. Les serveurs MCP permettent à votre agent d’appeler des outils externes en complément des outils intégrés comme``Read``, Edit et Bash.

Vue d’ensemble

L’environnement d’exécution actuel de Cortex prend en charge les serveurs MCP externes via les transports suivants :

  • stdio

  • http

  • sse

Connexion de serveurs MCP externes

Serveurs Stdio

Les serveurs Studio sont des processus externes qui communiquent via une entrée et une sortie standard.

import { query } from "cortex-code-agent-sdk";

for await (const message of query({
  prompt: "Search our docs for authentication best practices",
  options: {
    cwd: process.cwd(),
    permissionMode: "bypassPermissions",
    allowDangerouslySkipPermissions: true,
    mcpServers: {
      "my-tools": {
        command: "node",
        args: ["my-mcp-server.js"],
      },
    },
  },
})) {
  // Handle messages...
}

Serveurs HTTP et SSE

Pour les serveurs MCP distants qui communiquent via HTTP ou Server-Sent Events (SSE) :

import { query } from "cortex-code-agent-sdk";

for await (const message of query({
  prompt: "Look up customer data",
  options: {
    cwd: process.cwd(),
    permissionMode: "bypassPermissions",
    allowDangerouslySkipPermissions: true,
    mcpServers: {
      "remote-api": {
        type: "http",
        url: "https://my-mcp-server.example.com/mcp",
        headers: { "Authorization": "Bearer ${MCP_TOKEN}" },
      },
    },
  },
})) {
  // Handle messages...
}

Vous pouvez également utiliser "type": "sse" pour les serveurs qui utilisent le transport SSE.

Contrôler quels outils MCP sont autorisés

Les outils MCP sont des espace de noms dotés du préfix mcp__ qui suivent le format mcp__<server-name>__<tool-name>. Utilisez l’option allowedTools (TypeScript ) ou allowed_tools (Python) pour contrôler les outils que l’agent peut appeler :

import { query } from "cortex-code-agent-sdk";

for await (const message of query({
  prompt: "Search our documentation",
  options: {
    cwd: process.cwd(),
    permissionMode: "bypassPermissions",
    allowDangerouslySkipPermissions: true,
    allowedTools: [
      "mcp__my-tools__search_docs",
      "mcp__my-tools__*",
    ],
    mcpServers: {
      "my-tools": { command: "node", args: ["my-mcp-server.js"] },
    },
  },
})) {
  // Handle messages...
}

Vous pouvez également utiliser disallowedTools/disallowed_tools pour bloquer des outils spécifiques.

Désactivation de MCP

Pour désactiver tous les serveurs MCP pour une session, utilisez l’option noMcp (TypeScript) ou no_mcp (Python) :

const session = await createCortexCodeSession({
  cwd: process.cwd(),
  noMcp: true,
});

Comparaison des fonctionnalités

Fonctionnalité

Python

TypeScript

Serveurs MCP externes (stio)

Oui (mcp_servers)

Oui (mcpServers)

Serveurs MCP externes (HTTP/SSE)

Oui (mcp_servers)

Oui (mcpServers)

allowedTools / allowed_tools

Oui

Oui

noMcp / no_mcp

Oui

Oui