Skip to main content
Glama
tomjwxf

protect-mcp

⚠️ 이 저장소는 이전되었습니다. 활발한 개발은 **ScopeBlind/scopeblind-gateway**에서 계속됩니다.

이 개인 포크는 공식 저장소보다 뒤처져 있을 수 있습니다. 이슈, 풀 리퀘스트 및 최신 코드는 조직 저장소를 사용해 주십시오.

protect-mcp

MCP 서버를 위한 보안 게이트웨이입니다. 기본적으로 섀도우 모드 로깅, 도구별 정책, 선택적 로컬 Ed25519 영수증 및 검증 친화적인 감사 출력을 제공합니다.

현재 CLI 경로: 모든 stdio MCP 서버를 투명한 프록시로 래핑합니다. 섀도우 모드에서는 모든 tools/call 요청을 기록하고 모든 것을 통과시킵니다. 도구별 규칙을 적용하려면 정책 파일을 추가하십시오. protect-mcp init를 실행하여 로컬 서명 키와 설정을 생성하면 게이트웨이가 서명된 영수증을 발행할 수 있습니다.

빠른 시작

# Wrap an existing OpenClaw / MCP config into a usable pack
npx @scopeblind/passport wrap --runtime openclaw --config ./openclaw.json --policy email-safe

# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js

# Generate keys + config template for local signing
npx protect-mcp init

# Shadow mode with local signing enabled
npx protect-mcp --policy protect-mcp.json -- node my-server.js

# Enforce mode
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js

# Export an offline-verifiable audit bundle
npx protect-mcp bundle --output audit.json

기능

protect-mcp는 MCP 클라이언트와 서버 사이에서 stdio 프록시로 작동합니다:

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

tools/call JSON-RPC 요청을 가로채어 다음을 수행합니다:

  • 섀도우 모드 (기본값): 모든 도구 호출을 기록하고 모든 것을 통과시킵니다.

  • 강제 모드: block, rate_limit, min_tier와 같은 도구별 정책 규칙을 적용합니다.

  • 선택적 로컬 서명: 서명이 구성된 경우, 구조화된 로그와 함께 Ed25519 서명 영수증을 발행합니다.

다른 모든 MCP 메시지(initialize, tools/list, 알림)는 투명하게 통과합니다.

현재 제공 기능

  • 도구별 정책 — 파괴적인 도구 차단, 비용이 많이 드는 도구 속도 제한, 최소 등급 요구 사항 부착

  • 구조화된 결정 로그 — 모든 결정은 [PROTECT_MCP]와 함께 stderr로 출력됩니다.

  • 선택적 로컬 서명 영수증signing.key_path가 포함된 정책으로 실행 시 생성되며, .protect-mcp-receipts.jsonl에 저장되고 http://127.0.0.1:9876/receipts에서 노출됩니다.

  • 오프라인 검증npx @veritasacta/verify를 사용하여 영수증 또는 번들을 검증합니다.

  • 계정 불필요 — 로컬 키, 로컬 정책, 로컬 프로세스

현재 기능 범위

도입 전 다음 사항을 확인하십시오:

  • 기본 npx protect-mcp -- ... 경로에서는 서명이 자동으로 수행되지 않습니다. 해당 경로는 섀도우 모드에서 결정을 기록합니다. 로컬 서명을 사용하려면 npx protect-mcp init를 실행한 후 생성된 정책 파일로 게이트웨이를 시작하십시오.

  • 등급 인식 정책 검사는 활성화되어 있으나, 매니페스트 승인은 기본 CLI/stdio 경로에 연결되어 있지 않습니다. 호스트 통합이 프로그래밍 방식으로 승인 API를 호출하지 않는 한, CLI는 세션을 unknown으로 기본 설정합니다.

  • 자격 증명 구성은 현재 환경 기반 자격 증명 참조를 검증하고 로그/영수증에 자격 증명 레이블을 기록합니다. 임의의 stdio 도구에 대한 호출별 주입은 어댑터별 기능이며 기본 프록시 경로에서는 수행되지 않습니다.

  • 외부 PDP 어댑터 및 감사 번들 도우미는 내보낸 유틸리티로 존재합니다. 아직 기본 CLI 경로에 완전히 연결되지 않았습니다.

정책 파일

{
  "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"
    }
  }
}

정책 규칙

필드

설명

block

true

이 도구를 명시적으로 차단

require

"any", "none"

기본 액세스 요구 사항

min_tier

"unknown", "signed-known", "evidenced", "privileged"

호스트가 승인 상태를 설정한 경우 필요한 최소 등급

rate_limit

"N/unit"

속도 제한 (예: "5/hour", "100/day")

도구 이름은 정확히 일치해야 하며, "*"는 와일드카드 대체제로 사용됩니다.

MCP 클라이언트 구성

Claude Desktop

claude_desktop_config.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

동일한 패턴 — 서버 명령을 protect-mcp로 래핑하여 교체하십시오.

CLI 옵션

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

프로그래밍 방식 후크

이 라이브러리는 아직 기본 CLI 경로에 연결되지 않은 기본 요소들도 노출합니다:

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

다음 기능을 추가하려는 경우 사용하십시오:

  • 세션 시작 전 매니페스트 승인

  • 외부 PDP (OPA, Cerbos 또는 일반 HTTP 웹훅)

  • 사용자 지정 자격 증명 중개 통합

  • 자체 영수증 저장소 주변의 감사 번들 내보내기

결정 로그 및 영수증

모든 도구 호출은 구조화된 JSON을 stderr로 출력합니다:

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

서명이 구성된 경우, 서명된 영수증이 뒤따릅니다:

[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":"..."}

CLI로 검증: npx @veritasacta/verify receipt.json 브라우저에서 검증: scopeblind.com/verify

감사 번들

이 패키지는 독립형 감사 번들을 위한 도우미를 내보냅니다:

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

수집된 자체 서명 영수증 주변에서 createAuditBundle()을 사용하십시오.

철학

  • 섀도우 우선. 무엇을 강제하기 전에 에이전트가 무엇을 하는지 확인하십시오.

  • 영수증이 대시보드 로그보다 낫습니다. 서명된 아티팩트는 독립적으로 검증 가능해야 합니다.

  • 주장을 엄격하게 유지하십시오. 기본 CLI 경로는 장기 아키텍처가 지원할 모든 기능을 아직 수행하지 않습니다.

  • 기존 인증 위에 계층화하십시오. 제어 및 증거를 추가하기 위해 기존 스택을 뜯어내지 마십시오.

사고 기반 정책 팩

protect-mcp와 함께 제공되며, 각각 실제 공격을 방지합니다:

정책

사고

OWASP 카테고리

clinejection.json

CVE-2025-6514: MCP OAuth 프록시 하이재킹 (437K 환경)

A01, A03

terraform-destroy.json

자율 Terraform 에이전트가 프로덕션 파괴

A05, A06

github-mcp-hijack.json

조작된 GitHub 이슈를 통한 프롬프트 인젝션

A01, A02, A03

data-exfiltration.json

아웃바운드 도구 남용을 통한 에이전트 데이터 탈취

A02, A04

financial-safe.json

승인되지 않은 금융 거래

A05, A06

npx protect-mcp --policy node_modules/protect-mcp/policies/clinejection.json -- node server.js

전체 OWASP Agentic Top 10 매핑: scopeblind.com/docs/owasp

BYOPE: 외부 정책 엔진

OPA, Cerbos, Cedar (AWS AgentCore) 및 일반 HTTP 엔드포인트를 지원합니다:

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

표준 및 IP

  • IETF Internet-Draft: draft-farley-acta-signed-receipts-00 — 기계 간 액세스 제어를 위한 서명된 결정 영수증

  • 특허 상태: 구성 가능한 공개, 도구 호출 게이트웨이, 에이전트 매니페스트 및 휴대용 ID를 포함하는 결정 영수증 관련 호주 가특허 4건 출원 중 (2025-2026)

  • 검증: MIT 라이선스 — npx @veritasacta/verify --self-test

라이선스

MIT — 제한 없이 자유롭게 사용, 수정, 배포 및 구축 가능합니다.

scopeblind.com · npm · GitHub · IETF Draft

Install Server
A
security – no known vulnerabilities
A
license - permissive license
C
quality - C tier

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomjwxf/scopeblind-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server