Skip to main content
Glama
marvinjbb

agent-mcp-workflow-platform

by marvinjbb

Платформа агентного рабочего процесса и MCP

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

Обзор

Агентные рабочие процессы вводят риски, выходящие за рамки обычных API запросов/ответов: вывод внешних инструментов может быть враждебным, повторные попытки могут дублировать побочные эффекты, утверждения могут устареть, а успешный ответ инструмента может не отражать сохраненное состояние.

Этот проект реализует намеренно ограниченный рабочий процесс реагирования на инциденты, ориентированный на эти режимы сбоев. Детерминированный планировщик обнаруживает и вызывает утвержденные инструменты чтения через протокол контекста модели (MCP), предлагает тикет, приостанавливается для утверждения человеком, связывает это утверждение с дайджестом действия SHA-256, выполняет идемпотентную запись в базу данных и проверяет сохраненный результат. Он не использует LLM; основное внимание уделяется надежной оркестровке и границам контроля.

Related MCP server: OpenXNet MCP Server

Ключевые особенности

  • Обнаружение и вызовы MCP-инструментов через JSON-RPC stdio

  • Отдельный MCP-сервер только для чтения с инструментами service-status и runbook-search

  • Разрешительный список на уровне приложения, независимый от обнаружения MCP-инструментов

  • Явный конечный автомат рабочего процесса с контролем бюджета шагов

  • Утверждение или отклонение человеком перед ответственной записью

  • Привязка утверждения к полному предложенному действию через дайджест SHA-256

  • Стабильные ключи идемпотентности, предотвращающие создание дублирующих тикетов при повторных попытках

  • Независимая проверка после записи с помощью SQLite

  • Долговечные запуски, утверждения, тикеты и упорядоченные аудиторские события

  • FastAPI-эндпоинты с аутентификацией Bearer, CLI-рабочие процессы, CI и детерминированные тесты

Архитектура

flowchart LR
    C[API Client] --> A[FastAPI]
    A --> W[Workflow Service]
    W --> P[Deterministic Planner]
    W --> M[MCP Stdio Client]
    M --> S[Read-Only MCP Server]
    W --> D[(SQLite Store)]
    H[Human Approver] --> A
    A --> W
    W --> T[Idempotent Ticket Write]
    T --> D
    D --> V[Verification]
    V --> W

MCP-пир может предоставлять наблюдения, но не имеет прав на запись. Создание тикета остается внутри приложения и не может произойти, пока представленный хеш утверждения не совпадет с текущим предложением.

Конечный автомат рабочего процесса

created -> gathering -> awaiting_approval -> executing -> verifying -> completed
                |              |               |            |
                v              v               v            v
              failed        cancelled        failed       failed
                                                 |
                                                 `-- resume with matching approval

API

Метод

Endpoint

Назначение

GET

/health

Сообщить о работоспособности сервиса

GET

/v1/tools

Обнаружить инструменты чтения MCP-сервера

POST

/v1/runs

Собрать доказательства и создать предложение, готовое к утверждению

GET

/v1/runs/{run_id}

Прочитать долговечное состояние рабочего процесса

GET

/v1/runs/{run_id}/events

Прочитать упорядоченный аудиторский след

POST

/v1/runs/{run_id}/approval

Утвердить или отклонить точный хеш действия

POST

/v1/runs/{run_id}/resume

Повторить неудачный запуск с существующим соответствующим утверждением

Все эндпоинты /v1 требуют Authorization: Bearer <AGENT_API_TOKEN>.

Технологический стек

Технология

Назначение

Python 3.12

Типизированный рабочий процесс, MCP-клиент/сервер и логика сохранения

FastAPI / Uvicorn

Аутентифицированный API рабочего процесса и документация OpenAPI

Pydantic / pydantic-settings

Контракты рабочего процесса и конфигурация окружения

SQLite

Долговечные запуски, утверждения, тикеты и аудиторские события

JSON-RPC / MCP

Обнаружение инструментов и вызов инструментов только для чтения через stdio

Pytest / HTTPX

Тесты рабочего процесса, MCP, сохранения и API

Ruff / mypy

Линтинг и статическая проверка типов

GitHub Actions

Автоматизированный конвейер линтинга, проверки типов и тестирования

Как это работает

  1. Клиент создает запуск для сервиса и сообщенного симптома.

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

  3. Вывод инструментов сохраняется как ненадежное доказательство и никогда не интерпретируется как инструкции рабочего процесса.

  4. Приложение создает одно предложенное действие тикета, стабильный ключ идемпотентности и канонический хеш действия SHA-256.

  5. Рабочий процесс сохраняет состояние awaiting_approval и возвращается без выполнения записи.

  6. Человек отправляет утверждение или отклонение для точного хеша. Измененные или устаревшие предложения отклоняются с HTTP 409.

  7. Утвержденное действие создает тикет идемпотентно, считывает его обратно из SQLite и помечает запуск завершенным только после проверки.

  8. Если выполнение завершается неудачей после утверждения, /resume может безопасно повторить попытку, так как ключ идемпотентности остается стабильным.

Инженерные решения

  • Обнаружение не дает полномочий. Рабочий процесс пересекает результаты MCP с жестко заданным разрешительным списком чтения, поэтому пир не может получить разрешение, рекламируя другой инструмент.

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

  • Утверждение адресуется по содержимому. Канонический JSON и SHA-256 привязывают утверждение к каждому полю предложенного действия и предотвращают подмену полезной нагрузки.

  • Записи идемпотентны и проверены. Уникальный ключ идемпотентности обрабатывает неоднозначность повторных попыток, а отдельное чтение подтверждает сохраненную запись.

  • Состояние пересекает границы побочных эффектов долговечно. Статус и аудиторские события записываются до и после утверждения, выполнения, проверки, сбоя и завершения.

  • Планировщик намеренно детерминирован. Это сохраняет модель безопасности проверяемой, сохраняя заменяемую границу планировщика для будущего использования оцениваемой модели.

Структура проекта

agent-mcp-workflow-platform/
|-- src/agent_platform/
|   |-- workflow.py          # State machine, planner, approval, execution, verification
|   |-- tools.py             # MCP stdio client and deterministic test client
|   |-- mcp_server.py        # Local read-only MCP server
|   |-- database.py          # SQLite schema and durable workflow store
|   |-- models.py            # Typed run, action, approval, event, and tool contracts
|   |-- api.py               # Authenticated FastAPI endpoints
|   |-- settings.py          # Environment-based configuration
|   `-- cli.py               # Database, MCP discovery, demo, and server commands
|-- tests/                   # Workflow safety, retry, MCP, and API tests
|-- docs/                    # Architecture and API reference
|-- .github/workflows/ci.yml
|-- SECURITY.md
|-- CONTRIBUTING.md
`-- pyproject.toml

Начало работы

Предварительное требование: Python 3.12+.

cd agent-mcp-workflow-platform
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
Copy-Item .env.example .env
agent-workflow init-db
agent-workflow mcp-tools
agent-workflow serve

API работает по адресу http://127.0.0.1:8000; интерактивная документация доступна по адресу /docs.

Пример использования

Создать запуск:

curl -X POST http://127.0.0.1:8000/v1/runs \
  -H "Authorization: Bearer change-me" \
  -H "Content-Type: application/json" \
  -d '{"service":"payments-api","symptom":"Elevated 5xx responses"}'

Ответ содержит ID запуска, полное предложенное действие и action_hash. После их просмотра утвердите это точное действие:

curl -X POST http://127.0.0.1:8000/v1/runs/RUN_ID/approval \
  -H "Authorization: Bearer change-me" \
  -H "Content-Type: application/json" \
  -d '{"approved":true,"action_hash":"HASH_FROM_PROPOSAL"}'

Просмотрите воспроизводимую историю событий:

curl http://127.0.0.1:8000/v1/runs/RUN_ID/events \
  -H "Authorization: Bearer change-me"

Тестирование

pytest
ruff check .
mypy

Набор проверяет аутентификацию, обнаружение и вызовы MCP, отклонение несоответствия утверждения, поведение при отклонении, обработку ненадежного вывода, ограничения вывода и шагов, предотвращение дублирования выполнения, идемпотентное создание тикетов, восстановление после сбоев, независимую проверку и упорядоченную историю аудита.

Что демонстрирует этот проект

  • Долговечный дизайн агентского рабочего процесса и конечного автомата

  • Интеграция MCP и границы процессов JSON-RPC

  • Контроль утверждения с участием человека для ответственных действий

  • Идемпотентность, восстановление после сбоев и проверка постусловий

  • Обработка ненадежного вывода инструментов с учетом безопасности

  • Типизированный API и дизайн сохранения в SQLite

  • Автоматизированное тестирование и контроль качества на основе CI

План развития

  • Заменить токен Bearer для разработки на аутентификацию OIDC и авторизацию на основе ролей

  • Подключить границу записи к реальному провайдеру тикетов через идемпотентный адаптер

  • Перенести выполнение на долговечные фоновые рабочие процессы с контролем параллелизма

  • Добавить метрики, трассировку, структурированные операционные журналы и оповещения

  • Оценить LLM-планировщик по сравнению с детерминированным базовым уровнем, прежде чем предоставлять ему ограниченную ответственность за планирование

См. Архитектура, Справочник API и Политика безопасности для получения дополнительной информации.

F
license - not found
-
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
    -
    quality
    C
    maintenance
    MCP server for investigating cloud incidents and managing approvals. Provides read-only tools to list incidents, investigate incidents, and list approvals, keeping remediation behind human approval.
    MIT
  • F
    license
    -
    quality
    B
    maintenance
    Provides a secure MCP boundary for AI agents, intercepting and validating tool calls, redacting secrets, and requiring human approval for sensitive actions with a tamper-evident audit trail.

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/marvinjbb/agent-mcp-workflow-platform'

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