
Inhaltsverzeichnis
Codex kann bei Bedarf lokale Tools aufrufen. Manchmal kann es aber sinnvoll sein, dass Codex auch andere Informationen leicht erreichen kann. Für meine privaten Projekte hoste ich einen Forgejo Server. So kam mir die Idee, dass ich doch mal ausprobieren könnte, ob man nicht Codex (genauso wie VS Code) über das Model Context Protocol (MCP) beibringen kann, auf einen von mir betriebenen MCP Server zuzugreifen. Und siehe da, es gibt experimentellen MCP Tool Support für Codex.
Info: Der Blog-Post beschreibt, wie ich Codex MCP Tools aufrufen lasse. Es ist auch möglich, dass man Codex selbst als MCP Server startet, damit andere Agenten Codex fernsteuern können.
Offizielle Dokumentation:
https://developers.openai.com/codex/mcp/
Unterstützte MCP-Funktionen
Lokale MCP Server können entweder über das STDIO Protokoll eingebunden werden oder per URL.
- STDIO-Server (Server, die über einen Befehl auf deinem Computer gestartet werden können)
- Umgebungsvariablen
- Streamable HTTP-Server (Server, die über eine URL erreichbar sind)
- Bearer-Token-Authentifizierung
- OAuth-Authentifizierung (erfordert experimental_use_rmcp_client = true in config.toml)
Kommandozeile
Die Konfiguration der MCP Server wird in der Datei ~/.codex/config.toml
hinterlegt.
Man kann aber auch die Kommandozeile für die Konfiguration nutzen. Dazu gibt es mehrere MCP Sub-Kommandos.
❯ codex mcp --help
[experimental] Run Codex as an MCP server and manage MCP servers
Usage: codex mcp [OPTIONS] <COMMAND>
Commands:
list [experimental] List configured MCP servers
get [experimental] Show details for a configured MCP server
add [experimental] Add a global MCP server entry
remove [experimental] Remove a global MCP server entry
login [experimental] Authenticate with a configured MCP server via OAuth. Requires experimental_use_rmcp_client = true in config.toml
logout [experimental] Remove stored OAuth credentials for a server. Requires experimental_use_rmcp_client = true in config.toml
help Print this message or the help of the given subcommand(s)
MCP Server registrieren
Meinen lokal auf meinem Entwicklungsrechner installierten Forgejo MCP Server habe ich direkt über STDIO integriert. Der Server braucht nur einen Personal Access Key zur Authentifizierung. Codex erlaubt es, Umgebungsvariablen in der Konfiguration zu definieren. Der Forgejo MCP Server kann entweder über die Option --token den Token erhalten oder alternativ über die Umgebungsvariable FORGEJO_ACCESS_TOKEN. Ich habe mich für die zweite Variante entschieden.
Die Registrierung sieht dann so aus:
codex mcp add forgejo --env FORGEJO_ACCESS_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxx" forgejo-mcp ---url https://git.muench.dev
Prüfen kann man das dann einfach, indem man den mcp list Befehl aufruft.
Bei mir sieht das dann so aus:
❯ codex mcp list
Name Command Args Env Cwd Status Auth
forgejo forgejo-mcp ---url https://git.muench.dev FORGEJO_ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - enabled Unsupported
Man kann sich die Konfiguration auch über mcp get mit dem Namen des registrierten MCP Servers anzeigen lassen:
❯ codex mcp get forgejo
forgejo
enabled: true
transport: stdio
command: forgejo-mcp
args: ---url https://git.muench.dev
cwd: -
env: FORGEJO_ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
remove: codex mcp remove forgejo
Leider habe ich bisher keine Möglichkeit gefunden, die Tools hinter dem Forgejo Server über Codex aufzulisten oder auch anzuzeigen bzw. einzuschränken.
Der MCP Server kommt mit einigen Tools daher. Da ich über VS Code ebenfalls den MCP Server nutze, weiß ich, wie viele und welche Tools der Forgejo Server bereitstellt. Da wäre es sicherlich gut, wenn man Codex das eine oder andere Tool "abschalten" könnte.
Der Screenshot aus meinem IntelliJ zeigt, was es alles für Tools gibt:
Der MCP Server in Aktion
Zum Testen habe ich ein Feature in einem privaten Projekt ausgesucht. Das Feature ist in Forgejo als Issue hinterlegt.
Mein Test sieht nun vor, dass ich Codex nur sage, dass es das Feature mit der Nummer 230 bearbeiten soll.
Und mit einem einfachen Implement the forgejo issue "Phrasenliste #230"
geht es los. Ich habe bewusst keine weiteren Infos angeben da der Agent ja über das MCP-Tool direkt mit Forgejo sprechen soll.
Im Screenshot sieht man nun, dass Codex sich die Infos selbst über das Tool geholt hat:
Das Ergebnis
Und so sieht das Ergebnis in der Anwendung aus.
Hier der Changeset der angepassten Dateien:
Es wurde in der Backend-Applikation die Datenbank über ein Migrationsscript erweitert und ebenso die REST API.
Die UI wurde um ein Grid mit Formular erweitert.
In der Maske des aktiven Livetickers wurde eine Box für die Phrasen hinzugefügt.
Das neue Grid:
Das neue Formular:
Phrasen im aktiven Liveticker:
Alle Funktionen haben direkt einwandfrei funktioniert.
Danach habe ich den Agenten angewiesen, einen Pull Request anzulegen, was dann wiederum über den MCP Server passierte.
Das Ergebnis kann sich sehen lassen. Auf den ersten Versuch haben sogar die Unit-Tests gepasst.
Und hier das Ergebnis des ganzen Tests:
Fazit
Die experimentelle MCP-Unterstützung in Codex eröffnet spannende Möglichkeiten. Wie das Beispiel zeigt, kann der Agent nun direkt auf Informationen aus meinem selbst gehosteten Forgejo-Server zugreifen, um Issues zu verstehen und darauf basierend Code-Änderungen vorzunehmen – bis hin zum Erstellen eines Pull Requests. Das bringt die Automatisierung im Entwicklungsprozess nochmal auf ein neues Level und gibt mir gleichzeitig die Kontrolle über die angebundenen Systeme. Es gibt sicherlich auch einiges zu beachten bei der Absicherung von MCP-Servern. Für mich war das allerdings ein toller Test und ich hoffe, dass ihr jetzt auch neue Idee habt.