MCP-schrijftools
De MCP-server leest. Een paar benoemde tools kunnen ook handelen, als jou: een merge-hold plaatsen, er een opheffen, één pull request erdoorheen laten, de prioriteit van een pull request in de merge queue instellen, of het werk waaraan je begint aanmelden in Active work. Een assistent die op jouw verzoek handelt, handelt als jou, met jouw rechten en niets meer.
Schrijftools staan in elke organisatie standaard uit. Een eigenaar zet ze aan onder Beveiliging › Toegang › AI-koppelingen, en daarna kiest iedereen per tool welke zijn connector mag gebruiken.
Waaraan moet zijn voldaan
Een schrijftool draait alleen als aan al deze voorwaarden is voldaan:
- Je hebt verbonden met de connector die aanmeldt (claude.ai, ChatGPT, Le Chat, of een desktopclient die aanmeldt). Een API-token (
ffp_...) kan via MCP geen schrijftools gebruiken. - Je hebt voor die tool toestemming gegeven, bij naam. Vraagt een connector om
fremforge:write, dan toont de toestemmingspagina elke schrijftool onder Ook als jou handelen, elk met een eigen vakje, en er is er geen voor je aangevinkt. De connector mag precies de tools gebruiken die je aanvinkt; vink je er geen aan, dan leest hij alleen. Een tool die later aan fremforge wordt toegevoegd, valt niet onder je toestemming: verbind opnieuw om hem toe te staan. - De eigenaren van de organisatie staan het toe. Onder Beveiliging › Toegang › AI-koppelingen staat de schakelaar AI-koppelingen laten handelen voor mensen in deze organisatie standaard uit. Staat hij uit, dan antwoordt elke schrijftool dat de eigenaren het niet hebben toegestaan.
- Je mag het zelf doen. De tool roept dezelfde REST-route aan als je eigen aanmelding zou doen, en die route controleert je rechten. Een tool geeft je nooit een recht dat je nog niet hebt.
De tools
| Tool | Doet | Gebruikte scope | Stappen |
|---|---|---|---|
answer_active_work_match | Beantwoordt een overeenkomst in Active work over je eigen werk: niet hetzelfde werk, hetzelfde werk (jullie voegen samen), of verdelen. Alleen een van de twee mensen van wie het werk in de overeenkomst zit, kan antwoorden. | findings:write, leestoegang tot de repository | Eén aanroep |
place_merge_hold | Houdt merges tegen naar een branch van sommige of alle repository’s van de organisatie, op jouw naam, tot een vervaldatum die je kiest. | deployments:write, eigenaar van de organisatie | Eén aanroep |
release_merge_hold | Heft een hold op: die van jou, of die van iemand anders als geauditeerde override. | deployments:write, eigenaar van de organisatie | Twee aanroepen |
exempt_pull_from_hold | Laat één pull request met een reden door een hold heen mergen, als geauditeerde override. | deployments:write, eigenaar van de organisatie | Twee aanroepen |
set_merge_queue_priority | Zet de prioriteit van een pull request in de merge queue op high of normal, met een reden. Vereist een tweede Forgejo-autorisatie. | Je eigen Forgejo-autorisatie write:fremforge-merge-queue; je moet de pull request mogen mergen | Twee aanroepen |
start_work | Meldt werk aan waaraan je in een repository begint, vóór de eerste push, zodat mensen die met hetzelfde bezig zijn het horen. Zie Active work. | findings:write, schrijftoegang tot de repository | Eén aanroep |
Nooit beschikbaar voor schrijftools
Wat een tool ook declareert, fremforge controleert dit bij elk verzoek en een connector krijgt het nooit:
- Scopes: alles voor tokens, SSO, facturatie, gebruikers, leden en operatoracties; en
orgs:write,policy:write,webhooks:write,exports:writeenai:invoke(wijzigingen aan organisatie en beleid, uitgaande webhooks, gegevensexports, AI-uitgaven). - Plekken: geen enkele schrijftool mag onder de delen van de API voor SSO, leden, gebruikers, facturatie, webhooks, tokens of operators vallen.
- Instellingen: de instellingstools (
get_org_settings,get_my_settings) lezen alleen. Er is geen tool die de instellingen van een organisatie of een persoon wijzigt. - Operatorwijzigingen: geen enkele schrijftool kan er een uitvoeren, goedkeuren of een step-up ervoor doen. Dat blijven menselijke handelingen in de console, met MFA.
- Forgejo: de MCP-server schrijft niets in Forgejo behalve de prioriteit van een pull request in de merge queue, via
set_merge_queue_priorityen een Forgejo-autorisatie die daartoe beperkt is. Code, branches, issues en de rest van een pull request blijven alleen-lezen, en die autorisatie valt nooit terug opwrite:repository.
Twee aanroepen voor de risicovolle
Een hold opheffen, een pull request erdoorheen laten en een prioriteit in de merge queue instellen, kosten twee aanroepen:
- De eerste aanroep verandert niets. Hij antwoordt wat de tool zou doen (de hold, de eigenaar en het bereik ervan, en bij een vrijstelling de titel, status, basisbranch en head-commit van de pull request) en geeft een
confirm_tokenterug. - De tweede aanroep handelt. Die heeft dezelfde argumenten plus dat
confirm_token, en het antwoord noemt wat er is veranderd: de hold, de pull request en de head-commit ervan.
Een confirm_token werkt één keer, vijf minuten lang, voor dezelfde connector, tool en argumenten. Verander een argument en het wordt geweigerd. Bij set_merge_queue_priority is het token ook gebonden aan de head-commit van de pull request die de voorvertoning toonde: pusht iemand daartussen, dan wordt het geweigerd en vraag je een nieuwe voorvertoning.
Deze tools zijn gemarkeerd als destructief, dus Claude Code en claude.ai vragen je standaard voor elke aanroep om bevestiging.
Limieten en audit
- Hoogstens 20 schrijfaanroepen per persoon per 10 minuten, over al je connectoren samen. Kan de limiet niet worden gecontroleerd, dan worden schrijfacties geweigerd in plaats van doorgelaten.
- Hoogstens 5
high-prioriteiten in de merge queue per persoon per uur, daarbovenop.normaltelt niet mee. Ook deze limiet weigert bij twijfel. - Elke actie staat op jouw naam in het auditlog van de organisatie, met de assistent in het veld
agentvan de regel (mcp-client:<id>), de connector invia_tokenen de tool inmcp_tool. Het actorfilter van het auditlog vindt haar onder je login.
De tweede Forgejo-autorisatie
set_merge_queue_priority handelt in Forgejo, dus het heeft je eigen Forgejo-recht nodig, niet dat van fremforge. Vink je de tool aan op de toestemmingspagina, dan toont Forgejo na het eerste scherm een tweede scherm: de app fremforge-mcp-queue-priority vraagt om read:repository en write:fremforge-merge-queue, waarmee hij repository’s kan lezen die jij kunt lezen en de prioriteit in de merge queue kan instellen op pull requests die jij mag mergen. Verder niets. Keur je het goed, dan wordt de tool toegevoegd; wijs je het af, dan wordt de connector zonder die tool ingericht.
- De autorisatie wordt versleuteld bewaard, alleen gebruikt om een prioriteit in de merge queue in te stellen, en verwijderd, met intrekking van de toekenning in Forgejo, zodra geen enkele connector van jou de tool nog heeft: bij Intrekken, bij Alleen-lezen maken, of wanneer je opnieuw verbindt zonder hem aan te vinken.
- Honoreert Forgejo haar niet meer, dan antwoordt de tool dat hij voor die connector niet meer beschikbaar is, wordt hij eraf gehaald, en blijven leesacties werken. Verbind opnieuw en vink hem aan om hem weer toe te staan.
- Je kunt de toekenning ook in Forgejo zien en intrekken, onder Geautoriseerde OAuth2 applicaties op
frem.sh/user/settings/applications.
Bekijken, beperken of intrekken
De pagina met je AI-koppelingen (ook gelinkt vanuit je beveiligingsinstellingen) toont elke assistent die je hebt verbonden, of hij alleen leest of ook mag handelen, en welke tools hij mag gebruiken.
- Alleen-lezen maken houdt de verbinding en haalt alle schrijftools eraf.
- Intrekken beëindigt elke sessie van die assistent.
Beide werken bij het volgende verzoek van de assistent. Een schrijftool die de connector niet mag gebruiken, antwoordt met Refused for this connector: you have not allowed it to use <tool> as you. Reads still work., plus hoe je het toestaat. De eigenaren van de organisatie kunnen schrijfacties via connectoren ook uitzetten, of connectoren helemaal blokkeren, onder Beveiliging › Toegang › AI-koppelingen.