gov-mcp
Agent Governance Auditor
Агент на базе ADK, который проверяет других ИИ-агентов на соответствие требованиям — находит ИИ-нагрузки в GCP-проекте, включая те, которые никто не регистрировал, выполняет 11 детерминированных проверок соответствия на основе версионированного пакета политик, и готовит готовый к передаче аудитору пакет доказательств, сопоставленный с EU AI Act (ст. 6, 9, 11, 12, 13, 15, 50) и критериями Trust Services из SOC 2. Каждая находка снабжается неизменяемой ссылкой на доказательство (GCS + SHA-256). Каждая операция записи получает одобрение человека.
Каждая политика объясняет, почему она связана со заявленными статьями, — а два сопоставления были удалены при ревью за излишне широкое толкование, потому что именно избыточное liaсопоставление быстрее всего дискредитирует комплаенс-отчёт. Инструмент проверяет отсутствие обязательных деклараций, но никогда не делает выводов о предполагаемых юридических нарушениях: «нет документированной классификации риска» — это проверяемо, и именно это фиксирует аудитор; «данный агент является высокорисковым по Приложению III» — это правовое суждение, которое инструмент выносить не вправе.
Создано для хакатона Gemini Enterprise — направление Stream 2 (High-Code: ADK + собственный MCP-сервер + Agent Runtime на платформе Gemini Enterprise Agent Platform).
Зачем
График введения EU AI Act сдвинулся, и это делает проблему более острой, а не менее. Регламент (ЕС) 2026/1744 («Цифровой омнибус по ИИ», вступил в силу 27 июля 2026 года) перенёс высокорисковые обязательства из Приложения III на 2 декабря 2027 года. Отложил, — но не отменил; а тем временем обязательства по прозрачности из статьи 50, запрещённые практики из статьи 5 и обязательства провайдеров GPAI действуют уже сегодня, штрафы достигают €35 млн или 7% глобального оборота.
Таким образом, у компаний есть примерно шестнадцать месяцев, чтобы сформировать доказательную цепочку для высокорисковых систем, уже неся текущие обязательства по агентам, которые работают прямо сейчас. И то и другое упирается в один вопрос, который аудиторы задают всегда, — «какие компьютерные системы у вас есть и можете ли вы доказать, что они регулируются?» — на который честный ответ обычно звучит так: «мы не до конца уверены».
Этот инструмент отвечает на этот вопрос — с доказательствами.
Related MCP server: EU AI Act Compliance MCP Server
Как это работает
Диаграмма выше показывает существующую картину. Ключевые принципы проектирования (полная архитектура):
Соответствие решает не LLM — код. Подход Pass/fail вычисляется в коде MCP-инструментов; агент оркеструет, выставляет приоритеты и комментирует. Защита от изменений останавливает любой запуск, где триаж пытается изменить статус.
Привязка по построению. Находка без указанного
evidence_refне может существовать в модели данных — схема её отклоняет.Только чтение по умолчанию. Единственный путь записи (порядок исправления) требует одноразовый токен одобрения, созданный человеком, и проверяется на сервере — поэтому сервер никогда не доверяет утверждению агента о том, что человек дал добро.
Аудитор проверяет самого себя — он разворачивается под собственным Agent Identity и обнаруживает сам себя же в собственном обследовании, проходя 6 из своих 11 проверок.
Один аудит: от начала до конца
В этой схеме две вещи — это суть дизайна, а не украшение. Триаж не обращается вообще ни к какому инструменту MCP — единственному ноге, выполняющей реальные рассуждения, закрыт доступ к чему-либо вне процесса. Запуск приостанавливается, прежде чем что-либо будет записано: токена ещё нет, и сервер отклонил бы запись, даже если бы агент попытался её выполнить.
Обнаружение основано на поведении, а не на совпадении имён
Вопрос, от которого зависит жизнь продукта: *«можете ли вы найти агент, который не называется agent-something?*» Подбор по именам — что он не найдет customer-insights-apiи заточит nginx с именемagent-proxy`. Поэтому рабочая нагрузка классифицируется по специальным признакам, с указанием достоверности и причины по каждой находке:
Признак | Что отслеживается | Достоверность |
| сервисный аккаунт появляется в Cloud Audit Logs с вызовом модели | подтверждена |
| развёрнут на Agent Runtime — агент по построению | подтверждена |
| несёт метку | заявленная |
| окружение ссылается на модель или агентный фреймворк | вероятная |
| имя выглядит как агентское — оставлено, но отодвинуто на последнее место | возможная |
Первый пункт — главный: та рабочая нагрузка что ведёт диалог с моделью, не может спрятаться за скучным именем. В демонстрационном флоте есть customer-insights-api — настоящий ADK-агент без агентного имени и без меток — именно для того, чтобы это утверждение можно было проверить, а не просто принять на веру.
Что охвачено, а что — нет
Обнаружение продвинулось шире, чем аудит, — и в отчёте всегда указано, где граница:
Аудируется полностью | Cloud Run · Agent Runtime — все 11 проверок читают их конфигурацию |
Обнаружено, но ещё не аудируется | Cloud Functions · GKE · Compute — найдены, но чтение их конфигурации устроено иначе |
Отражено как открытый вопрос | любая идентичность, выполняющая инференс, которой не соответствует ни одна найденная рабочая нагрузка |
Полностью вне охвата | модели, вызванные извне Google Cloud, модель, работающая локально на VM, кросс-проектные вызовы или выключенный журнал аудита |
Последняя строка — самая честная. Рабочая нагрузка, обращающаяся к внешнему провайдеру, никогда не появляется в журналах Google, и аудитор это не ловит, — он проверяет, включены ли механизмы контроля, которые должны были этого избегать, и докладывает, если они выключены. GOV-NET-007 — именно такая проверка.
Гарантированный минимум: использование модели требует аутентификации, а аутентификация логируется. Поэтому худший вариант — «вот объект, который мы не можем идентифицировать — смотрите руками», но никогда не тишина.
Быстрый старт
Все разработки происходят внутри контейнера — Ubuntu 26.04 LTS с gcloud, Terraform, Node и зафиксированным Python 3.12. На свою машину вы ничего не устанавливаете, а окружение идентично на macOS, Windows (Docker Desktop или WSL2) и Linux.
Необходимые условия: запущенный Docker (OrbStack, Docker Desktop или WSL2) и клонированный репозиторий. Больше ничего.
1. Соберите образ и получите shell
Откройте терминал в корне репозитория — в папке, содержащей этот README и папки gov_mcp/ auditor/ infra/:
cd path/to/agent-governance-auditor # wherever you cloned it
# Build. First time ~3-5 min; afterwards it's instant (layer cache), so it's
# safe to just always run it.
docker build -t agv-dev docker/
# Start a shell inside the container.
docker run -it --rm \
-v "$PWD":/workspace \
-v agv-gcloud:/home/ubuntu/.config/gcloud \
-v agv-venv:/opt/venv \
-p 8080:8080 -p 8000:8000 -p 6274:6274 -p 6277:6277 \
agv-dev bashdocker run -it --rm `
-v "${PWD}:/workspace" `
-v agv-gcloud:/home/ubuntu/.config/gcloud `
-v agv-venv:/opt/venv `
-p 8080:8080 -p 8000:8000 -p 6274:6274 -p 6277:6277 `
agv-dev bashЧто означают эти флаги:
Флаг | Зачем |
| Жёсткое монтирование папки репозитория. Редактируйте файлы на своей машине в любом редакторе; контейнер видит изменения мгновенно. Ничего не копируется. |
| Хранит вход в gcloud в Docker-томе, поэтому вы заходите один раз, а не каждую сессию, и на хост-машину ничего не записывается. |
| Сохраняет установленные Python-пакеты между сеансами (и как более недели bind-тома). |
| Публикует порты, чтобы браузер на вашем Mac мог открыть сервисы, запущенные в контейнере: |
| Удаляет контейнер при выходе. Безопасно — всё ценное осталось в двух томах. |
Вашим приглашением станет ubuntu@…:/workspace$. Всё, что вы внутри.
2. Разовая настройка и вход в учётную запись
bash docker/post-create.sh # creates the python env, installs deps, runs the tests
# BOTH logins are required and they are NOT interchangeable:
# the first authenticates the gcloud CLI
# the second writes Application Default Credentials, which Terraform and
# every google-cloud-* python client read instead
gcloud auth login --no-launch-browser
gcloud auth application-default login --no-launch-browser
gcloud auth application-default print-access-token >/dev/null && echo "ADC OK"Каждый раз при входе печатается ссылка для открытия в браузере, а вас просят вставить код назад. На втором экране согласия отметьте все разрешения («Select all») — неполная авторизация упадет со странной ошибкой Scope has changed, а для работы нужна область cloud-platform. Не двигайтесь дальше, пока не появится ADC OK.
→ если экран согласия выдаёт ошибку: gotcha 0b
3. Создайте GCP-проект-песницу
export PROJECT_ID="agent-gov-auditor-$(date +%y%m%d)" # must be globally unique
gcloud projects create "$PROJECT_ID" --name="agent-governance-auditor"
gcloud config set project "$PROJECT_ID"
gcloud billing accounts list # copy your account id
gcloud billing projects link "$PROJECT_ID" --billing-account=XXXXXX-XXXXXX-XXXXXX
# REQUIRED: attribute ADC API calls to your project. User credentials carry no
# project of their own, so without this Terraform gets a 403 SERVICE_DISABLED
# blaming Google's shared ADC client project (764086051850).
gcloud auth application-default set-quota-project "$PROJECT_ID"
gcloud config set run/region us-central1Биллинг должен быть привязан докаком Terraform — для включения API это необходимо.
→ если при создании проекта с идентификатором 764086051850 вы получите 403: gotcha 0c
4. Подготовьте инфраструктуру
Создаёт включённые API, служебные учётки (включены специально расширенную по правам «rogue» учётку), приёмник журнала аудита а также bucket с землю for evidence, браузер, budget, audit-log sink и репозиторий Artifact Registry.
cd infra
cp terraform.tfvars.example terraform.tfvars
# edit terraform.tfvars: project_id, billing_account_id, region
terraform init
terraform plan
terraform applyЕсли apply падает на биллинговом бюджете, это ожидаемо для некоторых аккаунтов — для бюджетов нужно разрешение на уровне биллингового аккаунта, а не проекта. Создайте его один раз в консоли и выполните terraform import или закомментируйте ресурс. Не тратьте на это вечер.
→ если первый apply падает со стеной SERVICE_DISABLED: gotcha 0e — обычно достаточно просто перезапустить
5. Разверните всё
Одна команда собирает и разворачивает всю инфраструктуру поверх базового уровня Terraform в порядке зависимостей, выводя затраченное время на каждом этапе. Замерено: 6м 57с для полного парка из четырёх агентов.
./scripts/deploy-all.shЗатем откройте приложение Gemini Enterprise, которое он зарегистрировал (Agents → 3-точечный → Preview), и отправьте:
Проведите аудит соответствия этого проекта.
Выполнение останавливается на этапе утверждения. Ответьте APPROVE, чтобы авторизовать исправление, или APPROVE <finding id> для подмножества, или DECLINE. (GE и Agent Runtime Playground не отображают кнопку подтверждения для экспериментального примитива подтверждения ADK, поэтому шлюз также принимает вводимый ответ.)
Предпочитаете терминал или хотите управлять без браузера:
python scripts/query_agent_runtime.py # multi-turn chat against the deployed agent→ если развёрнутый агент выдаёт 401 или зависает на шлюзе: gotchas 0q и 0r
6. Разборка, пересборка, повторение
Мягкая разборка удаляет всё, что создал скрипт развёртывания, и сохраняет всё, чем владеет Terraform, — так что вы можете прогнать весь путь развёртывания за считанные минуты без 20-минутной начальной загрузки проекта. Это также лучшая репетиция демо, потому что последовательность та же.
./scripts/teardown-workloads.sh # prompts first; --yes to skip
terraform -chdir=infra plan # expect NO changes — proves the split is clean
./scripts/deploy-all.sh # back up in ~6 minutesУдалено | Сохранено |
Приложение GE + регистрация агента | проект, включённые API |
развёртывание Agent Runtime | сервисные аккаунты и их IAM |
устаревшая привязка IAM, указывающая на удалённого агента | бакеты evidence и staging |
| бюджет, приёмник журналов аудита |
Artifact Registry и его образы, чтобы пересборка была быстрой |
Доказательства намеренно не удаляются: на бакете действует политика хранения в 30 дней, и он откажет. Это та самая неизменяемость, о которой заявляет дизайн, — и наблюдение за отклонением удаления демонстрирует её лучше любых утверждений.
Цепочка развёртывания
Полезно, когда что-то падает и нужно знать, какое звено перезапустить:
scripts/deploy-all.sh
├─ 1. auditee fleet
│ auditees/deploy-{compliant,legacy,rogue,insights}.sh
│ └─ each sources auditees/common.sh → build_image()
│ └─ gcloud builds submit (Dockerfile + main.py + requirements.txt)
│ └─ Artifact Registry
│ then gcloud run deploy, with posture set by FLAGS only
├─ 2. gov_mcp/deploy.sh → Cloud Build → Cloud Run (MCP server)
├─ 3. auditor/deploy.sh → Agent Runtime + its two IAM bindings
└─ 4. scripts/setup-gemini-enterprise.sh → GE app + agent registration + sharingТри вещи, которые стоит знать об этой цепочке:
common.sh— это подключаемая библиотека, а не скрипт. Она определяетPROJECT_ID,REGION,IMAGEиbuild_image(). Прямой запуск ничего не делает.Один образ, четыре развёртывания. Все четыре аудируемых сервиса запускают один и тот же контейнер; их политика соответствия полностью определяется флагами
gcloud run deploy— метками, сервисным аккаунтом, переменными окружения, — именно это и проверяет аудитор. Поэтому первый скрипт собирает, а остальные переиспользуют.build_image()пропускает сборку, если образ уже существует. После редактированияauditees/main.pyобычное повторное развёртывание отправит старый образ, и ваше изменение молча не применится. Принудительно один раз:FORCE_BUILD=1 ./auditees/deploy-compliant.sh.
Шаги 2 и 3 также работают автономно (./auditor/deploy.sh повторно разворачивает только агента), и каждый скрипт идемпотентен — повторный запуск безопасен.
Выход и возврат: exit завершает сеанс и удаляет контейнер. Повторно выполните ту же команду docker run …, чтобы вернуться, — ваш вход в gcloud и установленные пакеты всё ещё там, потому что они хранятся в томах agv-gcloud и agv-venv, а не в контейнере. Чтобы стереть всё и начать с чистого листа: docker volume rm agv-gcloud agv-venv.
Когда что-то ломается, загляните в gotchas & sharp edges перед отладкой — там описаны ошибки, с которыми мы уже столкнулись, включая сбой аутентификации Scope has changed, ошибку импорта mcp.shared.session, сбой gcloud virtualenv/VPN и почему несколько проверок обоснованно сообщают SKIPPED в личном проекте.
Шаги выше — это счастливый путь. docs/build-plan.md содержит остальное: правила эксплуатации, все грабли, на которые мы реально наступили, и журнал решений, объясняющий, почему всё устроено именно так.
Репозиторий
Путь | Что это |
План архитектуры и компонентов | |
Правила эксплуатации, грабли, журнал решений | |
Сценарий демо, соответствие рубрикам, готовые ответы, ограничения покрытия | |
Что на самом деле требует EU AI Act на сегодняшний день, с источниками | |
Версионируемый набор политик (YAML — правила управления, просматриваемые и версионируемые в git) | |
| |
ADK-приложение — конвейер SequentialAgent, типизированное состояние сеанса, Agent Runtime | |
Демонстрационный парк с намеренными конфигурациями | |
Terraform для всей песочницы | |
Детерминированный + агентский оценочный стенд — 171 офлайн-тест, 8 живых | |
Контейнер разработки |
scripts/
Скрипт | Что делает |
Собрать и развернуть все рабочие нагрузки по порядку, с замером времени | |
Мягкая разборка — удаляет рабочие нагрузки, сохраняет базовый уровень Terraform | |
Создать приложение GE и зарегистрировать агента — полностью через API, без кликов в консоли и без необходимости OAuth-клиента | |
Многоходовой чат с развёрнутым агентом из терминала | |
Пересчитать хэш отчёта и всех упомянутых в нём доказательств, не доверяя аудитору | |
Просмотр и форматированный вывод хранилища доказательств | |
Сформировать URI авторизации OAuth, если интеграции с GE когда-нибудь понадобится | |
Запустить конвейер локально и вывести астрономическое время + стоимость токенов на каждом шаге — секунды на итерацию вместо 3-минутного повторного развёртывания | |
Живая демонстрационная последовательность агента-злоумышленника |
Тестирование
pytest evals/ -q # 171 offline, no GCP needed, free
pytest evals/agent -m live # 8 end-to-end agent evals (~100s, ~$0.02, needs ADC)Живой набор тестов запускает реальный конвейер и проверяет то, что модульные тесты структурно не могут: что выполнение доходит до шлюза, что ничего не исправляется до одобрения человеком, что токен одобрения никогда не попадает в чат и что каждая неудачная находка содержит корректный хэш доказательства.
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 Servers
- AlicenseAqualityBmaintenanceProvides cryptographic signing and verification for AI decisions to generate verifiable, Ed25519-signed receipts for compliance and auditing. It automatically maps AI actions to regulatory frameworks like HIPAA and SOX with high-performance, sub-3ms signing.4MIT
- AlicenseAqualityDmaintenanceProvides automated EU AI Act compliance tools, including risk classification, role determination, transparency disclosures, content watermarking, deepfake labeling, and security threat detection.1631Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables EU AI Act compliance for AI agent systems by providing risk classification, audit trails, gap analysis, and evidence package generation.59MIT
- AlicenseNot gradedqualityBmaintenanceProvides 62 AI governance tools for compliance with regulations like the EU AI Act, enabling risk management, transparency, bias detection, and more.MIT
Related MCP Connectors
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
Runtime AI governance: decision gates, human approval, hash-chained audit, compliance mapping.
EU AI Act sovereignty scanning. Provider residency, registration status, audit trail support.
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/OLG-MAN/agent-governance-auditor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server