MCP in OpenCode auf DeepSeek: So verbinden Sie externe Tools

Written by

in

MCP (Model Context Protocol) ist ein offenes Protokoll, das beschreibt, wie externe Tools und Datenquellen mit dem Sprachmodell verbunden werden: ein Dateisystem, Dokumentation, Task-Tracker, Bug-Tracker oder Ihr eigener Dienst. Anstatt jedes Tool in den Agenten einzubetten, richten Sie einen separaten MCP-Server ein, mit dem der Agent nach dem Standardschema kommuniziert.

OpenCode unterstützt MCP sofort: sowohl lokale Server, die von einem untergeordneten Prozess gestartet werden, als auch Remote-Server, auf die über HTTP zugegriffen werden kann. Ein wichtiger Punkt ist, dass die gesamte MCP-Schicht auf der Seite von OpenCode selbst implementiert wird und nicht auf der Seite des Modellanbieters. Daher empfängt DeepSeek MCP-Tools als normale Funktionen in der Anfrage und muss nichts über das Protokoll selbst wissen.

In diesem Beitrag schaue ich mir an, wie man einen lokalen und einen Remote-Server hinzufügt, wie man sich autorisiert, wie man nicht in Tokens ertrinkt und was bei der Arbeit mit DeepSeek-Modellen zu beachten ist.

Was Sie brauchen

Zum Arbeiten benötigen Sie drei Dinge:

  • OpenCode installiert. Falls der Agent noch nicht konfiguriert ist, habe ich die Vorgehensweise zur Installation und Verbindung von DeepSeek in einem separaten Hinweis besprochen.
  • Node.js und npx. Notwendig für lokale MCP-Server, die als npm-Pakete verteilt werden.
  • Zugriffsschlüssel. Nur für die Remote-Server, die eine Autorisierung erfordern. Öffentliche Server wie Context7 funktionieren ohne Schlüssel, aber mit geringeren Limits.

Wie es funktioniert

Server werden in der OpenCode-Konfiguration im mcp-Block beschrieben. Jeder Server hat einen eindeutigen Namen, mit dem er in einer Anfrage erwähnt werden kann. Servertools werden mit diesem Namenspräfix registriert, sodass es zu keinen Konflikten zwischen verschiedenen Servern kommt.

Nach dem Herstellen der Verbindung stehen den Modellen neben den integrierten Tools auch MCP-Tools zur Verfügung: Lesen von Dateien, Bearbeiten von Code und Ausführen von Befehlen. Aus Sicht von DeepSeek handelt es sich um gewöhnliche Funktionen, die ein Agent aufrufen kann – weshalb das Bundle ohne jegliche MCP-Unterstützung auf der Modell-API-Seite auskommt.

Lokaler Server

Der einfachste Weg, sich mit dem Mechanismus vertraut zu machen, ist der Testserver @modelcontextprotocol/server-everything. Fügen wir es der Datei opencode.json im Projektstammverzeichnis hinzu:

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

Das Feld Befehl enthält den Server-Startbefehl und seine Argumente in Form eines Arrays. Nach dem Neustart von OpenCode erscheinen die Tools in der Sitzung und können explizit angefordert werden:

используй инструмент mcp_everything, чтобы сложить 3 и 4

Der lokale Server verfügt über mehrere weitere nützliche Felder. environment legt die Prozessumgebungsvariablen fest, cwd – das Arbeitsverzeichnis, timeout – Anforderungszeitlimit in Millisekunden und enabled ermöglicht Ihnen, den Server vorübergehend zu deaktivieren, ohne ihn aus der Konfiguration zu entfernen.

Remote-Server

Remote-Server sind praktischer: Sie müssen nichts lokal ausführen und können über eine URL darauf zugreifen. Ein gutes Beispiel ist Context7, das nach aktueller Bibliotheksdokumentation sucht. Es verbindet sich ohne Schlüssel:

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

Wenn Sie über ein kostenloses Context7-Konto verfügen, liegt der Schlüssel darin, die Limits zu erhöhen. Header werden über den headers-Block übertragen, und es ist praktisch, den Schlüssel selbst in einer Umgebungsvariablen zu behalten:

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

Die {env:NAME}-Konstruktion ersetzt beim Laden der Konfiguration den Wert der Umgebungsvariablen, sodass der Schlüssel nicht im Repository landet. Vor dem Start des Agenten muss die Variable im Terminal exportiert werden.

Ein weiterer nützlicher öffentlicher Server ist Grep von Vercel. Suchen Sie auf GitHub nach Codebeispielen:

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

Autorisierung über OAuth

Einige Remote-Server erfordern OAuth. OpenCode kann dieses Szenario selbst durchlaufen: Es bemerkt die 401-Antwort, löst die Autorisierung aus und speichert die Token. Geben Sie für Sentry einfach den Server an:

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

Danach kann die Autorisierung manuell gestartet werden – der Browser öffnet sich:

opencode mcp auth sentry

Servicebefehle sind auch im Arbeitsalltag nützlich. opencode mcp list zeigt Server und Autorisierungsstatus an, opencode mcp logout löscht gespeicherte Token und opencode mcp debug prüft die Netzwerkkonnektivität und die OAuth-Erkennung für einen bestimmten Server. Token werden lokal in der Datei ~/.local/share/opencode/mcp-auth.json gespeichert.

Wenn der Server kein OAuth, sondern einen regulären API-Schlüssel verwendet, sollte die automatische Autorisierung deaktiviert werden, andernfalls versucht OpenCode, OAuth dort weiterzugeben, wo es nicht benötigt wird:

{
  "$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}"
      }
    }
  }
}

Werkzeugverwaltung

MCP-Tools verbrauchen Kontext: Jeder Server fügt der Anfrage Beschreibungen seiner Funktionen hinzu. Daher ist es besser, Server, die selten benötigt werden, ausgeschaltet zu lassen. Dies kann global über den Block tools erfolgen:

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

Die Vorlage my-mcp* deaktiviert alle Tools, deren Name mit diesem Präfix beginnt. Bei vielen Servern ist es sinnvoller, diese global zu deaktivieren und lokal für einen bestimmten Agenten zu aktivieren:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}

DeepSeek-Funktionen

Die Verbindung mit DeepSeek funktioniert, weil die Modelle Aufruffunktionen unterstützen und die MCP-Tools dafür wie gewöhnliche Funktionen aussehen. DeepSeek selbst verbindet keine MCP-Server und sollte dies auch nicht tun: Die Verbindung wird von OpenCode verwaltet.

Worauf Sie achten sollten:

  • Auswahl eines Modells. Für Routinearbeiten und kleine Bearbeitungen ist Deepseek-Flash ausreichend. Für Aufgaben, bei denen Sie viel Kontext im Kopf behalten und ein Tool sorgfältig auswählen müssen, ist es besser, deepseek-v4-pro.
  • zu geben

  • Kontextgröße. Schwere Server wie GitHub MCP fügen viele Token hinzu und stoßen zusammen mit einem großen Projekt leicht an die Grenze. Schalten Sie sie nur für die Dauer einer bestimmten Aufgabe ein.
  • Kosten Toolschemata werden mit jeder Anfrage gesendet. Je mehr Server also einbezogen werden, desto teurer ist jede Iteration. Sie zahlen direkt an den Anbieter, sodass die zusätzlichen Server auf Ihrer Rechnung sichtbar sind.
  • Hinweise für den Agenten. Es ist sicherer, sich nicht auf die Genialität des Modells zu verlassen, sondern den Server direkt in der Anfrage zu benennen oder eine Regel in AGENTS.md zu schreiben.

Ein Beispiel für eine Regel für AGENTS.md, damit der Agent selbst auf die benötigte Quelle zugreift:

Когда нужно посмотреть документацию библиотеки, используй инструменты context7.

Praktisches Rezept

Für die alltägliche Arbeit reichen in der Regel zwei Server aus: Context7 für die Dokumentation und ein schmaler Server für eine bestimmte Aufgabe – zum Beispiel Sentry für die Fehleranalyse oder Grep für die Suche nach Codebeispielen. Es ist besser, den Rest ausgeschaltet zu lassen und bei Bedarf einzuschalten.

Meine Vorgehensweise ist wie folgt: Ich füge den Server zu opencode.json hinzu, starte OpenCode neu, überprüfe die Liste über opencode mcp list und stelle dann eine Testfrage, in der der Server explizit erwähnt wird. Wenn das Tool nicht aufgerufen wird, achte ich auf opencode mcp debug und die Zeitüberschreitung – ein langsamer Server hat möglicherweise nicht die Zeit, innerhalb der vorgesehenen 30 Sekunden zu antworten.

Worauf Sie achten sollten

Ein paar praktische Punkte. MCP-Server sind vertrauenswürdiger Code: Der lokale Server läuft mit Ihren Rechten auf Ihrem Computer und Sie senden Anforderungsdaten an den Remote-Server. Daher sollte die Installation von Zufallsservern aus dem Internet mit der gleichen Vorsicht erfolgen wie bei jeder Drittanbieter-CLI.

Behalten Sie Schlüssel und Token in Umgebungsvariablen und übertragen Sie sie nicht in das Repository. OpenCode speichert OAuth-Tokens lokal, aber auf einer gemeinsam genutzten Maschine ist dies auch eine Überlegung wert: opencode mcp logout löscht sie, wenn der Zugriff nicht mehr benötigt wird.

Und noch etwas: Schalten Sie nicht alles auf einmal ein. MCP fügt dem Kontext Werkzeuge hinzu, und Kontext ist Geld und Qualität der Reaktion. Zwei oder drei wirklich notwendige Server funktionieren viel besser als zehn verbundene Server für alle Fälle.

Links

https://opencode.ai/docs/mcp-servers/
https://opencode.ai/docs/config/
https://modelcontextprotocol.io/
https://github.com/upstash/context7
https://mcp.sentry.dev
https://mcp.grep.app
https://github.com/anomalyco/opencode

Quellen

https://opencode.ai/docs/mcp-servers/
https://modelcontextprotocol.io/
https://api-docs.deepseek.com/
https://api-docs.deepseek.com/quick_start/agent_integrations/opencode

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.