Erzwingt Policy-Checks für Schreibvorgänge von AI Agents mit ALLOW-, DENY- oder STEP_UP-Entscheidungen und einem manipulationssicheren Audit-Log.
Auch bekannt als withwrit/pywrit, writ-mcp
- Stars
- 2
- Tools
- 17
- Downloads, 30 Tage
- —
- Neueste Version
- 0.2.2
- Letzter Commit
- 13. Nov. 2026
- Lizenz
- MIT
Was ist Writ MCP?
Writ ist ein MCP server. Erzwingt Policy-Checks für Schreibvorgänge von AI Agents mit ALLOW-, DENY- oder STEP_UP-Entscheidungen und einem manipulationssicheren Audit-Log. Er stellt 17 Tools bereit, etwa writ_check, writ_verify_token, writ_lease.
Zusammenfassung generiert aus dem README des Projekts
Über Writ MCP server
Dieser Server ermöglicht es, weitreichende Aktionen von AI Agents durch ein Policy Gate zu kontrollieren. Er bietet einen Mechanismus, mit dem Agents vor Schreibvorgängen eine Erlaubnis anfordern und Entscheidungen wie ALLOW, DENY oder STEP_UP erhalten können. Dieser Prozess stellt sicher, dass jede Aktion durch einen manipulationssicheren Audit-Beleg für Sicherheit und Rechenschaftspflicht abgesichert ist.
Entwickler können dies über einen stdio-Transport in Claude Desktop, Claude Code oder generische MCP-Clients integrieren. Die Einrichtung des Servers erfordert einen WRIT_API_KEY und optional einen WRIT_SPONSOR_TOKEN, um Grants oder Revocations zu verwalten. Der Workflow nutzt spezifische Tools wie writ_check, um ein 90-sekündiges authToken zu erhalten, und writ_execute, um die geschützte Anfrage mittels eines Single-Use-Lease auszuführen.
Über einfache Berechtigungsprüfungen hinaus enthält der Server administrative Tools zur Verwaltung von GitHub App-Installationen, zum Setzen von Schwellenwerten und zum Einsehen von Tenant-Principals. Er bietet einen Sandbox-Modus zum Testen ohne API-Key, sodass jeder das writ_check Tool mit einem Demo-Write-Verb ausprobieren kann.
Was du damit machen kannst
- 1Gated Write-Berechtigungen erzwingenFordere den Agent auf, eine Berechtigung zu prüfen, bevor er eine sensible Datei oder einen Datenbankeintrag modifiziert.
- 2Menschliche Freigabe für riskante Aufgaben anfordernInstruiere den Agent, eine manuelle Überprüfung auszulösen, wenn er auf eine STEP_UP-Entscheidung stößt.
- 3Entscheidungshistorie der Agents auditierenFordere eine Zusammenfassung aller bisherigen Autorisierungsentscheidungen und deren Ergebnisse an.
- 4Gated API-Requests sicher ausführenLasse den Agent ein Autorisierungstoken in einen Single-Use-Lease umwandeln, um eine spezifische Upstream-Anfrage durchzuführen.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du Writ MCP
Formate geprüft am 10. Nov. 2026Writ MCP in Claude Code installieren
$ claude mcp add --env WRIT_API_KEY=<YOUR_WRIT_API_KEY> --env WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN> writ -- uvx writ-mcpWrit MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"writ": {
"command": "uvx",
"args": [
"writ-mcp"
],
"env": {
"WRIT_API_KEY": "<YOUR_WRIT_API_KEY>",
"WRIT_SPONSOR_TOKEN": "<YOUR_WRIT_SPONSOR_TOKEN>"
}
}
}
}Writ MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"writ": {
"type": "stdio",
"command": "uvx",
"args": [
"writ-mcp"
],
"env": {
"WRIT_API_KEY": "<YOUR_WRIT_API_KEY>",
"WRIT_SPONSOR_TOKEN": "<YOUR_WRIT_SPONSOR_TOKEN>"
}
}
}
}Writ MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"writ": {
"command": "uvx",
"args": [
"writ-mcp"
],
"env": {
"WRIT_API_KEY": "<YOUR_WRIT_API_KEY>",
"WRIT_SPONSOR_TOKEN": "<YOUR_WRIT_SPONSOR_TOKEN>"
}
}
}
}Writ MCP in Codex installieren
~/.codex/config.toml
[mcp_servers.writ] command = "uvx" args = ["writ-mcp"] [mcp_servers.writ.env] WRIT_API_KEY = "<YOUR_WRIT_API_KEY>" WRIT_SPONSOR_TOKEN = "<YOUR_WRIT_SPONSOR_TOKEN>"
Writ MCP in Gemini CLI installieren
~/.gemini/settings.json
{
"mcpServers": {
"writ": {
"command": "uvx",
"args": [
"writ-mcp"
],
"env": {
"WRIT_API_KEY": "<YOUR_WRIT_API_KEY>",
"WRIT_SPONSOR_TOKEN": "<YOUR_WRIT_SPONSOR_TOKEN>"
}
}
}
}Writ MCP tools 17
Erkannt aus dem READMEwrit_checkwrit_verify_tokenwrit_leasewrit_executewrit_grantwrit_receiptswrit_policywrit_sandboxwrit_github_installationswrit_github_set_thresholdwrit_github_toggle_pr_commentswrit_manifests
| writ_check | — | |
| writ_verify_token | — | |
| writ_lease | — | |
| writ_execute | — | |
| writ_grant | — | |
| writ_receipts | — | |
| writ_policy | — | |
| writ_sandbox | — | |
| writ_github_installations | — | |
| writ_github_set_threshold | — | |
| writ_github_toggle_pr_comments | — | |
| writ_manifests | — |
Alle 17 Tools anzeigenWeniger Tools anzeigen
writ_explain_receiptwrit_tenant_notifywrit_principalswrit_verbswrit_keys
| writ_explain_receipt | — | |
| writ_tenant_notify | — | |
| writ_principals | — | |
| writ_verbs | — | |
| writ_keys | — |
Konfiguration
WRIT_API_KEYErforderlichSecretWrit API key (get one free at https://withwrit.com)
WRIT_SPONSOR_TOKENSecretWrit sponsor token, only required for sponsor tools (grant, revoke, reinstate)
WRIT_BASE_URLOptional custom Writ API base URL (default: https://api.withwrit.com)
| Name | Beschreibung | Typ |
|---|---|---|
| WRIT_API_KEY | Writ API key (get one free at https://withwrit.com) | ErforderlichSecret |
| WRIT_SPONSOR_TOKEN | Writ sponsor token, only required for sponsor tools (grant, revoke, reinstate) | Secret |
| WRIT_BASE_URL | Optional custom Writ API base URL (default: https://api.withwrit.com) |
Automatisierte Checks
Geluften am 13. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarBestanden
- Open Source Lizenz (OSI)Bestanden
- Commit oder Release im letzten JahrBestanden
- Package-Name ähnelt keinem populären PackageBestanden
- Remote Endpoint nutzt HTTPSNicht geprüft
- Destruktive Tools sind markiertBestanden
- Keine versteckten Anweisungen an das ModellBestanden
- Kein kritischer Hinweis im Paket oder seinen AbhängigkeitenBestanden
README
Auf GitHub ansehenwrit-mcp
The Writ gate as an MCP server. Give any MCP-compatible
agent point-of-action control: the agent calls Writ before a consequential
write, gets back ALLOW, DENY, or STEP_UP, and every outcome creates an
audit receipt.
Install
pip install writ-mcp
Requires Python 3.9+. Installs the writ-mcp command (stdio transport).
Configure
export WRIT_API_KEY="writ_..." # required; get one free: POST /v1/keys with an email
export WRIT_SPONSOR_TOKEN="..." # only for sponsor tools (grant, revoke, reinstate)
# export WRIT_BASE_URL="..." # default: https://api.withwrit.com
Add to your agent
Claude Code:
claude mcp add writ --env WRIT_API_KEY="$WRIT_API_KEY" -- writ-mcp
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"writ": {
"command": "writ-mcp",
"env": { "WRIT_API_KEY": "writ_..." }
}
}
}
Any MCP client (generic stdio config):
{
"command": "writ-mcp",
"env": {
"WRIT_API_KEY": "writ_...",
"WRIT_SPONSOR_TOKEN": "writ_sp_..."
}
}
Hermes (NousResearch/hermes-agent) catalog entry — once published, this
package is installable from the optional-mcps catalog:
hermes mcp install writ
The check-before-write loop
The tool descriptions teach the agent this flow, but the short version:
writ_check(sponsor_id, agent_id, verb, target, purpose)— before the write.ALLOW→ you get a 90-secondauthTokenbound to that exact write.writ_verify_token(auth_token, verb, target, purpose)— immediately before executing, to prove the authorization still matches what you're doing.DENY→ do not proceed.STEP_UP→ a human sponsor approves (viawrit_grantor the dashboard), then check again.writ_lease(auth_token, system_id, method, path, body)- convert the ALLOW token into a single-use lease bound to the exact upstream request.writ_execute(lease_id, method, path, body)- run the gated write with the same method/path/body; the gate forwards it with the vaulted credential and returns the upstream response verbatim.
Tools
| Tool | Who | What |
|---|---|---|
writ_check |
agent | Decision + 90s purpose-bound token |
writ_verify_token |
agent | Point-of-action token verification |
writ_lease |
agent | Convert an ALLOW token into a single-use gated-execution lease |
writ_execute |
agent | Run one gated upstream request with a lease or ALLOW token |
writ_grant |
sponsor | Approve a STEP_UP (one-time grant) |
writ_revoke / writ_reinstate |
sponsor | Kill switch on/off for a principal |
writ_receipts |
agent | Audit trail of decisions |
writ_policy |
agent | Tenant verb policy |
writ_sandbox |
anyone | Free 90-second demo grant, no key needed |
writ_github_installations |
admin | List connected GitHub App installations |
writ_github_set_threshold |
admin | Set the check-run fail threshold per install |
writ_github_toggle_pr_comments |
admin | Enable/disable the PR-comment bot |
writ_manifests |
agent | List repos with risk profiles or fetch one manifest |
writ_explain_receipt |
agent | Explain a receipt in plain language |
writ_tenant_notify |
admin | Get or update step-up notification settings |
writ_principals |
admin | List the tenant's principals |
writ_verbs |
admin | List the tenant's verb vocabulary |
writ_keys |
admin | List API key metadata |
Try it with no key: writ_sandbox → writ_check with verb="demo_write".
Source
Public repo: withwrit/pywrit (mcp/
directory). License: MIT.
Directory listings: Glama ·
MCP Registry io.github.withwrit/writ.
Writ MCP Fragen
Wie füge ich Writ MCP zu Claude Code hinzu?
Führe claude mcp add --env WRIT_API_KEY=<YOUR_WRIT_API_KEY> --env WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN> writ -- uvx writ-mcp in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich Writ MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Welche Tools bietet Writ MCP?
Er stellt 17 Tools bereit, darunter writ_check, writ_verify_token, writ_lease, writ_execute, writ_grant.
Was sind die möglichen Ergebnisse eines Write-Checks?
Der Agent erhält eine Entscheidung wie ALLOW, DENY oder STEP_UP.
Wie kann ich Writ ohne API-Key testen?
Du kannst das writ_sandbox Tool für eine kostenlose 90-sekündige Demo-Session nutzen.
Was passiert bei einer STEP_UP-Entscheidung?
Ein menschlicher Sponsor muss die Aktion über writ_grant oder das Dashboard genehmigen, bevor der Agent fortfahren kann.