Atlas Mcp

io.github.corpussanctum由 GitHub 帳號 corpussanctum 發布v0.1.1更新於 Oct 24, 2026

Pre-action authorization for AI agents: permit, deny or escalate against a signed delegation chain.

發布方自己的服務:Red Atlas Api

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

讓助手在執行刪除、部署或花錢等動作前申請預先授權,回傳 permit、deny 或 escalate 及簽章回執。

可以做什麼
Atlas 是針對 AI 代理的動作前授權閘門。代理在刪除資料、部署或花錢之前,以 agent、principal、action、effects 與 delegation_chain 呼叫 atlas_authorize,取得 permit、deny 或 escalate 以及回執(R19)。執行後再以 atlas_commit_effect 回報實際發生的情況,回執未涵蓋的效果會被標記為 violation(R20、R22)。atlas_receipt_status 回報回執狀態,atlas_verify_audit 驗證 SHA3-256 鏈與 ML-DSA-65 簽章(R23、R24)。決策依據簽章授權,鏈上只能逐層收窄,採交集語意並預設拒絕(R29、R31、R33)。
適用情境
當代理會執行可能刪除資料、部署、發佈或花錢的指令,而你希望留下可驗證的授權紀錄時,值得安裝。適合使用 Claude Code 並安裝掛鉤、讓檢查在模型之外對每次受控工具呼叫生效的使用者(R38、R39)。它是對抗誤操作的速度緩衝與稽核紀錄,而不是防範刻意隱瞞意圖的代理的防線(R59)。
執行需求
透過 npx 執行 npm 套件 @corpussanctum/atlas-mcp 的本機 stdio 程序,需要 Node.js;全域安裝可避免每次工具呼叫都啟動 npx(R39)。未宣告驗證、環境變數或標頭。資料存放於 ATLAS_MCP_DATA_DIR,預設 ~/.atlas-mcp,內含 issuer.json 與 audit.jsonl(R82)。只有 Claude Code 提供掛鉤強制點(R68、R69)。
安裝前請注意
簽發金鑰以未加密形式存放在 ~/.atlas-mcp/issuer.json(權限 0600),任何能讀取它的人都能偽造授權(R74、R76)。審批僅限本機 shell 存取,v0.1 沒有遠端審批通道(R77、R78)。分類依賴模式比對,未辨識的指令會以 shell.exec 放行,環境由指令中的 prod 等字詞推斷(R56、R57);效果依分類記錄而非實際觀測(R60)。掛鉤失敗與權限模式需在升級後重新測試(R61、R63、R65)。它是閘門而非沙箱,且僅支援 Claude Code(R68、R71)。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Atlas Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

atlas-mcp

Pre-action authorization for AI agents, as an MCP server.

Before an agent deletes data, deploys, or spends money, it asks Atlas. Atlas checks the request against a signed delegation chain and answers permit, deny or escalate, with a receipt. After acting, the agent reports what really happened with atlas_commit_effect. Every step lands in a hash-chained, ML-DSA-65-signed audit log.

$ npx -y @corpussanctum/atlas-mcp demo
  You (alice) delegate to claude: database work in STAGING only.
  Claude: delete rows in staging    -> PERMIT    rcpt_ec14…  authorized by 1-link delegation chain from user:alice
  Claude: delete rows in PRODUCTION    -> DENY      rcpt_876f…  effect targets environment 'production';                             delegated authority (grant grt_c9c8…) only permits staging
  Claude: write to staging (grant says writes need a human)    -> ESCALATE  rcpt_a8d7…  action 'db.write' requires human approval

Quickstart (5 minutes)

1. Register the server.

Claude Code:

bash
claude mcp add atlas -- npx -y @corpussanctum/atlas-mcp

Claude Desktop (claude_desktop_config.json), or any MCP client:

json
{ "mcpServers": { "atlas": { "command": "npx", "args": ["-y", "@corpussanctum/atlas-mcp"] } } }

Codex (~/.codex/config.toml):

toml
[mcp_servers.atlas]command = "npx"args = ["-y", "@corpussanctum/atlas-mcp"]

2. Delegate authority. You, the principal, issue a grant to the agent:

bash
npx -y @corpussanctum/atlas-mcp grant --principal user:alice --subject agent:claude \  --allow 'db.*' --env staging --escalate db.write --ttl-hours 8# prints the grant JSON; note its "id" (grt_…)

3. Tell the agent the rules. Add to CLAUDE.md / AGENTS.md (see examples/CLAUDE.md.snippet):

Before any destructive, production, deploy or spending action, call atlas_authorize with agent agent:claude, principal user:alice, delegation_chain ["grt_…"], the action and every effect. Proceed only on permit. Afterwards call atlas_commit_effect.

4. Approve escalations as the human. Approval is deliberately not an MCP tool, so an agent cannot approve itself:

bash
npx -y @corpussanctum/atlas-mcp resolve rcpt_a8d7… approvenpx -y @corpussanctum/atlas-mcp verify            # check the audit chain and signatures

Tools

ToolPurpose
atlas_authorize{agent, principal, requested_action, effects[], delegation_chain[]} → {decision, reason, scope, receipt_id}
atlas_commit_effectReport what actually happened under a receipt. One commit per receipt. Effects the receipt never covered are flagged as violation.
atlas_receipt_statusready, pending_approval, rejected, denied, committed, expired
atlas_verify_auditVerify the SHA3-256 chain and every ML-DSA-65 signature

How decisions work

  • A grant says: grantor → subject may do allow actions (minus deny), only in environments, only on resources, with escalate actions needing a human. Grants are signed by the local issuer key and recorded in the audit log.
  • A chain runs principal → agent → sub-agent. It must be unbroken, unexpired, unrevoked, and may only narrow from link to link. A child grant that widens its parent is rejected.
  • Intersection semantics: every link must independently allow the action and each effect. Revoking any link kills everything below it.
  • Fail closed: unknown grants, bad signatures, missing environments under an environment-restricted grant, and malformed requests all deny. The server trusts its own recorded copy of a grant, never the caller's.
  • Receipts expire after 15 minutes. A permit/approval covers the stated effects only.

Enforce it: the Claude Code hook

The MCP tools are a gate the agent chooses to call. The hook makes the check unskippable for Claude Code: it runs outside the model on every gated tool call, so the agent cannot forget, or talk its way past, a deny.

bash
npm i -g @corpussanctum/atlas-mcp       # a global install avoids npx startup cost on every tool callatlas-mcp hook init --principal user:alice

hook init writes ~/.atlas-mcp/hook.json, issues a starter grant (30 days; environments dev and staging; shell.deploy and shell.delete ask first), and prints the settings.json block to paste into ~/.claude/settings.json.

What happens on each tool call

Claude Code tool callAtlas actionResult
npm test in devshell.execno opinion: Claude Code's normal permissions apply
psql … productionshell.exec @ productiondeny: the delegated authority only permits dev, staging
rm -rf dist, git push --force, drop tableshell.deleteask: Claude Code prompts you; acceptance is recorded as the approval
kubectl apply, terraform apply, npm publishshell.deployask
Write / Edit / MultiEditfile.writeby grant
mcp__server__toolmcp.server.toolby grant
Read, Grep, Glob, Atlas's own toolsnot gated

The PostToolUse hook then commits the receipt (success or failure) to the signed audit log. Check it any time with atlas-mcp verify.

Tuning

Edit ~/.atlas-mcp/hook.json:

json
{  "agent": "agent:claude-code",  "principal": "user:alice",  "delegation_chain": ["grt_…"],  "default_environment": "dev",  "environments": [{ "match": "\\b(prod|production|live)\\b", "environment": "production" }],  "rules": [{ "tool": "^Bash$", "match": "^make release", "action": "shell.deploy", "effect_type": "deploy" }],  "on_permit": "defer"}

on_permit: "allow" lets an Atlas permit skip Claude Code's own prompt. The default, defer, keeps Claude Code's prompts as a second layer.

What it does not do (read this)

  • Classification is pattern matching. A command Atlas doesn't recognise is plain shell.exec, and environment is inferred from words in the command (prod, production, staging). ./deploy.sh or a connection string with no environment word passes as dev. Add rules and environments for your own tooling. This is a speed bump against mistakes and a record for audit, not a defence against an agent actively hiding its intent.
  • Effects are as classified, not observed. The audit log records what Atlas judged the call would do, not what the process really did.
  • Hook failures. The hook answers deny when it can catch its own error (missing config, bad grant). A hard crash or timeout is not blocked by Claude Code unless your build supports "onFailure": "block" on the hook handler (documented for recent versions); add it to both hook entries if yours does.
  • Permission modes. Claude Code's docs don't say whether a hook deny survives --permission-mode bypassPermissions. We tested it on Claude Code 2.1.296 (Claude Code): a denied command did not run under bypassPermissions (the control command ran and was committed). Retest after upgrading Claude Code.
  • Self-protection is partial. Edits to ~/.atlas-mcp and commands that name it are refused, but a shell can reach a file by many routes. Run agents as a different OS user from the one that owns the data directory if that matters to you.
  • Claude Code only. Other clients need their own enforcement point.

Read this before you rely on it

  • This is a gate the agent consults, not a sandbox. On its own, an MCP tool cannot stop an agent that decides not to call it, or that lies about its effects. v0.1 gives you a signed, verifiable record and a decision to enforce with: for Claude Code, use the hook above to make it binding; elsewhere pair it with a tool proxy or network/credential isolation. atlas_commit_effect catches and records the mismatches it is told about.
  • The issuer key sits unencrypted in ~/.atlas-mcp/issuer.json (mode 0600). Protect the directory like an SSH key. Anyone who can read it can forge grants.
  • Local operator approval = local shell access. There is no remote approval channel in v0.1.
  • Not a compliance certification. Cryptographic choices follow the parent project's assumptions; no external audit has been done.

Data and config

ATLAS_MCP_DATA_DIR (default ~/.atlas-mcp) holds issuer.json and audit.jsonl. Nothing leaves the machine.

Docker

bash
docker build -t atlas-mcp .docker run -i --rm -v atlas-data:/data atlas-mcp

Relationship to Atlas Protocol

atlas-protocol is the full governance gatekeeper (Telegram operator relay, 96-rule policy engine, agent identity registry, behavioral baselines, proximity). atlas-mcp is its smallest useful piece, extracted so you can install it in one line.

Development

bash
npm install && npm test

Apache-2.0.

來源:README.md,提交 8ce9168

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Oct 14, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Atlas 整合