Impõe verificações de política no momento do commit para escritas de agentes de IA com decisões ALLOW, DENY ou STEP_UP e um log de auditoria à prova de adulteração.
Também conhecido como AvenueDAdmin/pywrit, writ-mcp
- Stars
- 2
- Ferramentas
- 15
- Downloads, 30 dias
- —
- Versão mais recente
- 0.1.2
- Último commit
- 14 de nov. de 2026
- Licença
- MIT
O que é o MCP Writ?
Writ é um MCP server. Impõe verificações de política no momento do commit para escritas de agentes de IA com decisões ALLOW, DENY ou STEP_UP e um log de auditoria à prova de adulteração. Ele expõe 15 ferramentas, como writ_check, writ_verify_token, writ_grant.
Resumo gerado a partir do README do projeto
Sobre o MCP server de Writ
O Writ oferece controle no ponto de ação para agentes de IA, impondo verificações de política antes que qualquer operação de escrita consequente ocorra. Este MCP server utiliza um transporte stdio para retornar decisões ALLOW, DENY ou STEP_UP, garantindo que os agentes operem dentro de limites definidos. Ele foi projetado para desenvolvedores que utilizam clientes compatíveis com MCP, como Claude Desktop ou Claude Code, exigindo uma WRIT_API_KEY para funcionalidade completa.
O sistema implementa um loop de verificação antes da escrita (check-before-write), onde o agente chama writ_check para receber um authToken de 90 segundos. Esse token é então validado via writ_verify_token imediatamente antes da ação ser executada. Para maior segurança, a decisão STEP_UP exige que um patrocinador humano aprove a solicitação através do writ_grant. Cada decisão gera um recibo de auditoria à prova de adulteração acessível via writ_receipts, fornecendo um histórico claro das ações e autorizações do agente.
O que você pode fazer com ele
- 1Verificar permissões de escrita do agentePeça ao agente para verificar se ele tem permissão para realizar uma ação de escrita específica antes de prosseguir.
- 2Proteger operações sensíveis com tokensUse um token com tempo limitado para garantir que uma operação de escrita autorizada ainda seja válida no momento da execução.
- 3Exigir intervenção humana para tarefas de riscoAcione um processo de aprovação manual quando um agente tentar uma ação que exija uma decisão de step-up.
- 4Auditar o histórico de decisões do agenteRecupere um rastro detalhado de todas as decisões de autorização e resultados anteriores.
Escrito a partir do README do projeto. Cada caso de uso é verificado com uma citação dele.
Como instalar o MCP Writ
Formatos verificados em 10 nov 2026Adicionar ao CursorAdicionar ao GooseInstalar o MCP Writ no Claude Code
$ claude mcp add --env 'WRIT_API_KEY=<YOUR_WRIT_API_KEY>' --env 'WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN>' writ -- uvx writ-mcpInstalar o MCP Writ no Cursor
~/.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>"
}
}
}
}Instalar o MCP Writ no VS Code
.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>"
}
}
}
}Instalar o MCP Writ no VS Code CLI
$ code --add-mcp '{"name":"writ","type":"stdio","command":"uvx","args":["writ-mcp"],"env":{"WRIT_API_KEY":"<YOUR_WRIT_API_KEY>","WRIT_SPONSOR_TOKEN":"<YOUR_WRIT_SPONSOR_TOKEN>"}}'Instalar o MCP Writ no Claude Desktop
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>"
}
}
}
}Instalar o MCP Writ no Codex
$ codex mcp add writ --env 'WRIT_API_KEY=<YOUR_WRIT_API_KEY>' --env 'WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN>' -- uvx writ-mcpInstalar o MCP Writ no Codex config.toml
~/.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>"
Instalar o MCP Writ no Gemini CLI
$ gemini mcp add -s user -e 'WRIT_API_KEY=<YOUR_WRIT_API_KEY>' -e 'WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN>' writ uvx -- writ-mcpInstalar o MCP Writ no Gemini settings.json
~/.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>"
}
}
}
}Ferramentas do MCP Writ 15
Detectadas a partir do READMEwrit_checkwrit_verify_tokenwrit_grantwrit_receiptswrit_policywrit_sandboxwrit_github_installationswrit_github_set_thresholdwrit_github_toggle_pr_commentswrit_manifestswrit_explain_receiptwrit_tenant_notify
| writ_check | — | |
| writ_verify_token | — | |
| writ_grant | — | |
| writ_receipts | — | |
| writ_policy | — | |
| writ_sandbox | — | |
| writ_github_installations | — | |
| writ_github_set_threshold | — | |
| writ_github_toggle_pr_comments | — | |
| writ_manifests | — | |
| writ_explain_receipt | — | |
| writ_tenant_notify | — |
Mostrar todas as 15 ferramentasMostrar menos ferramentas
writ_principalswrit_verbswrit_keys
| writ_principals | — | |
| writ_verbs | — | |
| writ_keys | — |
Configuração
WRIT_API_KEYObrigatórioSecretoWrit API key (get one free at https://withwrit.com)
WRIT_SPONSOR_TOKENSecretoWrit sponsor token, only required for sponsor tools (grant, revoke, reinstate)
WRIT_BASE_URLOptional custom Writ API base URL (default: https://api.withwrit.com)
| Nome | Descrição | Tipo |
|---|---|---|
| WRIT_API_KEY | Writ API key (get one free at https://withwrit.com) | ObrigatórioSecreto |
| WRIT_SPONSOR_TOKEN | Writ sponsor token, only required for sponsor tools (grant, revoke, reinstate) | Secreto |
| WRIT_BASE_URL | Optional custom Writ API base URL (default: https://api.withwrit.com) |
Verificações automatizadas
Executado em 12 de nov. de 2026Relatório completo →Passou em nossas verificações automatizadas. Isso não é uma auditoria de segurança: leia o código e dê ao servidor o acesso mais restrito de que ele precisa. Como as verificações funcionam
- Repositório de origem vinculado e acessívelPassou
- Licença de código aberto (OSI)Passou
- Commit ou release no último anoPassou
- Nome do pacote não é próximo a um pacote popularPassou
- O endpoint remoto usa HTTPSNão verificado
- Ferramentas destrutivas estão rotuladasPassou
- Sem instruções ocultas para o modeloPassou
- Nenhum aviso crítico no pacote ou em suas dependênciasPassou
README
Ver no GitHubwrit-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.
Tools
| Tool | Who | What |
|---|---|---|
writ_check |
agent | Decision + 90s purpose-bound token |
writ_verify_token |
agent | Point-of-action token verification |
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.
Perguntas sobre o MCP Writ
Como adiciono o MCP Writ ao Claude Code?
Execute claude mcp add --env 'WRIT_API_KEY=<YOUR_WRIT_API_KEY>' --env 'WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN>' writ -- uvx writ-mcp no seu terminal. Adicione --scope user para torná-lo disponível em todos os projetos.
Como adiciono o MCP Writ ao Cursor?
Abra ~/.cursor/mcp.json e adicione o servidor em mcpServers, usando a configuração do Cursor mostrada na seção de instalação acima.
Quais ferramentas o MCP Writ oferece?
Ele expõe 15 ferramentas, incluindo writ_check, writ_verify_token, writ_grant, writ_receipts, writ_policy.
Como funciona o loop de verificação antes da escrita?
O agente chama writ_check para receber uma decisão ALLOW, DENY ou STEP_UP; um ALLOW fornece um authToken de 90 segundos que é então verificado via writ_verify_token antes da execução.
Posso testar o Writ sem uma chave de API?
Sim, você pode usar a ferramenta writ_sandbox para uma demonstração gratuita de 90 segundos sem precisar de uma chave.
O que acontece se uma decisão STEP_UP for retornada?
Um patrocinador humano deve aprovar a ação via writ_grant ou pelo dashboard antes que o agente possa prosseguir.