Deutsch
Dokumentation
MCP Server

MCP-Server

Fügen Sie lokale und Remote-MCP-Tools hinzu.

Sie können externe Tools zu OpenCode hinzufügen, indem Sie das Model Context Protocol (MCP) verwenden. OpenCode unterstützt sowohl lokale als auch Remote-Server.

Nach dem Hinzufügen sind MCP-Tools automatisch zusammen mit den integrierten Tools für das LLM verfügbar.


Hinweise

Wenn Sie einen MCP-Server verwenden, wird er zum Kontext hinzugefügt. Dies kann sich schnell summieren, wenn Sie viele Tools haben. Daher empfehlen wir, vorsichtig zu sein, welche MCP-Server Sie verwenden.

MCP-Server erweitern Ihren Kontext, seien Sie also vorsichtig, welche Sie aktivieren.

Bestimmte MCP-Server, wie der GitHub MCP-Server, neigen dazu, viele Tokens hinzuzufügen und können leicht das Kontextlimit überschreiten.


Aktivieren

Sie können MCP-Server in Ihrer OpenCode-Konfiguration unter mcp definieren. Fügen Sie jedem MCP einen eindeutigen Namen hinzu. Sie können diesen MCP beim Prompten des LLM mit diesem Namen referenzieren.

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "name-of-mcp-server": {
      // ...
      "enabled": true,
    },
    "name-of-other-mcp-server": {
      // ...
    },
  },
}

Sie können einen Server auch deaktivieren, indem Sie enabled auf false setzen. Dies ist nützlich, wenn Sie einen Server vorübergehend deaktivieren möchten, ohne ihn aus Ihrer Konfiguration zu entfernen.


Remote-Standardwerte überschreiben

Organisationen können Standard-MCP-Server über ihren .well-known/opencode-Endpunkt bereitstellen. Diese Server können standardmäßig deaktiviert sein, sodass Benutzer die benötigten aktivieren können.

Um einen bestimmten Server aus der Remote-Konfiguration Ihrer Organisation zu aktivieren, fügen Sie ihn mit enabled: true zu Ihrer lokalen Konfiguration hinzu:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

Ihre lokalen Konfigurationswerte überschreiben die Remote-Standardwerte. Weitere Details finden Sie unter Konfigurationspriorität.


Lokal

Fügen Sie lokale MCP-Server hinzu, indem Sie type auf "local" innerhalb des MCP-Objekts setzen.

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-local-mcp-server": {
      "type": "local",
      // Oder ["bun", "x", "my-mcp-command"]
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true,
      "environment": {
        "MY_ENV_VAR": "my_env_var_value",
      },
    },
  },
}

Der Befehl ist, wie der lokale MCP-Server gestartet wird. Sie können auch eine Liste von Umgebungsvariablen übergeben.

Hier ist zum Beispiel, wie Sie den Test-MCP-Server @modelcontextprotocol/server-everything (opens in a new tab) hinzufügen können.

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
    },
  },
}

Um es zu verwenden, kann ich use the mcp_everything tool zu meinen Prompts hinzufügen.

use the mcp_everything tool to add the number 3 and 4

Optionen

Hier sind alle Optionen zur Konfiguration eines lokalen MCP-Servers.

OptionTypErforderlichBeschreibung
typeStringJaTyp der MCP-Server-Verbindung, muss "local" sein.
commandArrayJaBefehl und Argumente zum Ausführen des MCP-Servers.
environmentObjectUmgebungsvariablen, die beim Ausführen des Servers gesetzt werden.
enabledBooleanMCP-Server beim Start aktivieren oder deaktivieren.
timeoutNumberTimeout in ms für das Abrufen von Tools vom MCP-Server. Standard ist 5000 (5 Sekunden).

Remote

Fügen Sie Remote-MCP-Server hinzu, indem Sie type auf "remote" setzen.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-remote-mcp": {
      "type": "remote",
      "url": "https://my-mcp-server.com",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer MY_API_KEY"
      }
    }
  }
}

Die url ist die URL des Remote-MCP-Servers und mit der headers-Option können Sie eine Liste von Headern übergeben.


Optionen

OptionTypErforderlichBeschreibung
typeStringJaTyp der MCP-Server-Verbindung, muss "remote" sein.
urlStringJaURL des Remote-MCP-Servers.
enabledBooleanMCP-Server beim Start aktivieren oder deaktivieren.
headersObjectHeader, die mit der Anfrage gesendet werden.
oauthObjectOAuth-Authentifizierungskonfiguration. Siehe OAuth-Abschnitt unten.
timeoutNumberTimeout in ms für das Abrufen von Tools vom MCP-Server. Standard ist 5000 (5 Sekunden).

OAuth

OpenCode behandelt automatisch die OAuth-Authentifizierung für Remote-MCP-Server. Wenn ein Server Authentifizierung erfordert, wird OpenCode:

  • Die 401-Antwort erkennen und den OAuth-Flow initiieren
  • Dynamic Client Registration (RFC 7591) verwenden, wenn vom Server unterstützt
  • Tokens sicher für zukünftige Anfragen speichern

Automatisch

Für die meisten OAuth-fähigen MCP-Server ist keine spezielle Konfiguration erforderlich. Konfigurieren Sie einfach den Remote-Server:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp"
    }
  }
}

Wenn der Server Authentifizierung erfordert, wird OpenCode Sie auffordern, sich zu authentifizieren, wenn Sie ihn zum ersten Mal verwenden. Andernfalls können Sie den Flow manuell auslösen mit opencode mcp auth <server-name>.


Vorregistriert

Wenn Sie Client-Anmeldedaten vom MCP-Server-Anbieter haben, können Sie diese konfigurieren:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "{env:MY_MCP_CLIENT_ID}",
        "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
        "scope": "tools:read tools:execute"
      }
    }
  }
}

Authentifizierung

Sie können die Authentifizierung manuell auslösen oder Anmeldedaten verwalten.

Mit einem bestimmten MCP-Server authentifizieren:

opencode mcp auth my-oauth-server

Alle MCP-Server und ihren Authentifizierungsstatus auflisten:

opencode mcp list

Gespeicherte Anmeldedaten entfernen:

opencode mcp logout my-oauth-server

Der mcp auth-Befehl öffnet Ihren Browser zur Autorisierung. Nach der Autorisierung speichert OpenCode die Tokens sicher in ~/.local/share/opencode/mcp-auth.json.


OAuth deaktivieren

Wenn Sie automatisches OAuth für einen Server deaktivieren möchten (z.B. für Server, die API-Schlüssel verwenden), setzen Sie oauth auf false:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-api-key-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MY_API_KEY}"
      }
    }
  }
}

OAuth-Optionen

OptionTypBeschreibung
oauthObject | falseOAuth-Konfigurationsobjekt oder false zum Deaktivieren der OAuth-Autoerkennung.
clientIdStringOAuth-Client-ID. Wenn nicht angegeben, wird dynamische Client-Registrierung versucht.
clientSecretStringOAuth-Client-Secret, falls vom Autorisierungsserver benötigt.
scopeStringOAuth-Scopes, die während der Autorisierung angefordert werden.

Debugging

Wenn ein Remote-MCP-Server bei der Authentifizierung fehlschlägt, können Sie Probleme diagnostizieren mit:

# Authentifizierungsstatus für alle OAuth-fähigen Server anzeigen
opencode mcp auth list
 
# Verbindung und OAuth-Flow für einen bestimmten Server debuggen
opencode mcp debug my-oauth-server

Der mcp debug-Befehl zeigt den aktuellen Authentifizierungsstatus, testet die HTTP-Konnektivität und versucht den OAuth-Discovery-Flow.


Verwalten

Ihre MCPs sind als Tools in OpenCode verfügbar, neben den integrierten Tools. Sie können sie also wie jedes andere Tool über die OpenCode-Konfiguration verwalten.


Global

Das bedeutet, dass Sie sie global aktivieren oder deaktivieren können.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp-foo": false
  }
}

Wir können auch ein Glob-Muster verwenden, um alle passenden MCPs zu deaktivieren.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp*": false
  }
}

Hier verwenden wir das Glob-Muster my-mcp*, um alle MCPs zu deaktivieren.


Pro Agent

Wenn Sie eine große Anzahl von MCP-Servern haben, möchten Sie sie vielleicht nur pro Agent aktivieren und global deaktivieren. Dazu:

  • Deaktivieren Sie es global als Tool.
  • Aktivieren Sie in Ihrer Agent-Konfiguration den MCP-Server als Tool.
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}

Glob-Muster

Das Glob-Muster verwendet einfache Regex-Globbing-Muster:

  • * passt auf null oder mehr beliebige Zeichen (z.B. "my-mcp*" passt auf my-mcp_search, my-mcp_list, etc.)
  • ? passt auf genau ein Zeichen
  • Alle anderen Zeichen werden wörtlich gematcht

MCP-Server-Tools werden mit dem Servernamen als Präfix registriert, um also alle Tools für einen Server zu deaktivieren, verwenden Sie einfach:

"mymcpservername_*": false

Beispiele

Unten sind Beispiele für einige gängige MCP-Server. Sie können einen PR einreichen, wenn Sie andere Server dokumentieren möchten.


Sentry

Fügen Sie den Sentry MCP-Server (opens in a new tab) hinzu, um mit Ihren Sentry-Projekten und Issues zu interagieren.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {}
    }
  }
}

Nach dem Hinzufügen der Konfiguration authentifizieren Sie sich bei Sentry:

opencode mcp auth sentry

Dies öffnet ein Browserfenster, um den OAuth-Flow abzuschließen und OpenCode mit Ihrem Sentry-Konto zu verbinden.

Nach der Authentifizierung können Sie Sentry-Tools in Ihren Prompts verwenden, um Issues, Projekte und Fehlerdaten abzufragen.

Show me the latest unresolved issues in my project. use sentry

Context7

Fügen Sie den Context7 MCP-Server (opens in a new tab) hinzu, um durch Dokumentationen zu suchen.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

Wenn Sie sich für ein kostenloses Konto angemeldet haben, können Sie Ihren API-Schlüssel verwenden und höhere Rate-Limits erhalten.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}

Hier gehen wir davon aus, dass Sie die Umgebungsvariable CONTEXT7_API_KEY gesetzt haben.

Fügen Sie use context7 zu Ihren Prompts hinzu, um den Context7 MCP-Server zu verwenden.

Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7

Alternativ können Sie etwas wie dies zu Ihrer AGENTS.md hinzufügen.

AGENTS.md
When you need to search docs, use `context7` tools.

Grep by Vercel

Fügen Sie den Grep by Vercel (opens in a new tab) MCP-Server hinzu, um durch Code-Snippets auf GitHub zu suchen.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}

Da wir unseren MCP-Server gh_grep genannt haben, können Sie use the gh_grep tool zu Ihren Prompts hinzufügen, um den Agenten dazu zu bringen, ihn zu verwenden.

What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool

Alternativ können Sie etwas wie dies zu Ihrer AGENTS.md hinzufügen.

AGENTS.md
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.