protect-mcp
protect-mcp
Корпоративный шлюз безопасности для MCP-серверов и хуков Claude Code. Подписанные квитанции, политики Cedar и аудиторские следы с поддержкой роевых систем.
Интегрировано в Microsoft Agent Governance Toolkit | Интернет-черновик IETF | Живая демонстрация: acta.today/wiki
Быстрый старт — Claude Code
Две команды. Каждый вызов инструмента подтверждается квитанцией.
# 1. Generate hooks, keys, Cedar policy, and /verify-receipt skill
npx protect-mcp init-hooks
# 2. Start the hook server
npx protect-mcp serveОткройте Claude Code в том же проекте. Теперь каждый вызов инструмента перехватывается, оценивается и подписывается.
Что создает init-hooks
Файл | Назначение |
| Конфигурация хуков (PreToolUse, PostToolUse, + 9 событий жизненного цикла) |
| Пара ключей подписи Ed25519 (автоматически игнорируется git) |
| Стартовая политика Cedar — настройте под свои нужды |
| JSON-политика с подписью + лимитами запросов |
| Навык |
Архитектура
Claude Code → POST /hook → protect-mcp (Cedar + sign) → response
↓
.protect-mcp-log.jsonl
.protect-mcp-receipts.jsonlPreToolUse: синхронная проверка политики Cedar → отказ блокирует инструмент
PostToolUse: асинхронная подпись квитанции → нулевое влияние на задержку
отказ является архитектурно окончательным — он не может быть переопределен моделью или другими хуками
Эндпоинты
Метод | Путь | Описание |
POST |
| Эндпоинт хука Claude Code |
GET |
| Статус сервера, информация о политике, информация о подписывающем |
GET |
| Недавние подписанные квитанции |
GET |
| Самая последняя квитанция |
GET |
| Автоматически сгенерированные предложения по исправлению политики Cedar |
GET |
| Оповещения об обнаружении несанкционированного изменения конфигурации |
Проверка квитанций
# Inside Claude Code:
/verify-receipt
# From terminal:
curl http://127.0.0.1:9377/receipts/latest | jq .
npx protect-mcp receipts
# Check policy suggestions:
curl http://127.0.0.1:9377/suggestions | jq .Related MCP server: verify-mcp
Быстрый старт — обертка MCP-сервера
Оберните любой stdio MCP-сервер как прозрачный прокси:
# Shadow mode — log every tool call, enforce nothing
npx protect-mcp -- node my-server.js
# Enforce mode with policy
npx protect-mcp --policy protect-mcp.json --enforce -- node my-server.js
# Generate keys + config template
npx protect-mcp initКак это работает
protect-mcp оценивает каждый вызов инструмента на соответствие политике (JSON, Cedar или внешний PDP), подписывает решение как квитанцию Ed25519 и логирует результат.
Два режима интеграции:
Режим | Транспорт | Вариант использования |
Hook Server | HTTP ( | Claude Code, рои агентов |
Stdio Proxy | stdin/stdout ( | Claude Desktop, Cursor, любой MCP-клиент |
Три движка политик:
Движок | Конфигурация | Примечания |
JSON |
| Простые правила для каждого инструмента |
Cedar |
| Локальная оценка WASM через |
External PDP |
| OPA, Cerbos или любой HTTP PDP |
Отслеживание роя
В сессиях с несколькими агентами protect-mcp автоматически отслеживает топологию роя.
Обрабатывается 11 событий хуков:
Событие | Тип | Описание |
| Синхр. | Оценка Cedar/политики перед выполнением инструмента |
| Асинхр. | Подпись квитанции после выполнения инструмента |
| Жизненный цикл | Запуск/завершение рабочего агента |
| Жизненный цикл | Назначение задачи координатору |
| Жизненный цикл | Жизненный цикл сессии с обнаружением песочницы |
| Жизненный цикл | Мониторинг использования агента |
| Безопасность | Обнаружение несанкционированного изменения |
| Жизненный цикл | Завершение + сводка предложений по политике |
Каждая квитанция включает:
swarm.agent_id,swarm.agent_type,swarm.team_nametiming.tool_duration_ms,timing.hook_latency_mspayload_digest(SHA-256 хеш для полезных нагрузок >1КБ)deny_iteration(количество повторных попыток после отказа)sandbox_state(включено/выключено/недоступно)OpenTelemetry
otel_trace_idиotel_span_id
Файл политики
{
"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
}
}Политики Cedar
Решения об отказе в Cedar являются авторитетными — их нельзя переопределить.
// Allow read-only tools
permit(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"Read"
);
// Block destructive tools
forbid(
principal,
action == Action::"MCP::Tool::call",
resource == Tool::"delete_file"
);Когда инструмент блокируется, protect-mcp автоматически предлагает минимальное правило permit() для Cedar через GET /suggestions.
Пакеты политик, привязанные к CVE
Каждый предотвращает реальную атаку:
Политика | Инцидент | OWASP |
| CVE-2025-6514: Перехват MCP OAuth прокси (437 тыс. сред) | A01, A03 |
| Автономный агент Terraform уничтожает продакшн | A05, A06 |
| Инъекция промпта через специально созданный issue в GitHub | A01, A02, A03 |
| Кража данных агентом через злоупотребление исходящим инструментом | A02, A04 |
| Несанкционированная финансовая транзакция | A05, A06 |
Эквиваленты Cedar доступны в policies/cedar/.
Конфигурация MCP-клиента
Claude Desktop
{
"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
Commands:
serve Start HTTP hook server for Claude Code (port 9377)
init-hooks Generate Claude Code hook config + skill + sample Cedar policy
quickstart Zero-config onboarding: init + demo + show receipts
init Generate Ed25519 keypair + config template
demo Start a demo server wrapped with protect-mcp
doctor Check your setup: keys, policies, verifier, connectivity
trace <id> Visualize the receipt DAG from a given receipt_id
status Show tool call statistics from the decision log
digest Generate a human-readable summary of agent activity
receipts Show recent persisted signed receipts
bundle Export an offline-verifiable audit bundle
simulate Dry-run a policy against recorded tool calls
report Generate a compliance report from an audit bundle
Options:
--policy <path> Policy/config JSON file
--cedar <dir> Cedar policy directory
--enforce Enable enforcement mode (default: shadow)
--port <port> HTTP server port (default: 9377 for serve)
--verbose Enable debug loggingЛоги решений
Каждый вызов инструмента выводит структурированный JSON в stderr:
[PROTECT_MCP] {"v":2,"tool":"read_file","decision":"allow","reason_code":"cedar_allow","policy_digest":"a1b2c3...","mode":"enforce","hook_event":"PreToolUse","timing":{"hook_latency_ms":1},"otel_trace_id":"..."}Когда настроена подпись, подписанная квитанция сохраняется в .protect-mcp-receipts.jsonl.
Аудиторские пакеты
npx protect-mcp bundle --output audit.jsonАвтономный пакет, проверяемый офлайн, с квитанциями + ключами подписи. Проверьте с помощью npx @veritasacta/verify.
Верифицированная база знаний (acta.today/wiki)
Подпись квитанций protect-mcp обеспечивает работу первой в мире верифицированной мультимодельной базы знаний на acta.today/wiki.
Каждая единица знаний (Knowledge Unit) создается 4 передовыми моделями, обсуждающими вопрос в 3 состязательных раундах, с квитанциями Ed25519 на каждый ответ модели. Текущий состав:
Модель | Провайдер | Происхождение |
Claude Opus 4.6 | Anthropic | США |
GPT-5.4 | OpenAI | США |
Grok 4.20 | xAI | США |
Gemini 3.1 Pro | США | |
DeepSeek V3.2 | DeepSeek | КНР |
MiniMax M2.7 | MiniMax | КНР |
Kimi K2.5 | Moonshot | КНР |
Qwen 2.5 72B | Alibaba | КНР |
Каждая KU независимо проверяема: npx @veritasacta/verify receipt.json
Интеграции в экосистеме
Проект | Звезды | Интеграция | Статус |
600+ | Мост политики Cedar + подпись квитанций | Объединено (PR #667) | |
3,700+ | Подпись квитанций Ed25519 для аудиторского конвейера MCP | PR #556 отправлен | |
— | Подписанные квитанции как источник доказательств | Активное обсуждение (#1029) | |
24,500+ | Криптографический аудиторский след для выполнения навыков | Issue #5041 | |
57,600+ | Криптографическая целостность для уровня персистентности | Обсуждение #1855 | |
1,500+ | Рекомендация по конфигурации MCP | PR #41 | |
1,400+ | Криптографические квитанции для вердиктов валидаторов | Issue #464 |
Стандарты и интеллектуальная собственность
Интернет-черновики IETF:
draft-farley-acta-signed-receipts-01 — Подписанные квитанции решений для контроля доступа между машинами
draft-farley-acta-knowledge-units-00 — Единицы знаний для мультимодельного обсуждения
Источник: VeritasActa/drafts
Статус патентов: 4 австралийских предварительных патента на рассмотрении (2025-2026), охватывающих квитанции решений с настраиваемым раскрытием, шлюз вызова инструментов, манифесты агентов и переносимую идентификацию
Верификация: Apache-2.0 —
npx @veritasacta/verify --self-testИнтеграция с Microsoft AGT: PR #667 — Мост политики Cedar для Agent Governance Toolkit
Связанные репозитории
Репозиторий | Описание |
Открытый протокол для оспариваемых публичных записей (Apache-2.0) | |
Исходные файлы интернет-черновиков IETF | |
Примеры интеграции: хуки Claude Code, Express API, подпись MCP-сервера | |
Офлайн-верификатор квитанций (Apache-2.0) | |
SDK идентификации агентов (Apache-2.0) | |
Плагин подписи квитанций Google ADK (MIT, Python) |
Вклад
Приветствуются issues и pull requests. Пожалуйста, сначала откройте issue для значительных изменений.
Отчеты об ошибках: Укажите версию protect-mcp, версию Node.js и шаги для воспроизведения
Политики Cedar: Делитесь переиспользуемыми политиками через PR в директорию
policies/cedar/Примеры интеграции: Добавляйте в ScopeBlind/examples
Лицензия
MIT — свободно для использования, изменения, распространения и создания на основе без ограничений.
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/ScopeBlind/scopeblind-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server