mcp-proof
🧾 mcp-proof
Поставляйте MCP-сервер с квитанцией.
Одна команда проверяет любой MCP-сервер — инструменты, ресурсы и промпты, обе протокольные эпохи, stdio или Streamable HTTP — и передаёт заказчику воспроизводимый отчёт о поставке с цифровым отпечатком плюс регрессионный набор для CI, который тот оставляет у себя.
Реальный аудит официального файлового сервера MCP: 25 проверок соответствия, таблица соответствия MSSS, 34 регрессионных сценария — всё зелёное.
✨ Что вы получаете
🔍 Проверки протокола на уровне обмена по всем поверхностям и обеим эпохам — mcp-proof общается с вашим сервером на сыром JSON-RPC и автоматически определяет его эпоху: 30 проверок для современной эпохи 2026-07-28 (
server/discover, проверка обёртки_meta,resultType,ttlMs/cacheScopeдля каждого кэшируемого результата, отклонение версии-32022, проверка HTTP-заголовков маршрутизации) и 25 для эпохи рукопожатияinitialize— точные коды ошибок, валидность схем, структурированный вывод, чистота stdout, безопасность пагинации, отдельные дорожки ресурсов и промптов, а также проверенные негативные пробы: TOOL-07 отправляет входные данные, которые доказуемо нарушают объявленнуюinputSchema, и предупреждает, когда сервер отвечает на них как обычно, приводя минимальный воспроизводитель. Учёт capabilities в обе стороны: поверхности, которые сервер не объявляет, пропускаются; те, что объявляет, обязаны работать.🛡️ Аудит безопасности, привязанный к публичному стандарту — 6 детерминированных проверок (отравление описаний инструментов, невидимые/двунаправленные символы, утёкшие учётные данные, неограниченные поверхности инъекций, объявленное выполнение команд в оболочке); каждая сопоставлена с каноническими идентификаторами контролов из 24-контрольного стандарта безопасности MCP Server Security Standard и выводится в каждом отчёте в виде полной таблицы соответствия.
📼 Регрессионный набор, который остаётся у заказчика — запись в любой протокольной эпохе; золотые фикстуры с SHA-256-происхождением фиксируют поведение сервера; повторный прогон оценивает каждое отклонение (
BREAKING/VALUE/COSMETIC/LATENCY), понимает структурированный вывод, сохраняет порядок вызовов с состоянием и поставляется с готовым к вставке шлюзом GitHub Actions.📄 Отчёт и для людей, и для машин — автономный HTML: липкая навигация, якоря по проверкам (
report.html#SEC-03), фильтры «требует внимания»/«пройдено», сворачиваемая матрица MSSS;--pdfдля печати. Та же версионированная модель выгружается в--json(схема v1),--junitдля любого CI и--sarifдля вкладки GitHub Security.🔁 Воспроизводимость по построению — ноль вызовов LLM, ноль API-ключей. Каждый хэш вычисляется только из поведения, а метки времени и задержки живут в отдельном нехэшируемом слое наблюдения, поэтому идентичное поведение сервера даёт идентичный отпечаток отчёта, и приёмка — это проверка, а не доверие.
🧯 Аннотации в приоритете при планировании вызовов — аннотации инструментов MCP главнее эвристики по имени в обоих направлениях:
readOnlyHintспасает read-only инструменты, которые регулярное выражение заблокировало бы избыточно, аdestructiveHintловит мутирующие, которые оно бы пропустило; инструменты без аннотаций получают консервативную эвристику.mcp-proof planпоказывает точно, что вызовет автоматическое формирование базовых линий и на каком основании, прежде чем что-либо коснётся продакшена;--include-destructiveи--edge-casesдобавляют охват.📋 Контрактный diff для CI —
mcp-proof inspectфиксирует публикуемую поверхность (capabilities + инструменты + ресурсы + промпты, с полной пагинацией) в манифест с отпечатком;mcp-proof diffклассифицирует каждое изменение какBREAKING/ADDITIVE/METADATAи завершается ненулевым кодом при разрушающих изменениях — сужение схемы, сужениеenum, переключение обязательности полей, удалённые поля вывода и ослабленные аннотации безопасности учитываются.
Related MCP server: MCProbe
🚀 Быстрый старт
pip install git+https://github.com/YuCPbit/mcp-proof
mcp-proof run python my_server.py --fixtures fixtures/ --out report.htmlАудируете уже работающий HTTP-сервер? mcp-proof run --url http://localhost:8000/mcp --out report.html
Код возврата 0 означает: все обязательные проверки MUST пройдены, находок по безопасности нет, расхождений в поведении нет — шлюз CI в одну строку.
mcp-proof plan python my_server.py # what would auto-baselining call, and why
mcp-proof record python my_server.py --fixtures fixtures/ # freeze the behavioural contract
mcp-proof replay --fixtures fixtures/ -- python my_server.py # fail on any drift
mcp-proof inspect python my_server.py --out baseline.json # freeze the contract surface
mcp-proof diff baseline.json current.json # BREAKING / ADDITIVE / METADATA, exit 1 on breakingПосмотрите разницу за 60 секунд на встроенной демо-паре — чистый сервер и сервер с девятью внедрёнными нарушениями:
mcp-proof run python demo/good_server.py --fixtures demo/fixtures-good --out report-good.html # → SHIP-READY
mcp-proof run python demo/bad_server.py --out report-bad.html # → 5 MUST failures, 3 security findings📊 Реальные аудиты, реальные отчёты
Цель | Вердикт | Отчёт |
Официальный файловый сервер MCP ( | ✅ SHIP-READY — 11/11 MUST-проверок, 34/34 повторов без проблем, 4 инструмента записи промыты автоматически | |
Современный сервер эпохи 2026-07-28 (без зависимостей, перекрёстно проверен с официальным v2 SDK) | ✅ SHIP-READY — эпоха определена автоматически через | |
Демо-сервер с 9 внедрёнными нарушениями | ❌ NOT SHIP-READY — 5 избежать MUST + 3 находки безопасности, все зафиксированы с доказательствами | |
Корректный демо-сервер | ✅ SHIP-READY — 16/16 MUST, полное прохождение по всем трём дорожкам, включая регрессионный базлайн |
🔬 Три дорожки
Дорожка | Что доказывает | Как это работает |
Соответствие протоколу | Сервер правильно реализует MCP на проводе: согласование эпоху, семантика ошибок JSON-RPC, поверхности инструментов/ресурсов/промптов, схемы вывода, согласованность capabilities, пагинация, чистота stdout | Самодельный JSON-RPC-зонд смотрит на сырой байтовый поток, поэтому ничего не сглаживается |
Безопасность и гигиена | Метаданные инструментов чисты: никаких внедрённых инструкций, скрытого Unicode, утёкших секретов или неограниченных поверхностей проверки | Детерминистированный статический анализ, каждая находка несёт идентификатор управления MSSS |
Регрессия поведения | Сервер продолжает делать ровно то, что делал при сдаче | Запись/воспроизведение золотых фикстур с fingerprint-происхождением, отклонения классифицируются по серьёзности |
Каждая дорожка сходится в один отчёт — и отчёт заканчивается приоритизированным списком исправлений, так что он служит и планом устранения проблем.
📡 Поддержка протокола
Транспорты | stdio ✅ · Streamable HTTP ✅ |
Поверхности | инструменты ✅ · ресурсы ✅ · промпты ✅ — с учётом capabilities в обе стороны |
Современная эпоха | ✅ дорожка соответствия, автоопределение — |
Эпоха рукопожатия (initialize handshake, | ✅ все дорожки |
Регрессионная дорожка | ✅ обе эпохи — сессия на SDK (legacy) · сессия на пробника (modern) |
Современная дорожка валидируется с официальным v2 SDK в обоих направлениях: официальный клиент
по заявлениям server/discover подхватывает собственный современный тестовый сервер mcp-proof, а mcp-proof
прогоняет все три дорожки полностью зелёными против серверов на официальном v2 SDK на обоих транспортах —
stdio и Streamable HTTP с SSE-ответами (scripts/crosscheck_modern_server.py).
Работает с серверами на любом языке — mcp-proof общается с процессом (или URL), а не с вашим кодом.
⚙️ CI в один шаг
- uses: YuCPbit/mcp-proof@v0.5.0
with:
server-command: python my_server.py
fixtures: fixtures/Джоб падает, если сервер не готов к поставке, и оставляет после себя mcp-proof-report.html, .json,
.junit.xml, .sarif для загрузки в артефакты. Предпочитаете обычные команды? mcp-proof run … --junit r.xml --sarif r.sarif
плюс mcp-proof diff — тот же шлюз.
🏗️ Создайте поверх шаблона, проходящего аудит
Строите сервер, а не проверяете чужой? templates/server-starter/ — это
быстрый MCP-сервер (fastmcp), который проходит проверку из коробки: ограниченные входные схемы, правильная семантика
ошибок, структурированный вывод, каждая практика заметкой с ID проверки, которой удовлетворяет. Скопируйте,
реализуйте свои инструменты, прогоните аудит и сдайте с отчётом.
🖥️ Платформы
macOS | ✅ разработан и полностью проверен |
Linux | ✅ обкатан в CI |
Windows | ✅ обкатана в CI |
🗺️ План работ
Релиз | Фокус |
v0.3 | ✅ Двухеральная поддержка протокола, вышита на main: автоматическое определение эпоху, 19 проверок современной эпохи, регрессионные сеансы для обеих эпох, валидировано против официального v2 SDK и на обоих транспортах |
v0.4 | ✅ Дорожки ресурсов и промптов с учётом capabilities · Брекет-манифест |
v0.5 | ✅ Версионированная модель JSON-отчёта · Вывод JUnit и SARIF · Переиспользуемый GitHub Action ( |
v1.0 | ✅ Двухстадийный синтез аргументов ( |
Позже | Опциональная семантическая дорожка (проверки с LLM-оценкой) — откладывается до завершения детерминированного ядра |
🔭 Ограничения
mcpproof доказывает то, что может быть доказано детерминированно, и явно помечает, что есть что:
Проверки безопасности охватывают наблюдаемый протокол и поверхность метаданных. Контроли MSSS, требующие доказательств развёртывания, исходного кода или процесса, всегда помечаются как ручная проверка — никогда как пройденные.
Автоматическое формирование базовой линии классифицирует инструменты по консервативной эвристике на основе имени/описания. Проверьте список исключений в манифесте фикстур, прежде чем доверять базовой линии, записанной для продакшена.
Семантическая корректность (означает ли ответ правильную вещь?) намеренно выходит за пределы детерминированного ядра.
📄 Лицензия
MIT — таксономия в разделе соответствия MSSS следует MCP Server Security Standard (CC BY-SA 4.0).
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP Spec Compliance MCP — audits any MCP server.json against the official Model Context Protocol
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
MEOK MCP Test MCP — golden-file + schema-drift + tool-failure tests for any MCP server. Drop-in
Grade MCP servers A to F with the open behavioral litmus. npm: full toolset; hosted: lookups only.
Related MCP Servers
- AlicenseAqualityAmaintenanceA stdio MCP server that audits other MCP servers over the live protocol. It connects to any MCP target (stdio or HTTP), lints every tool's schema for agent-usability, then actually calls the tools with deliberately broken inputs to see how the server handles them, and returns a 0–100 conformance score with a per-dimension breakdown rendered as Markdown.66MIT
- AlicenseAqualityCmaintenanceA stdio MCP server that audits other MCP servers by linting their tool schemas and calling tools with malformed inputs to produce a 0–100 conformance score and Markdown report.6353 npmMIT
- AlicenseNot gradedqualityCmaintenanceAudits any MCP server against the official spec, providing HMAC-signed conformity reports.24 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceAudits MCP server configurations for security risks including capability inventory, SSRF, prompt injection, and drift detection. Works in read-only mode and can also be used as an MCP server to let AI agents audit their own attack surface.411 PyPI4MIT