Skip to main content
Glama
jcorrego

mcp-policy-gateway

by jcorrego

mcp-policy-gateway

Референсная реализация MCP-сервера с политиками в приоритете. Она показывает, как предоставить агенту полезные инструменты, не позволяя модели самостоятельно принимать решения об авторизации, пересекать границы тенантов, раскрывать прямые PII или выполнять высокорисковые изменения.

Это портфолио/референсная реализация. Все записи синтетические; это не производственное программное обеспечение, и оно не претендует на интеграцию с банком, платёжным процессором или клиентской системой.

Зачем это нужно

Обычная MCP-демонстрация открывает модели доступ к сырому API и рассматривает успешный вызов инструмента как модель безопасности. Этот проект придерживается противоположной позиции:

  • Политика детерминирована. Модель не может авторизовать саму себя.

  • Граница тенанта обеспечивается на стороне сервера. Аргумент инструмента не может переключить тенант.

  • Вывод инструментов минимизирован. Сводка по счёту намеренно не содержит имя владельца и email.

  • Высокорисковые действия останавливаются на шлюзе одобрения. Запрос на заморозку не приводит к изменению состояния.

  • Каждое решение аудируемо. Результаты «разрешено», «отказано» и «требуется одобрение» создают структурированные события аудита.

  • Запросы на изменение требуют указания причины и ключа идемпотентности.

Related MCP server: scopeguard-mcp

Архитектура

MCP client / agent
       │ tool call
       ▼
FastMCP stdio adapter
       │ verified principal (demo fixture here)
       ▼
GatewayService ──► PolicyEngine ──► allow / deny / require approval
       │                 │
       ▼                 ▼
synthetic domain data   structured audit event

В production-развёртывании субъект доступа должен выводиться из проверенной идентичности/сессии вне контекста модели. Никогда не принимайте tenant_id, роли или области доступа из аргумента инструмента или вывода модели.

Инструменты

Инструмент

Риск

Поведение

get_case(case_id)

Чтение

Разрешает только дела в тенанте вызывающей стороны с нужной областью доступа.

get_account_summary(account_id)

Чтение

Возвращает минимизированную сводку; никогда не возвращает прямые PII.

request_account_freeze(...)

Изменение

Требует область доступа, причину и ключ идемпотентности, затем всегда требует одобрения человека.

Быстрый старт

Требуется Python 3.11+.

python -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/pytest
.venv/bin/ruff check .

Запустите как MCP stdio-сервер:

.venv/bin/mcp-policy-gateway

Адаптер использует намеренно фиксированный демонстрационный субъект доступа для локального изучения. Реальная передача идентичности намеренно описана как вопрос production-интеграции, а не имитируется здесь.

Продемонстрированные меры защиты от злоупотреблений

Тесты доказывают, что шлюз:

  1. отказывает агенту из tenant_red при попытке прочитать данные tenant_blue;

  2. отклоняет вызов инструмента без требуемой области доступа;

  3. не возвращает имя владельца или email через инструмент сводки;

  4. возвращает require_approval вместо изменения состояния счёта; и

  5. отклоняет запросы, изменяющие состояние, в которых отсутствует причина или ключ идемпотентности.

Модель угроз и не-цели

См. THREAT_MODEL.md. Замысел намеренно узкий: он демонстрирует границу политик вокруг MCP-инструментов, а не полную инфраструктуру идентичности, долговременное хранилище аудита, управление секретами или платёжную/учётную систему.

Описание для собеседования

Краткий способ объяснить проект:

Я спроектировал границу MCP так, чтобы модель могла анализировать безопасные данные в рамках своей области доступа, но не могла принимать решения о доступе или выполнять высокорисковые действия. Авторизация детерминирована, изоляция тенантов обеспечивается на стороне сервера, поверхность инструментов минимизирует PII, а чувствительные изменения завершаются на аудируемом шлюзе одобрения человеком.

Разработка

.venv/bin/pytest
.venv/bin/ruff check .

CI запускает обе проверки при каждом push и pull request.

Лицензия

MIT. См. LICENSE.

A
license - permissive license
A
quality
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

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/jcorrego/mcp-policy-gateway'

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