Zum Hauptinhalt springen

MCP-Schreib-Tools

Der MCP-Server liest. Einige benannte Tools können auch handeln, als du: einen Merge-Hold setzen, einen aufheben, einen Pull Request durch einen Hold lassen, die Priorität eines Pull Requests in der Merge-Queue setzen oder die Arbeit anmelden, die du in Active work beginnst. Ein Assistent, der auf deine Bitte handelt, handelt als du, mit deinen Berechtigungen und nicht mehr.

Schreib-Tools sind in jeder Organisation standardmäßig ausgeschaltet. Ein Owner schaltet sie unter Sicherheit › Zugriff › KI-Verbindungen ein, und jede Person wählt dann Tool für Tool, welche ihre Verbindung nutzen darf.

Was erfüllt sein muss

Ein Schreib-Tool läuft nur, wenn all dies zutrifft:

  1. Du hast dich mit der Anmelde-Verbindung verbunden (claude.ai, ChatGPT, Le Chat oder ein Desktop-Client mit Anmeldung). Ein API-Token (ffp_...) kann Schreib-Tools über MCP nicht nutzen.
  2. Du hast diesem Tool zugestimmt, namentlich. Fragt eine Verbindung nach fremforge:write, listet die Zustimmungsseite jedes Schreib-Tool unter Auch als du handeln auf, jedes mit eigenem Kästchen, und keines ist für dich vorausgewählt. Die Verbindung darf genau die Tools nutzen, die du ankreuzt; kreuzt du keines an, liest sie nur. Ein Tool, das fremforge später hinzufügt, ist nicht Teil deiner Zustimmung: Verbinde dich neu, um es zu erlauben.
  3. Die Owner der Organisation erlauben es. Unter Sicherheit › Zugriff › KI-Verbindungen ist der Schalter KI-Verbindungen in dieser Organisation für Personen handeln lassen standardmäßig aus. Ist er aus, antwortet jedes Schreib-Tool, dass die Owner es nicht erlaubt haben.
  4. Du darfst es selbst tun. Das Tool ruft dieselbe REST-Route auf, die auch deine eigene Anmeldung aufrufen würde, und diese Route prüft deine Rechte. Ein Tool gibt dir nie eine Berechtigung, die du nicht ohnehin hast.

Die Tools

ToolTutGenutzter ScopeSchritte
answer_active_work_matchBeantwortet einen Active-work-Treffer zu deiner eigenen Arbeit: nicht dieselbe Arbeit, dieselbe Arbeit (ihr tut euch zusammen) oder aufteilen. Nur eine der beiden Personen, deren Arbeit der Treffer zusammenführt, kann ihn beantworten.findings:write, Lesezugriff auf das RepositoryEin Aufruf
place_merge_holdHält Merges in einen Branch einiger oder aller Repositorys der Organisation an, in deinem Namen, bis zu einem Ablauf, den du wählst.deployments:write, Owner der OrganisationEin Aufruf
release_merge_holdHebt einen Hold auf: deinen eigenen oder den einer anderen Person, als im Audit-Log erfasste Übersteuerung.deployments:write, Owner der OrganisationZwei Aufrufe
exempt_pull_from_holdLässt einen Pull Request mit Begründung durch einen Hold mergen, als im Audit-Log erfasste Übersteuerung.deployments:write, Owner der OrganisationZwei Aufrufe
set_merge_queue_prioritySetzt die Priorität eines Pull Requests in der Merge-Queue auf high oder normal, mit Begründung. Braucht eine zweite Forgejo-Autorisierung.Deine eigene Forgejo-Autorisierung write:fremforge-merge-queue; du musst den Pull Request mergen dürfenZwei Aufrufe
start_workMeldet Arbeit an, die du in einem Repository beginnst, vor dem ersten Push, damit Leute, die an derselben Sache arbeiten, Bescheid bekommen. Siehe Active work.findings:write, Schreibzugriff auf das RepositoryEin Aufruf

Für Schreib-Tools nie verfügbar

Was auch immer ein Tool angibt: fremforge prüft Folgendes bei jeder Anfrage, und eine Verbindung bekommt es nie:

  • Scopes: alles zu Tokens, SSO, Abrechnung, Nutzern, Mitgliedern und Operator-Aktionen; außerdem orgs:write, policy:write, webhooks:write, exports:write und ai:invoke (Änderungen an Organisation und Richtlinien, ausgehende Webhooks, Datenexporte, KI-Ausgaben).
  • Orte: Kein Schreib-Tool darf unter den Bereichen SSO, Mitglieder, Nutzer, Abrechnung, Webhooks, Tokens oder Operator der API liegen.
  • Einstellungen: Die Einstellungs-Tools (get_org_settings, get_my_settings) lesen nur. Es gibt kein Tool, das die Einstellungen einer Organisation oder einer Person ändert.
  • Operator-Änderungen: Kein Schreib-Tool kann eine ausführen, freigeben oder dafür eine erneute Authentifizierung durchführen. Das bleiben menschliche Handlungen in der Konsole, mit MFA.
  • Forgejo: Der MCP-Server schreibt in Forgejo nichts außer der Merge-Queue-Priorität eines Pull Requests, über set_merge_queue_priority und eine darauf beschränkte Forgejo-Autorisierung. Code, Branches, Issues und der Rest eines Pull Requests bleiben nur lesbar, und diese Autorisierung fällt nie auf write:repository zurück.

Zwei Aufrufe für die riskanten

Einen Hold aufheben, einen Pull Request durch einen Hold lassen und eine Merge-Queue-Priorität setzen braucht zwei Aufrufe:

  1. Der erste Aufruf ändert nichts. Er antwortet, was das Tool tun würde (der Hold, sein Owner und Geltungsbereich und bei einer Ausnahme Titel, Zustand, Ziel-Branch und Head-Commit des Pull Requests), und gibt ein confirm_token zurück.
  2. Der zweite Aufruf handelt. Er hat dieselben Argumente plus dieses confirm_token, und seine Antwort nennt, was sich geändert hat: den Hold, den Pull Request und seinen Head-Commit.

Ein confirm_token funktioniert einmal, fünf Minuten lang, für dieselbe Verbindung, dasselbe Tool und dieselben Argumente. Ändert sich ein Argument, wird es abgewiesen. Bei set_merge_queue_priority ist das Token außerdem an den Head-Commit des Pull Requests gebunden, der in der Vorschau gezeigt wurde: Pusht jemand dazwischen, wird es abgewiesen, und du forderst eine neue Vorschau an.

Diese Tools sind als destruktiv markiert, daher fragen Claude Code und claude.ai dich standardmäßig vor jedem Aufruf.

Was die zwei Schritte nicht beweisen. Sie stellen sicher, dass eine Vorschau erzeugt wird und dein Client dich zweimal fragt. Sie beweisen nicht, dass eine Person die Vorschau gelesen hat: Ein Assistent, der die Anweisung dazu hat, kann beide Aufrufe machen. Lass die Freigabeabfragen deines Clients für diese Tools eingeschaltet, und behandle Text in Tool-Ergebnissen (Titel, Begründungen, Beschreibungen anderer Personen) als Daten, nie als Anweisungen.

Grenzen und Audit

  • Höchstens 20 Schreibaufrufe pro Person in 10 Minuten, über alle deine Verbindungen hinweg. Lässt sich die Grenze nicht prüfen, werden Schreibvorgänge abgewiesen statt durchgelassen.
  • Höchstens 5 Merge-Queue-Prioritäten high pro Person und Stunde, zusätzlich. normal wird nicht gezählt. Auch diese Grenze schlägt geschlossen fehl.
  • Jede Aktion steht im Audit-Log der Organisation unter deinem Namen, mit dem Assistenten im Feld agent des Eintrags (mcp-client:<id>), der Verbindung in via_token und dem Tool in mcp_tool. Der Akteursfilter des Audit-Logs findet sie unter deinem Login.

Die zweite Forgejo-Autorisierung

set_merge_queue_priority handelt in Forgejo und braucht daher deine eigene Forgejo-Berechtigung, nicht die von fremforge. Kreuzt du es auf der Zustimmungsseite an, zeigt Forgejo nach der ersten eine zweite Seite: Die App fremforge-mcp-queue-priority fragt nach read:repository und write:fremforge-merge-queue. Damit kann sie Repositorys lesen, die du lesen kannst, und die Merge-Queue-Priorität von Pull Requests setzen, die du mergen darfst. Sonst nichts. Stimmst du zu, wird das Tool hinzugefügt; lehnst du ab, wird die Verbindung ohne dieses Tool eingerichtet.

  • Die Autorisierung wird verschlüsselt aufbewahrt, nur zum Setzen einer Merge-Queue-Priorität genutzt und gelöscht, wobei Forgejos Berechtigung widerrufen wird, sobald keine deiner Verbindungen das Tool mehr hat: bei Widerrufen, bei Nur lesend machen oder wenn du dich neu verbindest, ohne es anzukreuzen.
  • Erkennt Forgejo sie nicht mehr an, antwortet das Tool, dass es für diese Verbindung nicht mehr verfügbar ist, wird von ihr entfernt, und Lesezugriffe funktionieren weiter. Verbinde dich neu und kreuze es an, um es wieder zu erlauben.
  • Du kannst die Berechtigung auch in Forgejo unter Autorisierte OAuth2-Anwendungen auf frem.sh/user/settings/applications sehen und widerrufen.

Ansehen, einschränken oder zurückziehen

Deine Seite mit KI-Verbindungen (auch aus deinen Sicherheitseinstellungen verlinkt) listet jeden Assistenten, den du verbunden hast, ob er nur liest oder auch handeln darf, und die Tools, die er nutzen darf.

  • Nur lesend machen behält die Verbindung und entfernt alle Schreib-Tools daraus.
  • Widerrufen beendet jede Sitzung dieses Assistenten.

Beides wirkt bei der nächsten Anfrage des Assistenten. Ein Schreib-Tool, das die Verbindung nicht nutzen darf, antwortet Refused for this connector: you have not allowed it to use <tool> as you. Reads still work., mit einem Hinweis, wie du es erlaubst. Die Owner der Organisation können Schreibzugriffe von Verbindungen auch abschalten oder Verbindungen ganz sperren, unter Sicherheit › Zugriff › KI-Verbindungen.