Writ MCP란?
Writ은(는) MCP server입니다. AI agent의 쓰기 작업에 대해 ALLOW, DENY, STEP_UP 결정 및 변조 방지 감사 로그를 통해 정책 검사를 수행합니다. 17개 도구를 제공합니다. 예: writ_check, writ_verify_token, writ_lease.
프로젝트 README에서 생성된 요약
Writ MCP server 정보
이 MCP server는 정책 게이트를 통해 AI agent의 중요한 작업을 제어할 수 있게 합니다. agent가 쓰기 작업을 수행하기 전에 권한을 요청하고 ALLOW, DENY 또는 STEP_UP과 같은 결정을 받을 수 있는 메커니즘을 제공합니다. 이 프로세스는 모든 작업이 보안과 책임 추적을 위해 변조 방지 감사 영수증을 기반으로 수행되도록 보장합니다.
개발자는 stdio 전송 방식을 사용하여 이를 Claude Desktop, Claude Code 또는 일반 MCP client에 통합할 수 있습니다. server를 설정하려면 WRIT_API_KEY가 필요하며, 권한 부여 또는 취소를 관리하기 위해 선택적으로 WRIT_SPONSOR_TOKEN을 사용할 수 있습니다. 워크플로우는 90초 유효한 authToken을 얻기 위한 writ_check 및 단일 사용 리스를 사용하여 게이트가 적용된 요청을 수행하는 writ_execute와 같은 특정 도구를 사용합니다.
단순한 권한 검사를 넘어, 이 server에는 GitHub App 설치 관리, 임계값 설정 및 테넌트 principal 조회를 위한 관리 도구가 포함되어 있습니다. API 키 없이 테스트할 수 있는 sandbox 모드를 제공하여 누구나 데모 쓰기 동사를 통해 writ_check 도구를 시도해 볼 수 있습니다.
활용 사례
- 1게이트가 적용된 쓰기 권한 강제민감한 파일이나 데이터베이스 항목을 수정하기 전에 agent에게 권한을 확인하도록 요청합니다.
- 2위험한 작업에 대한 human 승인 요구agent가 STEP_UP 결정을 만났을 때 수동 검토를 트리거하도록 지시합니다.
- 3agent 결정 이력 감사이전의 모든 권한 부여 결정 및 결과에 대한 요약을 요청합니다.
- 4게이트가 적용된 API 요청의 안전한 실행agent가 특정 업스트림 요청을 수행할 수 있도록 권한 부여 토큰을 단일 사용 리스로 변환하도록 합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Writ MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 Writ MCP 설치
$ claude mcp add --env WRIT_API_KEY=<YOUR_WRIT_API_KEY> --env WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN> writ -- uvx writ-mcpCursor에 Writ MCP 설치
~/.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>"
}
}
}
}VS Code에 Writ MCP 설치
.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>"
}
}
}
}Claude Desktop에 Writ MCP 설치
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>"
}
}
}
}Codex에 Writ MCP 설치
~/.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>"
Gemini CLI에 Writ MCP 설치
~/.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 도구 17
README에서 감지됨writ_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 | — |
도구 17개 모두 보기도구 수 줄이기
writ_explain_receiptwrit_tenant_notifywrit_principalswrit_verbswrit_keys
| writ_explain_receipt | — | |
| writ_tenant_notify | — | |
| writ_principals | — | |
| writ_verbs | — | |
| writ_keys | — |
구성
WRIT_API_KEY필수비밀Writ API key (get one free at https://withwrit.com)
WRIT_SPONSOR_TOKEN비밀Writ sponsor token, only required for sponsor tools (grant, revoke, reinstate)
WRIT_BASE_URLOptional custom Writ API base URL (default: https://api.withwrit.com)
| 이름 | 설명 | 유형 |
|---|---|---|
| WRIT_API_KEY | Writ API key (get one free at https://withwrit.com) | 필수비밀 |
| WRIT_SPONSOR_TOKEN | Writ sponsor token, only required for sponsor tools (grant, revoke, reinstate) | 비밀 |
| WRIT_BASE_URL | Optional custom Writ API base URL (default: https://api.withwrit.com) |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨통과
- 모델에 대한 숨겨진 지침 없음통과
- 패키지와 의존성에 심각한 보안 권고 없음통과
README
GitHub에서 보기writ-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 질문
Writ MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env WRIT_API_KEY=<YOUR_WRIT_API_KEY> --env WRIT_SPONSOR_TOKEN=<YOUR_WRIT_SPONSOR_TOKEN> writ -- uvx writ-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Writ MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Writ MCP는 어떤 도구를 제공하나요?
17개 도구를 제공합니다. 예: writ_check, writ_verify_token, writ_lease, writ_execute, writ_grant.
쓰기 검사의 가능한 결과는 무엇인가요?
agent는 ALLOW, DENY 또는 STEP_UP 결정을 받습니다.
API 키 없이 Writ를 테스트할 수 있나요?
writ_sandbox 도구를 사용하면 90초 동안 무료 데모 권한을 사용할 수 있습니다.
STEP_UP 결정 시에는 어떤 일이 발생하나요?
agent가 작업을 진행하기 전에 human sponsor가 writ_grant 또는 대시보드를 통해 해당 작업을 승인해야 합니다.