AgentGuard MCP
AgentGuard MCP
Авторизация с учётом идентичности для ИИ-агентов.
AgentGuard MCP — это защищённый сервер Model Context Protocol, который выдаёт ИИ-агентам отдельные машинные идентичности, обеспечивает соблюдение OAuth-разрешений с минимальными привилегиями, применяет контекстную политику авторизации и приостанавливает чувствительные действия до подтверждения аутентифицированным человеком перед выполнением.
Это бэкенд авторизации для AgentGuard.
Живой продукт: https://agentguard-eight.vercel.app
Зачем AgentGuard?
Дать ИИ-агенту доступ к инструменту легко.
Контролировать какой агент может использовать какой инструмент, при каких условиях и когда должен вмешаться человек — сложнее.
AgentGuard разделяет эти задачи:
Auth0 аутентифицирует машинные и человеческие идентичности.
OAuth-скоупы определяют, что каждой машинной идентичности разрешено запрашивать.
Политика AgentGuard оценивает контекст действия.
Подтверждение человеком контролирует операции повышенного риска.
Supabase сохраняет состояние подтверждений и события аудита безопасности.
MCP предоставляет защищённые инструменты средам выполнения ИИ.
Таким образом, агент может быть аутентифицирован, но при этом ему не доверяется автоматически выполнение любого действия.
Related MCP server: gov-mcp
Архитектура
flowchart LR
A[AI Agent] --> B[Auth0 Machine Identity]
B --> C[OAuth Access Token]
C --> D[AgentGuard MCP Server]
D --> E{Required Scope?}
E -->|Missing| F[DENY]
E -->|Granted| G[Contextual Policy]
G -->|Low Risk| H[ALLOW]
G -->|Sensitive| I[APPROVAL_REQUIRED]
G -->|Forbidden| F
I --> J[(Supabase Approval)]
J --> K[Auth0 Human Login]
K --> L{Human Decision}
L -->|Approve| M[APPROVED]
L -->|Deny| N[DENIED]
M --> O[Agent Retries Approved Action]
O --> P[Identity + Approval Verification]
P --> Q[Execute Once]
F --> R[(Audit Events)]
H --> R
I --> R
N --> R
Q --> RМодель безопасности
AgentGuard использует два отдельных класса идентичностей.
Машинные идентичности
Каждая автономная среда выполнения получает отдельную идентичность Auth0 Machine-to-Machine.
Примеры демонстрационных идентичностей:
Среда выполнения | Назначение | Предоставленные скоупы |
Торговый агент | Операции с доходами |
|
Финансовый агент | Финансовые операции |
|
Административная среда выполнения | Административная автоматизация |
|
Торговый агент не может выполнять возвраты только потому, что это может другой агент.
Слой авторизации проверяет скоупы, содержащиеся в OAuth-токене доступа вызывающей стороны, перед выполнением защищённого инструмента.
Человеческие идентичности
Люди-операторы аутентифицируются отдельно через Auth0 Regular Web Application в панели управления AgentGuard.
Машинные и человеческие идентичности намеренно разделены.
Поэтому чувствительный запрос может выглядеть так:
Finance Agent
↓
Authenticated machine identity
↓
finance:refund scope
↓
Contextual policy
↓
APPROVAL_REQUIRED
↓
Authenticated human administrator
↓
APPROVED
↓
Finance Agent executes approved actionСлои авторизации
AgentGuard применяет авторизацию по слоям.
1. Аутентификация
MCP-сервер проверяет токен доступа Auth0 и устанавливает личность вызывающей стороны.
2. Авторизация по OAuth-скоупам
Защищённые инструменты объявляют скоупы, необходимые для их вызова.
Пример:
@require_scopes(["finance:refund"])Если у вызывающей стороны нет требуемого скоупа, выполнение немедленно прекращается.
3. Контекстная политика
Прохождение проверки OAuth не означает автоматическую авторизацию выполнения.
AgentGuard оценивает контекст запрошенного действия.
Текущие демонстрационные правила включают:
Refund <= $500
→ ALLOW
Refund > $500
→ APPROVAL_REQUIRED
Customer data export
→ APPROVAL_REQUIRED
Customer deletion
→ DENY4. Подтверждение человеком
Чувствительные операции записываются в хранилище подтверждений и приостанавливаются.
Отдельно аутентифицированный человек может одобрить или отклонить запрос через панель управления AgentGuard.
5. Выполнение, привязанное к подтверждению
Одобренное действие может быть выполнено только той машинной идентичностью, которая изначально его запросила.
AgentGuard проверяет:
подтверждение существует
статус подтверждения —
APPROVEDподтверждение принадлежит запрашивающей идентичности
действие подтверждения соответствует запрошенному инструменту
подтверждение ещё не было выполнено
6. Защита от повторного воспроизведения
После успешного выполнения:
APPROVED
→ EXECUTEDПовторная попытка выполнения отклоняется и записывается как событие безопасности.
Продемонстрированные сценарии безопасности
Проект включает три сохранённых сценария, которые также видны в публичной демонстрации AgentGuard.
Подтверждено человеком
Finance Agent
→ finance:refund scope verified
→ requests $750 refund
→ policy requires approval
→ human administrator approves
→ Finance Agent executes
→ ALLOW
→ approval becomes EXECUTEDОтклонено человеком
Finance Agent
→ finance:refund scope verified
→ requests $750 refund
→ policy requires approval
→ human administrator denies
→ Finance Agent attempts execution
→ DENYСкоуп заблокирован
Sales Agent
→ attempts issue_refund
→ missing finance:refund
→ DENY
Contextual policy is never evaluated.
Human review is never reached.Это демонстрирует разницу между:
аутентификацией
авторизацией
контекстной политикой
контролем человека
MCP-инструменты
Текущая демонстрация предоставляет пять защищённых MCP-инструментов.
search_accounts
Поиск аккаунтов в CRM.
Требуемый скоуп:
crm:readissue_refund
Запросить или выполнить возврат средств в зависимости от политики.
Требуемый скоуп:
finance:refundПолитика:
amount <= $500 → ALLOW
amount > $500 → APPROVAL_REQUIREDlist_pending_approvals
Выводит запросы на подтверждение, ожидающие рассмотрения.
Требуемый скоуп:
agent:manageapprove_action
Административный путь подтверждения через MCP, используемый при тестировании машинных сред выполнения.
Требуемый скоуп:
agent:manageПортфолио-приложение также поддерживает предпочтительный путь подтверждения человеком через защищённую Auth0 панель управления на Next.js.
execute_approved_refund
Выполняет уже одобренный возврат средств.
Требуемый скоуп:
finance:refundПеред выполнением сервер проверяет, что подтверждение принадлежит вызывающей машинной идентичности.
Жизненный цикл подтверждения
Записи подтверждений используют четыре состояния:
PENDING
APPROVED
DENIED
EXECUTEDТипичный успешный жизненный цикл:
PENDING
↓
APPROVED
↓
EXECUTEDЖизненный цикл при отказе:
PENDING
↓
DENIEDРассмотрение и подтверждение хранятся отдельно.
Это позволяет AgentGuard представлять:
DENIED
reviewed_by = Human Administrator
approved_by = nullбез ошибочной трактовки отказа человека как подтверждения.
События аудита
AgentGuard записывает решения об авторизации и политике в Supabase.
Примеры событий включают:
ALLOW
DENY
APPROVAL_REQUIRED
APPROVEDМетаданные безопасности могут включать:
предоставленные скоупы
отсутствующие скоупы
сбои авторизации
идентификаторы подтверждений
запрашивающую идентичность
контекст действия
попытки повторного воспроизведения
проверяющего человека
идентификаторы аккаунтов/ресурсов
Пример сбоя из-за скоупа:
{
"action": "issue_refund",
"decision": "DENY",
"required_scope": "finance:refund",
"reason": "Missing required scopes: ['finance:refund']",
"metadata": {
"granted_scopes": [
"crm:read",
"crm:write",
"support:read"
],
"missing_scopes": [
"finance:refund"
],
"security_event": "authorization_failure"
}
}Секреты и токены доступа никогда не должны записываться в журнал аудита.
Структура репозитория
agentguard-mcp/
│
├── database/
│ └── schema.sql
│
├── src/
│ ├── auth0/
│ │ ├── __init__.py
│ │ ├── authz.py
│ │ ├── errors.py
│ │ └── middleware.py
│ │
│ ├── approvals.py
│ ├── audit.py
│ ├── config.py
│ ├── database.py
│ ├── policy.py
│ ├── server.py
│ ├── tools.py
│ └── __init__.py
│
├── .env.example
├── .gitignore
├── pyproject.toml
└── README.mdБаза данных
AgentGuard в настоящее время использует Supabase/Postgres для:
approvals
Хранит чувствительные запросы и их жизненный цикл рассмотрения.
Важные поля включают:
requesting_identity
action
payload
reason
status
reviewed_by
reviewed_at
approved_by
approved_at
executed_ataudit_events
Хранит решения безопасности и контекст выполнения.
Важные поля включают:
identity
action
decision
required_scope
reason
approval_id
metadata
created_atНа обеих таблицах включена безопасность на уровне строк (Row Level Security).
Публичные политики для браузера не создаются.
Доверенные серверные компоненты AgentGuard получают доступ к базе данных, используя учётные данные только для сервера.
См.:
database/schema.sqlЛокальная настройка
Требования
Python 3.10+
тенант Auth0
проект Supabase
приложения Auth0 Machine-to-Machine
API Auth0, настроенный для MCP-ресурса
Клонирование
git clone https://github.com/haisamar/agentguard-mcp.git
cd agentguard-mcpСоздание виртуального окружения
Windows:
python -m venv .venv
.\.venv\Scripts\Activate.ps1macOS/Linux:
python -m venv .venv
source .venv/bin/activateУстановка зависимостей
С помощью Poetry:
pip install poetry
poetry installИли при желании установите необходимые зависимости вручную.
Настройка окружения
Скопируйте:
.env.exampleв:
.envи настройте собственные учётные данные.
Никогда не коммитьте .env.
Требуемые переменные окружения
AUTH0_DOMAIN=
AUTH0_AUDIENCE=http://localhost:3001/
MCP_SERVER_URL=http://localhost:3001/
PORT=3001
SALES_AGENT_CLIENT_ID=
SALES_AGENT_CLIENT_SECRET=
FINANCE_AGENT_CLIENT_ID=
FINANCE_AGENT_CLIENT_SECRET=
ADMIN_AGENT_CLIENT_ID=
ADMIN_AGENT_CLIENT_SECRET=
SUPABASE_URL=
SUPABASE_SECRET_KEY=Разрешения API Auth0
API AgentGuard в настоящее время определяет разрешения, включая:
crm:read
crm:write
support:read
support:write
finance:read
finance:refund
customer:export
agent:manageПриложения Machine-to-Machine должны получать только те разрешения, которые необходимы для их роли.
Запуск MCP-сервера
Из корня репозитория:
python -m src.serverСервер по умолчанию:
http://localhost:3001/MCP-эндпоинт:
http://localhost:3001/mcpМетаданные защищённого ресурса:
http://localhost:3001/.well-known/oauth-protected-resourceТестирование с помощью MCP Inspector
Запустите MCP Inspector:
npx -y @modelcontextprotocol/inspectorПодключитесь, используя:
Transport:
Streamable HTTP
URL:
http://localhost:3001/mcpИспользуйте токен доступа Auth0 Machine-to-Machine в заголовке авторизации:
Authorization: Bearer <ACCESS_TOKEN>Не коммитьте и не раскрывайте токены доступа.
Фронтенд
Сопутствующий интерфейс продукта AgentGuard доступен здесь:
Репозиторий
https://github.com/haisamar/agentguard
Живое демо
https://agentguard-eight.vercel.app
Он предоставляет:
публичную страницу продукта
очищенную публичную демонстрацию безопасности
защищённую Auth0 панель администратора
элементы управления для подтверждения/отказа человеком
визуализацию машинной и человеческой идентичности
обозреватель трассировки авторизации
интерактивную проверку событий безопасности
историю подтверждений
Технологии
AgentGuard объединяет:
Auth0
OAuth 2.0
Model Context Protocol
Python
FastMCP
Starlette
Supabase / PostgreSQL
Next.js
Human-in-the-loop authorizationПринцип проектирования
AgentGuard основан на простой идее:
Аутентификация ИИ-агента не должна означать, что у него есть неограниченные полномочия.
Аутентификация доказывает, кем является агент.
OAuth-скоупы определяют, какую категорию действий он может запрашивать.
Контекстная политика определяет, может ли это конкретное действие выполняться автономно.
Подтверждение человеком обеспечивает отдельную границу идентичности для решений с высоким риском.
Текущий охват
AgentGuard — это портфолио-прототип системы безопасности, а не производственная IAM-платформа.
Текущие ограничения намеренно включают:
демонстрационные правила политики определены в коде
машинные идентичности сопоставлены с демонстрационными ролями
MCP-бэкенд предназначен для контролируемого/локального развертывания
авторизация человека-администратора в настоящее время использует список разрешённых администраторов на уровне приложения
управление политикой ещё не доступно через плоскость управления
неизменяемость событий аудита не обеспечивается на уровне базы данных
распределённая блокировка для параллельного выполнения выходит за рамки текущей демонстрации
Эти границы намеренно задокументированы, а не скрыты.
Возможные расширения
Будущие версии могут добавить:
администрирование людей на основе ролей Auth0
политику как код
версионирование политики
реестр идентичностей агентов
федерацию идентичностей рабочих нагрузок
делегированную авторизацию
подтверждения с ограничением по времени
авторизацию на уровне ресурсов
истечение срока действия подтверждений
изоляцию на уровне организаций
подписанные события аудита
экспорт в SIEM
симуляцию политики
продакшн-развертывание MCP
дополнительные MCP-инструменты и серверы ресурсов
Связанный проект
Фронтенд AgentGuard:
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
- AlicenseNot gradedqualityDmaintenanceProvides a secure gRPC transport layer for the Model Context Protocol (MCP) with mutual TLS, token-based authentication, and fine-grained authorization. Includes comprehensive telemetry and a real-time visualization dashboard for monitoring AI model interactions and security events.1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enforces runtime governance on AI agent actions — file access, command execution, delegation chains, and permission escalation.MIT
- AlicenseNot gradedqualityCmaintenanceA governed, audited Model Context Protocol server that provides AI agents with secure, read-only access to a clinical knowledge base through least-privilege tools, policy validation, and append-only audit logging.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that provides a security gateway for AI agents, enforcing allow/confirm/deny policies on tool calls and requiring human approval for risky operations, with full audit logging.
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
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/haisamar/agentguard-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server