Scopeblind Mcp

io.github.tomjwxf由 GitHub 帳號 tomjwxf 發布v1.0.2更新於 Oct 24, 2026

Scan, protect, and monitor APIs from AI coding tools. Device-level rate limiting.

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

概覽

AI 產生的概覽

把 stdio MCP 伺服器包成代理,記錄、限流、封鎖並可對每次工具呼叫簽章。

可以做什麼
protect-mcp 以 stdio 代理的形式介於 MCP 用戶端與 MCP 伺服器之間,攔截 tools/call 的 JSON-RPC 請求,其他訊息則透明通過。預設的 shadow 模式會記錄每次工具呼叫並全部放行;搭配政策檔與 enforce 參數時,可依工具套用 block、rate_limit、min_tier 等規則。設定簽章後會產生 Ed25519 簽章的決策收據,並可匯出可離線驗證的稽核包。它也附帶以真實事件為背景的政策包,並支援 OPA、Cerbos、Cedar 等外部政策引擎。
適用情境
當你需要掌握或控制 AI 編碼工具實際在 MCP 伺服器上呼叫了什麼時使用,例如先觀察代理行為,再封鎖破壞性工具、限制高成本工具的呼叫頻率,或產生可簽章的稽核證據。主要針對在本機包裝既有 stdio 伺服器的桌面情境。
執行需求
需要 Node.js 與 npx 在本機以 stdio 執行這個 npm 套件。要啟用強制或簽章需要政策 JSON 檔;執行 init 會產出本機 Ed25519 金鑰與設定範本。未宣告需要帳號、API 金鑰或環境變數。在單純的代理路徑上簽章不會自動啟用。
安裝前請注意
enforce 模式會封鎖工具呼叫,建議先用 shadow 模式測試。政策檔可能以環境變數名稱引用憑證,憑證標籤會寫入日誌與收據。簽章收據會保存在本機並透過本機 HTTP 端點暴露,稽核包也可匯出,分享前請確認內容。README 說明這是個人分支,可能落後於官方倉庫。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

⚠️ This repository has moved. Active development continues at ScopeBlind/scopeblind-gateway.

This personal fork may be behind the canonical repository. Please use the org repo for issues, pull requests, and the latest code.

protect-mcp

Security gateway for MCP servers. Shadow-mode logs by default, per-tool policies, optional local Ed25519 receipts, and verification-friendly audit output.

Current CLI path: wrap any stdio MCP server as a transparent proxy. In shadow mode it logs every tools/call request and allows everything through. Add a policy file to enforce per-tool rules. Run protect-mcp init to generate local signing keys and config so the gateway can also emit signed receipts.

Quick Start

bash
# Wrap an existing OpenClaw / MCP config into a usable packnpx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe
# Shadow mode — log every tool call, enforce nothingnpx protect-mcp -- node my-server.js
# Generate keys + config template for local signingnpx protect-mcp init
# Shadow mode with local signing enablednpx protect-mcp --policy protect-mcp.json -- node my-server.js
# Enforce modenpx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Export an offline-verifiable audit bundlenpx protect-mcp bundle --output audit.json

What It Does

protect-mcp sits between your MCP client and server as a stdio proxy:

MCP Client ←stdin/stdout→ protect-mcp ←stdin/stdout→ your MCP server

It intercepts tools/call JSON-RPC requests and:

  • Shadow mode (default): logs every tool call and allows everything through
  • Enforce mode: applies per-tool policy rules such as block, rate_limit, and min_tier
  • Optional local signing: when signing is configured, emits an Ed25519-signed receipt alongside the structured log

All other MCP messages (initialize, tools/list, notifications) pass through transparently.

What Ships Today

  • Per-tool policies — block destructive tools, rate-limit expensive ones, and attach minimum-tier requirements
  • Structured decision logs — every decision is emitted to stderr with [PROTECT_MCP]
  • Optional local signed receipts — generated when you run with a policy containing signing.key_path, persisted to .protect-mcp-receipts.jsonl, and exposed at http://127.0.0.1:9876/receipts
  • Offline verification — verify receipts or bundles with npx @veritasacta/verify
  • No account required — local keys, local policy, local process

Current Capability Boundaries

These are important before you roll this out or talk to users:

  • Signing is not automatic on the bare npx protect-mcp -- ... path. That path logs decisions in shadow mode. For local signing, run npx protect-mcp init and then start the gateway with the generated policy file.
  • Tier-aware policy checks are live, but manifest admission is not wired into the default CLI/stdio path. The CLI defaults sessions to unknown unless a host integration calls the admission API programmatically.
  • Credential config currently validates env-backed credential references and records credential labels in logs/receipts. Generic per-call injection into arbitrary stdio tools is adapter-specific and is not performed by the default proxy path.
  • External PDP adapters and audit bundle helpers exist as exported utilities. They are not yet fully wired into the default CLI path.

Policy File

json
{  "default_tier": "unknown",  "tools": {    "dangerous_tool": { "block": true },    "admin_tool": { "min_tier": "signed-known", "rate_limit": "5/hour" },    "read_tool": { "require": "any", "rate_limit": "100/hour" },    "*": { "rate_limit": "500/hour" }  },  "signing": {    "key_path": "./keys/gateway.json",    "issuer": "protect-mcp",    "enabled": true  },  "credentials": {    "internal_api": {      "inject": "env",      "name": "INTERNAL_API_KEY",      "value_env": "INTERNAL_API_KEY"    }  }}

Policy Rules

FieldValuesDescription
blocktrueExplicitly block this tool
require"any", "none"Basic access requirement
min_tier"unknown", "signed-known", "evidenced", "privileged"Minimum tier required if your host sets admission state
rate_limit"N/unit"Rate limit (e.g. "5/hour", "100/day")

Tool names match exactly, with "*" as a wildcard fallback.

MCP Client Configuration

Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "my-protected-server": {      "command": "npx",      "args": [        "-y", "protect-mcp",        "--policy", "/path/to/protect-mcp.json",        "--enforce",        "--", "node", "my-server.js"      ]    }  }}

Cursor / VS Code

Same pattern — replace the server command with protect-mcp wrapping it.

CLI Options

protect-mcp [options] -- <command> [args...]protect-mcp init
Commands:  init              Generate Ed25519 keypair + config template  status            Show decision stats and local passport identity  digest            Generate a local human-readable summary  receipts          Show recent persisted signed receipts  bundle            Export an offline-verifiable audit bundle
Options:  --policy <path>   Policy/config JSON file  --slug <slug>     Service identifier for logs/receipts  --enforce         Enable enforcement mode (default: shadow)  --verbose         Enable debug logging  --help            Show help

Programmatic Hooks

The library also exposes the primitives that are not yet wired into the default CLI path:

typescript
import {  ProtectGateway,  loadPolicy,  evaluateTier,  meetsMinTier,  resolveCredential,  initSigning,  signDecision,  queryExternalPDP,  buildDecisionContext,  createAuditBundle,} from 'protect-mcp';

Use these if you want to add:

  • manifest admission before a session starts
  • an external PDP (OPA, Cerbos, or a generic HTTP webhook)
  • custom credential-brokered integrations
  • audit bundle export around your own receipt store

Decision Logs and Receipts

Every tool call emits structured JSON to stderr:

json
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"observe_mode","policy_digest":"none","mode":"shadow","timestamp":1710000000}

When signing is configured, a signed receipt follows:

json
[PROTECT_MCP_RECEIPT] {"v":2,"type":"decision_receipt","algorithm":"ed25519","kid":"...","issuer":"protect-mcp","issued_at":"2026-03-22T00:00:00Z","payload":{"tool":"read_file","decision":"allow","policy_digest":"...","mode":"shadow","request_id":"..."},"signature":"..."}

Verify with the CLI: npx @veritasacta/verify receipt.json Verify in browser: scopeblind.com/verify

Audit Bundles

The package exports a helper for self-contained audit bundles:

json
{  "format": "scopeblind:audit-bundle",  "version": 1,  "tenant": "my-service",  "receipts": ["..."],  "verification": {    "algorithm": "ed25519",    "signing_keys": ["..."]  }}

Use createAuditBundle() around your own collected signed receipts.

Philosophy

  • Shadow first. See what agents are doing before you enforce anything.
  • Receipts beat dashboard-only logs. Signed artifacts should be independently verifiable.
  • Keep the claims tight. The default CLI path does not yet do everything the long-term architecture will support.
  • Layer on top of existing auth. Don't rip out your stack just to add control and evidence.

Incident-Anchored Policy Packs

Ship with protect-mcp — each prevents a real attack:

PolicyIncidentOWASP Categories
clinejection.jsonCVE-2025-6514: MCP OAuth proxy hijack (437K environments)A01, A03
terraform-destroy.jsonAutonomous Terraform agent destroys productionA05, A06
github-mcp-hijack.jsonPrompt injection via crafted GitHub issueA01, A02, A03
data-exfiltration.jsonAgent data theft via outbound tool abuseA02, A04
financial-safe.jsonUnauthorized financial transactionA05, A06
bash
npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js

Full OWASP Agentic Top 10 mapping: scopeblind.com/docs/owasp

BYOPE: External Policy Engines

Supports OPA, Cerbos, Cedar (AWS AgentCore), and generic HTTP endpoints:

json
{  "policy_engine": "hybrid",  "external": {    "endpoint": "http://localhost:8181/v1/data/mcp/allow",    "format": "cedar",    "timeout_ms": 200,    "fallback": "deny"  }}

Standards & IP

  • IETF Internet-Draft: draft-farley-acta-signed-receipts-00 — Signed Decision Receipts for Machine-to-Machine Access Control
  • Patent Status: 4 Australian provisional patents pending (2025-2026) covering decision receipts with configurable disclosure, tool-calling gateway, agent manifests, and portable identity
  • Verification: MIT-licensed — npx @veritasacta/verify --self-test

License

MIT — free to use, modify, distribute, and build upon without restriction.

scopeblind.com · npm · GitHub · IETF Draft

來源:README.md,提交 01d2d89

工具

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

版本歷史

1
  1. v1.0.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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