---
title: MCP-Tunnel
url: https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/overview
description: Verbinde Claude sicher mit MCP-Servern, die in deinem privaten Netzwerk laufen, ohne eingehende Ports zu öffnen oder Dienste dem öffentlichen Internet auszusetzen.
---

Mit „MCP tunnels" (MCP-Tunnel) verbindest du Claude mit Servern für das „Model Context Protocol", oder MCP, die in deinem privaten Netzwerk laufen. Der Datenverkehr läuft über eine rein ausgehende Verbindung. Du musst also keine eingehenden Firewall-Ports öffnen und keine Dienste dem öffentlichen Internet aussetzen. Auch die IP-Bereiche von Anthropic musst du auf deinem Ursprungsserver nicht in eine „allowlist" (Zulassungsliste) aufnehmen.

<Note>
  MCP-Tunnel befinden sich in der „research preview" (Forschungsvorschau). [Fordere Zugang an](https://claude.com/form/mcp-tunnels), um sie auszuprobieren. Sie werden „wie besehen" bereitgestellt, ohne Zusagen zu Verfügbarkeit, Support oder Kontinuität. Außerdem hängen sie von einem externen Netzwerkanbieter (Cloudflare) ab, der für den zugrunde liegenden Transport keine Verfügbarkeit zusagt. Anthropic kann MCP-Tunnel jederzeit ändern oder einstellen.
</Note>

Ob Zero Data Retention und HIPAA BAA für diese Funktion gelten, erfährst du unter [API und Datenaufbewahrung](https://platform.claude.com/docs/de/manage-claude/api-and-data-retention#feature-eligibility).

## Funktionsweise

Der [Tunnel-Stack](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components) besteht aus zwei Komponenten, die in deinem Netzwerk laufen:

* **[cloudflared](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components):** Der Open-Source-Tunnel-Connector von Cloudflare. Er baut ausschließlich ausgehende Verbindungen zum [Tunnel-Edge](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components) auf und überträgt verschlüsselten Datenverkehr von Anthropic zu deinem Proxy.
* **[Proxy](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components):** Die Routing-Komponente von Anthropic. Er terminiert das [innere TLS](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components) und prüft, ob Upstream-IPs in einem zulässigen Bereich liegen. Anschließend leitet er jede Anfrage anhand des Hostnamens an den richtigen [Upstream-MCP-Server](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#components) weiter.

Jeder MCP-Server, den du freigibst, erhält einen Hostnamen unter deiner Tunnel-Domain (zum Beispiel `docs.<your-tunnel-domain>`). Diese Hostnamen hängst du in der Claude Console an eine Managed-Agent-Sitzung an. Alternativ übergibst du sie über den [MCP-Connector](https://platform.claude.com/docs/de/agents-and-tools/mcp-connector) an die Messages API.

## Voraussetzungen

Stelle vor der Bereitstellung sicher, dass du Folgendes hast:

* Ein Bereitstellungsziel: einen Kubernetes-Cluster oder eine VM mit Docker und Docker Compose.

* Einen Tunnel. Du kannst ihn in der Claude Console erstellen (siehe [Tunnel erstellen](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/console#create-a-tunnel)) oder über die API. Auch der Setup-Hook des Helm-Charts kann während der Installation einen Tunnel für dich erstellen.

* Eine Möglichkeit, mit der sich dein Stack bei der Tunnels API authentifiziert. Wähle eine davon:

  * **[Programmatischer Zugriff](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#credential-provisioning) (empfohlen).** Richte beim Erstellen des Tunnels [Workload Identity Federation](https://platform.claude.com/docs/de/manage-claude/workload-identity-federation) ein. Dein Stack erzeugt dann kurzlebige API-Token über deinen Identitätsanbieter und ruft das Tunnel-Token ab. Außerdem generiert und registriert er automatisch ein CA-Zertifikat. Dafür brauchst du die Berechtigung zum Verwalten von Föderationsregeln, einen registrierten OIDC-Aussteller und eine Föderationsregel mit dem Scope `workspace:manage_tunnels`.
  * **[Manuell](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/concepts#credential-provisioning).** Du stellst die statischen Anmeldedaten selbst bereit: das Tunnel-Token aus der Console und ein Serverzertifikat, das von einer dort registrierten CA signiert ist. Siehe [Verbindungsdetails abrufen](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/console#get-the-connection-details) und [CA-Zertifikat hinzufügen](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/console#add-a-ca-certificate).

* Einen oder mehrere MCP-Server, die in deinem privaten Netzwerk laufen. Beispiele findest du unter [Remote-MCP-Server](https://platform.claude.com/docs/de/agents-and-tools/remote-mcp-servers).

* Ausgehende Konnektivität wie unter [Netzwerkanforderungen](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/overview#network-requirements) aufgeführt.

### Netzwerkanforderungen

| Komponente       | Ziel                                                 | Port / Protokoll | Verwendet während                 |
| ---------------- | ---------------------------------------------------- | ---------------- | --------------------------------- |
| Setup-Komponente | `api.anthropic.com`                                  | 443 TCP          | Bereitstellung und Token-Rotation |
| cloudflared      | Tunnel-Edge (`198.41.192.0/19`, `2606:4700:a0::/44`) | 7844 TCP und UDP | Laufzeit                          |
| Proxy            | Deine Upstream-MCP-Server                            | Wie konfiguriert | Laufzeit                          |

## Sicherheitsmodell

### Sicherheitsebenen

Drei unabhängige Ebenen schützen jede Anfrage:

| Ebene                                                                         | Schützt vor                                                                                |
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Äußeres mTLS zwischen Anthropic und dem Transportanbieter, mit IP-Validierung | Unbefugten Clients, die den Tunnel erreichen                                               |
| Inneres TLS vom Back-End von Anthropic zu deinem Proxy                        | Einsicht in die Nutzdaten durch den Transportanbieter oder andere Netzwerk-Zwischenstellen |
| OAuth auf jedem MCP-Server                                                    | Unbefugter Nutzung von MCP-Tools durch authentifizierten Tunnel-Datenverkehr               |

Der Tunnel-Transport läuft über das Netzwerk von Cloudflare. Der Proxy terminiert das innere TLS mit einem Zertifikat, das nur du besitzt. Deshalb kann Cloudflare die Nutzdaten von Anfragen und Antworten nicht lesen. Anthropic verbindet sich erst mit einem Tunnel, wenn ein CA-Zertifikat registriert ist. Die Nutzdaten sind also immer verschlüsselt, wenn sie das Netzwerk von Cloudflare durchlaufen. Verbindungsmetadaten erhält Cloudflare allerdings; siehe [Was der Transportanbieter sehen kann](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/overview#what-the-transport-provider-can-observe).

### Modell der geteilten Verantwortung

| Anthropic übernimmt                                                          | Deine Organisation übernimmt                                                                                                                                                         |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Zugriffskontrolle für Tunnel                                                 | Alle Inhalte und den gesamten Datenverkehr, der durch deinen Tunnel läuft, sowie die Einhaltung geltender Nutzungsrichtlinien von Drittanbietern (einschließlich der von Cloudflare) |
| Validierung deines CA-Zertifikats vor der Verbindung mit deinem Proxy        | Einhaltung der Bereitstellungshinweise auf diesen Seiten                                                                                                                             |
| Sicherstellen, dass Claude Anfragen nur an Tunnel deiner Organisation sendet | Schutz von Tunnel-Token und privaten TLS-Schlüsseln                                                                                                                                  |
|                                                                              | Verwaltung des Serverzertifikats und dessen Erneuerung vor Ablauf                                                                                                                    |
|                                                                              | Konfiguration von OAuth auf jedem MCP-Server                                                                                                                                         |
|                                                                              | Einschränkung des Netzwerkzugriffs für den Proxy und die MCP-Server                                                                                                                  |
|                                                                              | Benachrichtigung von Anthropic bei Verdacht auf eine Sicherheitsverletzung                                                                                                           |

<Warning>
  Gelangt ein Angreifer an dein Tunnel-Token **und** an einen deiner privaten TLS-Schlüssel, kann er sich als dein Proxy ausgeben und die Nutzdaten von MCP-Anfragen lesen. Behandle beides als hochsensible Geheimnisse. Hinweise zur Härtung findest du unter [Sicherheit von MCP-Tunneln](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/security).
</Warning>

### Was der Transportanbieter sehen kann

Cloudflare stellt den ausgehenden Transport bereit. Die Nutzdaten von MCP-Anfragen und -Antworten kann Cloudflare nicht lesen, erhält aber die folgenden Verbindungsmetadaten:

* die ausgehende IP-Adresse des Hosts, auf dem cloudflared läuft
* einen Host-Fingerabdruck von cloudflared
* Verbindungszeiten und Datenvolumen
* die Subdomain unter `*.tunnel.anthropic.com`, die deinem Tunnel zugewiesen ist

Die Vereinbarung zwischen Anthropic und Cloudflare schränkt ein, wie Cloudflare diese Telemetriedaten nutzen darf. Für diese Forschungsvorschau ist Cloudflare als Unterauftragsverarbeiter tätig.

## Einen Tunnel bereitstellen

Wenn du neu bei MCP-Tunneln bist, beginne mit dem Schnellstart. So bringst du zuerst lokal einen funktionierenden Tunnel zum Laufen, bevor du eine Produktionsbereitstellung konfigurierst.

<CardGroup cols={2}>
  <Card title="Schnellstart" icon="rocket" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/quickstart">
    Der kürzeste Weg zu einem funktionierenden Tunnel: Docker Compose mit einem Beispiel-MCP-Server.
  </Card>

  <Card title="Mit Helm bereitstellen" icon="stack" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/deploy-helm">
    Installation auf einem Kubernetes-Cluster mit dem Helm-Chart von Anthropic.
  </Card>

  <Card title="Mit Docker Compose bereitstellen" icon="cube" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/deploy-compose">
    Installation auf einer VM mit Docker Compose.
  </Card>
</CardGroup>

So wählst du zwischen den Optionen:

* **Bereitstellungsziel**

  * **Helm** für die Bereitstellung auf Kubernetes.
  * **Docker Compose** für einen einzelnen Host oder lokale Tests.

* **Authentifizierung für das Setup**

  * **Programmatischer Zugriff** (über Workload Identity Federation), wenn du einen OIDC-Identitätsanbieter hast, etwa einen Kubernetes-Cluster, Cloud-IAM oder SPIFFE.
  * **Manuelle Anmeldedaten**, wenn du keinen hast oder wenn du testest.

## Die getunnelten MCP-Server verwenden

Sobald dein Tunnel aktiv ist, sind die Upstream-MCP-Server von Claude Managed Agents und der Messages API aus erreichbar. Aktiv bedeutet: Der Tunnel hat ein aktives CA-Zertifikat und dein Tunnel-Stack ist verbunden.

<Note>
  Über die Console erstellte MCP-Tunnel stehen in claude.ai nicht als Connectors zur Verfügung.
</Note>

In beiden Fällen überträgt der Tunnel verschlüsselten Datenverkehr zu deinem MCP-Server, authentifiziert sich aber nicht bei ihm. Verlangt der Upstream-MCP-Server eine eigene Authentifizierung (OAuth, Bearer-Token), stellst du sie genauso bereit wie bei jedem anderen MCP-Server. Diese Authentifizierung ist unabhängig vom Tunnel.

### Managed Agents (Console)

1. Erstelle auf der Seite [Sessions](https://platform.claude.com/sessions) (`platform.claude.com/sessions`) in der Claude Console eine Sitzung und wähle **Create new agent**, damit du die Liste der MCP-Server bearbeiten kannst.
2. Klicke auf **+ MCP Server** und öffne das Dropdown-Menü. Tunnel im Workspace der Sitzung, die mindestens ein aktives Zertifikat haben, erscheinen oben in der Liste, über dem öffentlichen Connector-Katalog.
3. Wähle den Tunnel aus. Gib unter **Subdomain** die Subdomain an, die dein Proxy an einen bestimmten MCP-Server weiterleitet, und unter **Path** den Pfad, den der Upstream-MCP-Server erwartet. Die Zeile **Resolves to** zeigt die genaue URL an.

### Messages API

Übergib die URL des Upstream-MCP-Servers im Array `mcp_servers`, genauso wie bei jedem anderen Remote-MCP-Server. Der Anfragetext und der Header `anthropic-beta` folgen dem Standardformat des [MCP-Connectors](https://platform.claude.com/docs/de/agents-and-tools/mcp-connector); nur die `url` ist tunnelspezifisch. Das folgende Beispiel verwendet den Beta-Header `mcp-client` des MCP-Connectors, der sich von der Beta `mcp-tunnels` unterscheidet, die von der [Tunnels API](https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/reference) verwendet wird. Stelle die Anfrage in dem Workspace, in dem der Tunnel erstellt wurde, indem du einen API-Key für diesen Workspace verwendest oder, falls dein Key Zugriff auf mehrere Workspaces hat, den [Header `anthropic-workspace-id`](https://platform.claude.com/docs/de/manage-claude/authentication#select-a-workspace) auf diesen Workspace setzt.

Der Host der URL ist `<subdomain>.<your-tunnel-domain>`. Der Pfad hängt von deinem Upstream-MCP-Server ab, nicht vom Tunnel: Der `streamable-http`-Transport von FastMCP stellt unter `/mcp` bereit, andere Server verwenden möglicherweise `/` oder einen benutzerdefinierten Pfad (sieh in der Dokumentation des Servers nach). Der Proxy leitet den Pfad unverändert weiter.

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

Informationen zur Authentifizierung beim Upstream-MCP-Server (`authorization_token`) und zu weiteren `mcp_servers`-Optionen findest du unter [MCP-Connector](https://platform.claude.com/docs/de/agents-and-tools/mcp-connector).

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Sicherheit" icon="lock" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/security">
    Hinweise zur Härtung, Rotation von Anmeldedaten und Reaktion auf Sicherheitsverletzungen.
  </Card>

  <Card title="Fehlerbehebung" icon="wrench" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/troubleshooting">
    Probleme mit Konnektivität, TLS und Routing diagnostizieren.
  </Card>

  <Card title="Referenz" icon="book" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-tunnels/reference">
    Konfigurationsfelder des Proxys, die Tunnels API, Zertifikatsanforderungen und die Setup-Komponente.
  </Card>

  <Card title="MCP-Connector" icon="link" href="https://platform.claude.com/docs/de/agents-and-tools/mcp-connector">
    Getunnelte Server über die Messages API verwenden.
  </Card>
</CardGroup>
