legitAgent
Provides a reusable GitHub Action to run the scanner in CI, producing SARIF output and uploading it to GitHub code scanning.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@legitAgentscan this repository for 152-FZ compliance"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

legitAgent
Проверка сайта на типичные риски 152-ФЗ, 38-ФЗ и ЗоЗПП прямо в Cursor, Claude, Kimi и в терминале.
Сайт: kiruxich.github.io/legitAgent. Каталог правил: docs/RULES.md. Сломанный пример: legitAgent-demo.
Подключите MCP — агент сам просканирует HTML/JSX/TSX/Vue/Svelte/Astro, покажет находки со статьёй закона и подскажет, как исправить. В Cursor после установки плагина те же действия доступны через /check, /scan, /scan-url. Либо одна команда в CI, GitHub Action с выгрузкой SARIF, либо scan-url для живой страницы: тот же каталог по DOM плюс cookie до согласия.
npx @legit-agent/cli scanЭто эвристическая проверка кода, а не юридическое заключение. legitAgent не заменяет юриста и не гарантирует соответствие закону. Решение принимает человек.
🛡 Нужен Enterprise-аудит? Разрабатываем кастомные высоконагруженные системы и проводим юридический и технический аудит кода. Получите бесплатный отчет по нагрузке и соответствию 152-ФЗ для вашей инфраструктуры: Свяжитесь со мной в Telegram: @kirillsklemin
Быстрый старт
Нужен Node.js 20+. Пакеты ставить не обязательно — достаточно npx.
MCP (Cursor, Claude, Kimi и другие)
Один и тот же сервер. @latest и --prefer-online: при каждом запуске Cursor, Claude, Kimi и других IDE npx берёт текущий релиз с npm, а не кэш. Уже открытый чат сам не обновится — нужен перезапуск окна / MCP.
В Cursor одной кнопкой: Add to Cursor.
{
"mcpServers": {
"legitagent": {
"command": "npx",
"args": ["-y", "--prefer-online", "@legit-agent/mcp@latest"]
}
}
}Клиент | Куда вставить |
Cursor | User (все проекты): |
Claude Code |
|
Claude Desktop | тот же JSON в |
Kimi Code |
|
Kimi CLI |
|
Windsurf, Cline, Continue, Copilot | тот же |
После подключения: «проверь этот репозиторий на 152-ФЗ», «покажи каталог правил», «объясни PDN.FORM.NO_CONSENT».
В Cursor те же действия вызываются через / (скиллы плагина, карточка при наведении берётся из description). Локально: ~/.cursor/plugins/local/legitagent. В каталоге у всех — после публикации на Marketplace. В ChatGPT и Kimi слэша Cursor нет: там работают MCP-инструменты, не /check.
Команда | MCP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Slash-команда не заменяет MCP: она говорит агенту вызвать инструмент. Без включённого сервера legitagent скана не будет.
CLI
npx @legit-agent/cli scan
npx @legit-agent/cli scan ./my-site
npx @legit-agent/cli scan ./my-site --json
npx @legit-agent/cli scan ./my-site --sarif
npx @legit-agent/cli scan ./my-site --sarif findings.sarif
npx @legit-agent/cli scan ./my-site --lang en
npx @legit-agent/cli scan ./my-site --review --json
npx @legit-agent/cli scan-url https://example.com --json
npx @legit-agent/cli scan-url https://example.com --review --evidence legitagent-evidence
npx @legit-agent/cli scan-url https://example.com --review --evidence --notify-telegram
npx @legit-agent/cli scan-url https://example.com --sarif legitagent.sarif
npx @legit-agent/cli init-policy --operator "ООО Ромашка" --inn 123 --email privacy@site.ru --out privacy.md--review добавляет второй проход LLM (confirm / reject / ask_human). Код выхода и SARIF по-прежнему считаются по сырым findings — CI остаётся детерминированным без LLM.
scan-url --evidence [dir] пишет evidence pack: скриншоты, имена cookie, evidence.json, evidence.sarif, evidence.pdf. В пачку попадают только confirm и ask_human.
Telegram (опционально): LEGITAGENT_TELEGRAM_BOT_TOKEN, LEGITAGENT_TELEGRAM_CHAT_ID + флаг --notify-telegram. Без credentials — код выхода 2.
LLM для --review: LEGITAGENT_LLM_API_KEY (опционально; без ключа — эвристический fallback). Базовый URL API: LEGITAGENT_LLM_BASE_URL (fallback: LEGITAGENT_LLM_API_BASE).
User rule для Cursor always-on: скопируйте текст из [docs/cursor-user-rule.md](docs/cursor-user-rule.md) в User rules.
Конфиг
В корне проекта можно положить legitagent.config.json:
{
"ignore": ["**/vendor/**"],
"disabled": ["PDN.COOKIE.NO_REJECT"],
"severity": { "PDN.TRANSFER.FOREIGN_TRACKER": "low" }
}Нет файла — как раньше. Невалидный JSON: код выхода 2.
Вывод по-русски по умолчанию; --lang en — английские сообщения. Файл, строка, что не так, как исправить, цитата нормы.
init-policy печатает черновик политики обработки ПДн (не юридический документ). Корпус 152-ФЗ / 38-ФЗ / ЗоЗПП лежит в packages/core/legal/corpus/; обновить с pravo.gov.ru: pnpm fetch-law.
--sarif без пути пишет legitagent.sarif (SARIF 2.1.0). scan-url открывает страницу в Chromium: ждёт гидрацию SPA, нажимает «отказ», если кнопка есть, смотрит cookie до и после этого, и прогоняет тот же каталог правил по HTML страницы (формы, политика, ERID, витрина, трекеры).
Код выхода | Значение |
| Нет серьёзных находок (в том числе нечего сканировать) |
| Есть хотя бы одна находка |
| Нет команды / |
В CI достаточно npx @legit-agent/cli@0.7.1 scan --json: ненулевой код — стоп пайплайна. Source-scan не вызывает LLM. Для code scanning скопируйте [examples/github-scan.yml](examples/github-scan.yml) в .github/workflows/legitagent.yml — он вызывает композитное действие [.github/actions/legitagent-scan](.github/actions/legitagent-scan/action.yml) с пином @v0.7.1: пишет SARIF, загружает его в GitHub, комментирует PR с результатами и при push в main создаёт или обновляет issue при находках high. Для мониторинга живого сайта после деплоя — [examples/github-watch.yml](examples/github-watch.yml) (scan-url --review --evidence, опционально Telegram). В URL/watch-режиме issues и fail-on-high используют сырой SARIF (--sarif legitagent.sarif); evidence pack остаётся отфильтрованным (confirm + ask_human).
Related MCP server: ActTrace
Возможности
Один движок [@legit-agent/core](https://www.npmjs.com/package/@legit-agent/core), живой сканер [@legit-agent/live](https://www.npmjs.com/package/@legit-agent/live), оболочки [@legit-agent/mcp](https://www.npmjs.com/package/@legit-agent/mcp) и [@legit-agent/cli](https://www.npmjs.com/package/@legit-agent/cli).
Инструменты MCP
Инструмент | Что делает |
| Сканирует проект. Необязательные |
| Второй проход по findings: |
| Проверяет живой URL: cookie, баннер, формы, политика, ERID, витрина, иностранные трекеры; ждёт гидрацию SPA и кликает «отказ», если кнопка есть. Опционально |
| Полный каталог правил. |
| Правило, выдержка статьи, как исправить, дисклеймер. Нужен |
| Черновик политики обработки ПДн. Нужен |
| Текст из корпуса ( |
Агент сам предлагает патч по находкам — MCP только проверяет и объясняет.
Ответ scan: список findings (правило, файл, строка, severity, сообщение, фикс, цитата), warnings по битым файлам, scannedFileCount. Если путь нечитаем: Укажите корень проекта.
Что проверяется в коде
Сканер читает .html, .jsx, .tsx, .vue, .svelte, .astro. Пропускает node_modules, .next, dist, build, coverage, .git. Синтаксически сломанный файл не роняет проверку — он уходит в предупреждение. Пустой проект — валидный результат, не ошибка.
id | Что находит | Норма |
| Форма с именем, email или телефоном без чекбокса согласия | 152-ФЗ ст. 9 |
| Предзаполненный чекбокс согласия | 152-ФЗ ст. 9 |
| Согласие без ссылки на политику | 152-ФЗ ст. 9 |
| В проекте нет ссылки на политику обработки ПДн | 152-ФЗ ст. 18.1 |
| Политика без оператора, целей, сроков или порядка отзыва | 152-ФЗ ст. 18.1 |
| Яндекс.Метрика, gtag, GA, Meta Pixel, VK.Retargeting без проверки согласия | 152-ФЗ ст. 6 |
| Cookie-баннер без возможности отказа | 152-ФЗ ст. 9 |
| Иностранный трекер / возможная трансграничная передача | 152-ФЗ ст. 6 |
| Форма с ПДн и иностранный трекер без указания локализации баз в РФ ( | 152-ФЗ ст. 18 |
| Форма с ПДн без следов уведомления РКН ( | 152-ФЗ ст. 22 |
| Пометка «Реклама» без erid | 38-ФЗ ст. 5 |
| Витрина без оферты | ЗоЗПП ст. 8 |
| Витрина без ИНН/ОГРН | ЗоЗПП ст. 7 |
| Витрина без условий возврата | ЗоЗПП ст. 18 |
Полный чек-лист
Помимо автопоиска агент знает весь каталог и по explain_rule разбирает каждый пункт: зачем правило, какая статья, что сделать.
Формы и согласие — PDN.FORM.NO_CONSENT, предзаполненный чекбокс (PDN.FORM.PRECHECKED_CONSENT), ссылка на политику рядом с согласием (PDN.FORM.NO_POLICY_LINK).
Политика ПДн — ссылка в проекте (PDN.POLICY.NO_LINK), состав документа: оператор, цели, сроки, отзыв (PDN.POLICY.INCOMPLETE).
Метрики и cookie — трекер без opt-in (PDN.TRACKER.NO_CONSENT), cookie до согласия (PDN.COOKIE.BEFORE_CONSENT, живой scan-url), баннер без отказа (PDN.COOKIE.NO_REJECT), иностранный трекер / трансграничная передача (PDN.TRANSFER.FOREIGN_TRACKER).
Организация — локализация баз в РФ (PDN.LOCALIZATION.UNCLEAR) и уведомление Роскомнадзора (PDN.ORG.RKN_NOTICE): только если есть форма с ПДн, серьёзность low. CMP вроде Cookiebot не считается «метрикой без согласия».
Реклама — пометка «Реклама» без идентификатора (ADV.ERID.MISSING).
Витрина — оферта, реквизиты, возврат (CONSUMER.*).
У каждого правила в репозитории есть короткая выдержка статьи. Без выдержки правило в каталог не попадает.
Полный каталог с выдержками закона: docs/RULES.md. На сайте — страница правил.
Проверить, что сканер вообще что-то находит: клонируйте legitAgent-demo (форма без согласия, метрика без opt-in, нет политики) и выполните npx @legit-agent/cli scan.
Разработка
git clone https://github.com/kiruxich/legitAgent.git
cd legitAgent
pnpm install
pnpm test
pnpm buildМонорепозиторий pnpm:
packages/core— каталог YAML, выдержки закона, парсеры, детекторы,scanProjectpackages/cli— командыlegitagent scan,scan-url,init-policy, вывод--json/--sarif/--langpackages/live— Playwright-сканер живой страницыpackages/mcp— stdio-сервер для агентов
Правила: packages/core/rules/*.yaml. Выдержки: packages/core/legal/*.yaml. Корпус законов: packages/core/legal/corpus/ (pnpm fetch-law). Каталог для людей: pnpm catalog → docs/RULES.md и website/rules.html.
Релиз
Пакеты живут на npmjs.com/org/legit-agent, не в GitHub Packages.
Новая версия: одинаковый version в packages/*/package.json (core, cli, live, mcp), коммит в main, тег vX.Y.Z, git push origin vX.Y.Z. GitHub Actions публикует core → live → cli → mcp и открывает GitHub Release.
Лицензия
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cookie consent scanner: GDPR, CCPA, GCMv2. PASS/FAIL compliance checklists with fix recommendations.
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
Trust verification for MCP servers. Check scores, scan for security issues, search 4,200+ servers.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for children's privacy compliance, enabling checks under COPPA, FERPA, UK Age Appropriate Design Code, and EU AI Act provisions for minors.1MIT
- AlicenseAqualityDmaintenanceMCP server for EU AI Act compliance, providing risk classification of AI features and Article 50 transparency notices.21Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for querying compliance regulations including GDPR, EU AI Act, and CCPA through natural language questions, keyword search, and compliance checks.619MIT

gridwork-privacyofficial
AlicenseAqualityDmaintenanceMCP server that audits websites for GDPR, CCPA, and ePrivacy compliance.4511MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/kiruxich/legitAgent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server