---
title: Tunnels MCP
url: https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/overview
description: Connectez Claude en toute sécurité à des serveurs MCP exécutés dans votre réseau privé sans ouvrir de ports entrants ni exposer de services à l'internet public.
---

Les tunnels MCP vous permettent de connecter Claude à des serveurs Model Context Protocol (MCP) qui s'exécutent à l'intérieur de votre réseau privé. Le trafic circule via une connexion sortante uniquement, de sorte que vous n'avez pas besoin d'ouvrir de ports de pare-feu entrants, d'exposer des services à l'internet public ou d'ajouter les plages d'adresses IP d'Anthropic à une liste d'autorisation sur votre origine.

<Note>
  Les tunnels MCP sont en « research preview » (aperçu de recherche). [Demandez l'accès](https://claude.com/form/mcp-tunnels) pour les essayer. Ils sont fournis « en l'état », sans aucun engagement de disponibilité, de support ou de continuité. Ils dépendent d'un fournisseur réseau tiers (Cloudflare) qui ne prend aucun engagement de disponibilité pour le transport sous-jacent. Anthropic peut modifier ou interrompre les tunnels MCP à tout moment.
</Note>

Pour l'éligibilité à la rétention zéro de données et au BAA HIPAA, consultez [API et rétention des données](https://platform.claude.com/docs/fr/manage-claude/api-and-data-retention#feature-eligibility).

## Comment ça fonctionne

La [pile de tunnel](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components) se compose de deux composants qui s'exécutent à l'intérieur de votre réseau :

* **[cloudflared](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components) :** le connecteur de tunnel open source de Cloudflare. Il initie des connexions sortantes uniquement vers le [bord du tunnel](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components) et transporte le trafic chiffré d'Anthropic vers votre proxy.
* **[Proxy](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components) :** le composant de routage d'Anthropic. Il termine le [TLS interne](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components), valide que les adresses IP en amont se situent dans une plage autorisée, et achemine chaque requête vers le [serveur MCP en amont](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#components) correct en fonction du nom d'hôte.

Chaque serveur MCP que vous exposez obtient un nom d'hôte sous votre domaine de tunnel (par exemple, `docs.<your-tunnel-domain>`). Vous attachez ces noms d'hôte à une session Managed Agent dans la Claude Console, ou vous les transmettez à l'API Messages via le [connecteur MCP](https://platform.claude.com/docs/fr/agents-and-tools/mcp-connector).

## Prérequis

Avant le déploiement, assurez-vous d'avoir :

* Une cible de déploiement : un cluster Kubernetes, ou une VM avec Docker et Docker Compose.

* Un tunnel. Créez-en un dans la Claude Console (voir [Créer un tunnel](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/console#create-a-tunnel)) ou via l'API ; le hook de configuration du chart Helm peut également en créer un pour vous lors de l'installation.

* Un moyen pour votre pile de s'authentifier auprès de l'API Tunnels. Choisissez-en un :

  * **[Accès programmatique](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#credential-provisioning) (recommandé).** Configurez la [Workload Identity Federation](https://platform.claude.com/docs/fr/manage-claude/workload-identity-federation) lorsque vous créez le tunnel. Votre pile génère des jetons API de courte durée à partir de votre fournisseur d'identité, récupère le jeton de tunnel, et génère et enregistre automatiquement un certificat CA. Nécessite l'autorisation de gérer les règles de fédération, un émetteur OIDC enregistré, et une règle de fédération avec la portée `workspace:manage_tunnels`.
  * **[Manuel](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/concepts#credential-provisioning).** Fournissez vous-même des identifiants statiques : le jeton de tunnel depuis la Console et un certificat de serveur signé par une CA que vous y enregistrez. Voir [Obtenir les détails de connexion](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/console#get-the-connection-details) et [Ajouter un certificat CA](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/console#add-a-ca-certificate).

* Un ou plusieurs serveurs MCP exécutés dans votre réseau privé. Voir [Serveurs MCP distants](https://platform.claude.com/docs/fr/agents-and-tools/remote-mcp-servers) pour des exemples.

* Une connectivité sortante telle que listée sous [Exigences réseau](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/overview#network-requirements).

### Exigences réseau

| Composant                  | Destination                                             | Port / protocole       | Utilisé pendant                        |
| -------------------------- | ------------------------------------------------------- | ---------------------- | -------------------------------------- |
| Composant de configuration | `api.anthropic.com`                                     | 443 TCP                | Provisionnement et rotation des jetons |
| cloudflared                | Bord du tunnel (`198.41.192.0/19`, `2606:4700:a0::/44`) | 7844 TCP et UDP        | Exécution                              |
| Proxy                      | Vos serveurs MCP en amont                               | Selon la configuration | Exécution                              |

## Modèle de sécurité

### Couches de sécurité

Trois couches indépendantes protègent chaque requête :

| Couche                                                                          | Protège contre                                                                               |
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| mTLS externe entre Anthropic et le fournisseur de transport, avec validation IP | Les clients non autorisés atteignant le tunnel                                               |
| TLS interne du back-end d'Anthropic vers votre proxy                            | L'inspection de la charge utile par le fournisseur de transport ou tout intermédiaire réseau |
| OAuth sur chaque serveur MCP                                                    | L'utilisation non autorisée des outils MCP par le trafic de tunnel authentifié               |

Le transport du tunnel s'exécute sur le réseau de Cloudflare. Comme le proxy termine le TLS interne à l'aide d'un certificat que vous seul détenez, Cloudflare ne peut pas lire les charges utiles des requêtes ou des réponses. Anthropic ne se connecte pas à un tunnel tant qu'un certificat CA n'est pas enregistré, de sorte que les charges utiles sont toujours chiffrées lorsqu'elles traversent le réseau de Cloudflare. Cloudflare reçoit bien des métadonnées de connexion ; voir [Ce que le fournisseur de transport peut observer](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/overview#what-the-transport-provider-can-observe).

### Modèle de responsabilité partagée

| Anthropic gère                                                                             | Votre organisation gère                                                                                                                                                     |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Le contrôle d'accès au tunnel                                                              | Tout le contenu et le trafic qui transitent par votre tunnel, et la conformité aux politiques d'utilisation acceptable tierces applicables (y compris celles de Cloudflare) |
| La validation de votre certificat CA avant de se connecter à votre proxy                   | Le respect des directives de déploiement sur ces pages                                                                                                                      |
| S'assurer que Claude n'envoie des requêtes qu'aux tunnels appartenant à votre organisation | La sécurisation des jetons de tunnel et des clés privées TLS                                                                                                                |
|                                                                                            | La gestion du certificat de serveur et son renouvellement avant son expiration                                                                                              |
|                                                                                            | La configuration d'OAuth sur chaque serveur MCP                                                                                                                             |
|                                                                                            | La restriction de l'accès réseau pour le proxy et les serveurs MCP                                                                                                          |
|                                                                                            | La notification à Anthropic si vous suspectez une violation                                                                                                                 |

<Warning>
  Si un attaquant obtient votre jeton de tunnel **et** l'une de vos clés privées TLS, il pourrait usurper l'identité de votre proxy et lire les charges utiles des requêtes MCP. Traitez les deux comme des secrets de grande valeur. Voir [Sécurité des tunnels MCP](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/security) pour des directives de renforcement.
</Warning>

### Ce que le fournisseur de transport peut observer

Cloudflare fournit le transport sortant. Il ne peut pas lire les charges utiles des requêtes ou des réponses MCP, mais il reçoit bien les métadonnées de connexion suivantes :

* l'adresse IP de sortie de l'hôte exécutant cloudflared
* une empreinte d'hôte cloudflared
* le timing de connexion et le volume d'octets
* le sous-domaine `*.tunnel.anthropic.com` attribué à votre tunnel

L'accord d'Anthropic avec Cloudflare restreint l'utilisation par Cloudflare de cette télémétrie. Cloudflare agit en tant que sous-traitant pour cet aperçu de recherche.

## Déployer un tunnel

Si vous débutez avec les tunnels MCP, commencez par le démarrage rapide pour obtenir un tunnel fonctionnel localement avant de configurer un déploiement de production.

<CardGroup cols={2}>
  <Card title="Démarrage rapide" icon="rocket" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/quickstart">
    Le chemin le plus court vers un tunnel fonctionnel : Docker Compose avec un serveur MCP d'exemple.
  </Card>

  <Card title="Déployer avec Helm" icon="stack" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/deploy-helm">
    Installez sur un cluster Kubernetes à l'aide du chart Helm d'Anthropic.
  </Card>

  <Card title="Déployer avec Docker Compose" icon="cube" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/deploy-compose">
    Installez sur une VM à l'aide de Docker Compose.
  </Card>
</CardGroup>

Choisir entre eux :

* **Cible de déploiement**

  * **Helm** lors du déploiement sur Kubernetes.
  * **Docker Compose** pour un hôte unique ou des tests locaux.

* **Authentification pour la configuration**

  * **Accès programmatique** (via Workload Identity Federation) lorsque vous disposez d'un fournisseur d'identité OIDC tel qu'un cluster Kubernetes, un IAM cloud ou SPIFFE.
  * **Identifiants manuels** lorsque vous n'en disposez pas, ou lorsque vous effectuez des tests.

## Utiliser les serveurs MCP tunnelisés

Une fois votre tunnel actif (il possède un certificat CA actif et votre pile de tunnel est connectée), les serveurs MCP en amont sont accessibles depuis les Claude Managed Agents et l'API Messages.

<Note>
  Les tunnels MCP créés via la Console ne sont pas disponibles en tant que connecteurs dans claude.ai.
</Note>

Dans les deux cas, le tunnel transporte le trafic chiffré vers votre serveur MCP mais ne s'authentifie pas auprès de celui-ci. Si le serveur MCP en amont nécessite sa propre authentification (OAuth, jeton bearer), fournissez-la de la même manière que pour tout autre serveur MCP ; elle est indépendante du tunnel.

### Managed Agents (Console)

1. Sur la page [Sessions](https://platform.claude.com/sessions) (`platform.claude.com/sessions`) de la Claude Console, créez une session et choisissez **Create new agent** afin de pouvoir modifier la liste des serveurs MCP.
2. Cliquez sur **+ MCP Server** et ouvrez le menu déroulant. Les tunnels dans l'espace de travail de la session qui possèdent au moins un certificat actif apparaissent en haut de la liste, au-dessus du catalogue de connecteurs publics.
3. Sélectionnez le tunnel et fournissez le **Subdomain** que votre proxy achemine vers un serveur MCP spécifique, ainsi que le **Path** attendu par le serveur MCP en amont. La ligne **Resolves to** affiche l'URL exacte.

### API Messages

Transmettez l'URL du serveur MCP en amont dans le tableau `mcp_servers`, de la même manière que pour tout autre serveur MCP distant. Le corps de la requête et l'en-tête `anthropic-beta` suivent le format standard du [connecteur MCP](https://platform.claude.com/docs/fr/agents-and-tools/mcp-connector) ; seule l'`url` est spécifique au tunnel. L'exemple suivant utilise l'en-tête bêta `mcp-client` du connecteur MCP, qui est distinct de la bêta `mcp-tunnels` utilisée par l'[API Tunnels](https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/reference). Effectuez la requête dans l'espace de travail où le tunnel a été créé en utilisant une clé API pour cet espace de travail ou, si votre clé a accès à plusieurs espaces de travail, en définissant l'[en-tête `anthropic-workspace-id`](https://platform.claude.com/docs/fr/manage-claude/authentication#select-a-workspace) sur cet espace de travail.

L'hôte de l'URL est `<subdomain>.<your-tunnel-domain>`. Le chemin dépend de votre serveur MCP en amont, et non du tunnel : le transport `streamable-http` de FastMCP sert à `/mcp`, et d'autres serveurs peuvent utiliser `/` ou un chemin personnalisé (consultez la documentation du serveur). Le proxy transmet le chemin sans le modifier.

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "Content-Type: application/json" \
    -H "X-API-Key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "anthropic-beta: mcp-client-2025-11-20" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1000,
      "messages": [{"role": "user", "content": "Use the hello tool to greet tunnel."}],
      "mcp_servers": [
        {
          "type": "url",
          "url": "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
          "name": "echo"
        }
      ],
      "tools": [{"type": "mcp_toolset", "mcp_server_name": "echo"}]
    }'
  ```

  ```bash CLI
  ant beta:messages create --beta mcp-client-2025-11-20 <<'YAML'
  model: claude-opus-5-5
  max_tokens: 1000
  messages:
    - role: user
      content: Use the hello tool to greet tunnel.
  mcp_servers:
    - type: url
      url: https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp
      name: echo
  tools:
    - type: mcp_toolset
      mcp_server_name: echo
  YAML
  ```

  ```python Python
  client = anthropic.Anthropic()

  response = client.beta.messages.create(
      model="claude-opus-5-5",
      max_tokens=1000,
      messages=[{"role": "user", "content": "Use the hello tool to greet tunnel."}],
      mcp_servers=[
          {
              "type": "url",
              "url": "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
              "name": "echo",
          }
      ],
      tools=[{"type": "mcp_toolset", "mcp_server_name": "echo"}],
      betas=["mcp-client-2025-11-20"],
  )

  print(response)
  ```

  ```typescript TypeScript
  const anthropic = new Anthropic();

  const response = await anthropic.beta.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1000,
    messages: [
      {
        role: "user",
        content: "Use the hello tool to greet tunnel."
      }
    ],
    mcp_servers: [
      {
        type: "url",
        url: "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
        name: "echo"
      }
    ],
    tools: [
      {
        type: "mcp_toolset",
        mcp_server_name: "echo"
      }
    ],
    betas: ["mcp-client-2025-11-20"]
  });

  console.log(response);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Messages::Model.ClaudeOpus5_5,
      MaxTokens = 1000,
      Messages = new List<BetaMessageParam>
      {
          new() { Role = Role.User, Content = "Use the hello tool to greet tunnel." }
      },
      McpServers = new List<BetaRequestMcpServerUrlDefinition>
      {
          new()
          {
              Url = "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
              Name = "echo"
          }
      },
      Tools = new List<BetaToolUnion>
      {
          new BetaMcpToolset("echo")
      },
      Betas = ["mcp-client-2025-11-20"]
  };

  var message = await client.Beta.Messages.Create(parameters);
  Console.WriteLine(message);
  ```

  ```go Go
  client := anthropic.NewClient()

  response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 1000,
  	Messages: []anthropic.BetaMessageParam{
  		anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Use the hello tool to greet tunnel.")),
  	},
  	MCPServers: []anthropic.BetaRequestMCPServerURLDefinitionParam{
  		{
  			URL:  "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
  			Name: "echo",
  		},
  	},
  	Tools: []anthropic.BetaToolUnionParam{
  		{OfMCPToolset: &anthropic.BetaMCPToolsetParam{
  			MCPServerName: "echo",
  		}},
  	},
  	Betas: []anthropic.AnthropicBeta{
  		anthropic.AnthropicBetaMCPClient2025_11_20,
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  fmt.Println(response)
  ```

  ```java Java
  import com.anthropic.models.beta.messages.BetaMcpToolset;
  // ...
  import com.anthropic.models.beta.messages.BetaRequestMcpServerUrlDefinition;
  // ...

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_OPUS_5_5)
          .maxTokens(1000L)
          .addUserMessage("Use the hello tool to greet tunnel.")
          .addMcpServer(BetaRequestMcpServerUrlDefinition.builder()
              .url("https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp")
              .name("echo")
              .build())
          .addTool(BetaMcpToolset.builder()
              .mcpServerName("echo")
              .build())
          .addBeta("mcp-client-2025-11-20")
          .build();

      BetaMessage response = client.beta().messages().create(params);
      IO.println(response);
  }
  ```

  ```php PHP
  $client = new Client();

  $message = $client->beta->messages->create(
      maxTokens: 1000,
      messages: [
          ['role' => 'user', 'content' => 'Use the hello tool to greet tunnel.']
      ],
      model: 'claude-opus-5-5',
      mcpServers: [
          [
              'type' => 'url',
              'url' => 'https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp',
              'name' => 'echo',
          ],
      ],
      tools: [
          [
              'type' => 'mcp_toolset',
              'mcpServerName' => 'echo',
          ],
      ],
      betas: ['mcp-client-2025-11-20'],
  );

  echo $message;
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  response = client.beta.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1000,
    messages: [
      { role: "user", content: "Use the hello tool to greet tunnel." }
    ],
    mcp_servers: [
      {
        type: "url",
        url: "https://echo.YOUR_TUNNEL_DOMAIN_HERE/mcp",
        name: "echo"
      }
    ],
    tools: [
      {
        type: "mcp_toolset",
        mcp_server_name: "echo"
      }
    ],
    betas: ["mcp-client-2025-11-20"]
  )

  puts response
  ```
</CodeGroup>

Pour l'authentification auprès du serveur MCP en amont (`authorization_token`) et les autres options `mcp_servers`, voir [connecteur MCP](https://platform.claude.com/docs/fr/agents-and-tools/mcp-connector).

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Sécurité" icon="lock" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/security">
    Directives de renforcement, rotation des identifiants et réponse aux violations.
  </Card>

  <Card title="Dépannage" icon="wrench" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/troubleshooting">
    Diagnostiquez les problèmes de connectivité, de TLS et de routage.
  </Card>

  <Card title="Référence" icon="book" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-tunnels/reference">
    Champs de configuration du proxy, l'API Tunnels, exigences de certificat et le composant de configuration.
  </Card>

  <Card title="Connecteur MCP" icon="link" href="https://platform.claude.com/docs/fr/agents-and-tools/mcp-connector">
    Utilisez les serveurs tunnelisés depuis l'API Messages.
  </Card>
</CardGroup>
