Skip to main content
Glama
haisamar

AgentGuard MCP

by haisamar

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.

Примеры демонстрационных идентичностей:

Среда выполнения

Назначение

Предоставленные скоупы

Торговый агент

Операции с доходами

crm:read, crm:write, support:read

Финансовый агент

Финансовые операции

crm:read, finance:read, finance:refund

Административная среда выполнения

Административная автоматизация

agent:manage

Торговый агент не может выполнять возвраты только потому, что это может другой агент.

Слой авторизации проверяет скоупы, содержащиеся в 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
→ DENY

4. Подтверждение человеком

Чувствительные операции записываются в хранилище подтверждений и приостанавливаются.

Отдельно аутентифицированный человек может одобрить или отклонить запрос через панель управления 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:read

issue_refund

Запросить или выполнить возврат средств в зависимости от политики.

Требуемый скоуп:

finance:refund

Политика:

amount <= $500 → ALLOW
amount > $500  → APPROVAL_REQUIRED

list_pending_approvals

Выводит запросы на подтверждение, ожидающие рассмотрения.

Требуемый скоуп:

agent:manage

approve_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_at

audit_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.ps1

macOS/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:

https://github.com/haisamar/agentguard

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enforces runtime governance on AI agent actions — file access, command execution, delegation chains, and permission escalation.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP 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.

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/haisamar/agentguard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server