Соберите MCP внутри A2A и выпустите систему
Теперь всё сходится в одну картину. Production-архитектура нашего примера использует A2A на границе самостоятельного Review Agent и MCP - внутри его runtime, для runbooks, CI-evidence и release-проверок. Снаружи координатор видит агента; внутри агент видит возможности. И каждый слой сохраняет собственные идентификаторы, authorization и failure-семантику.
Граница A2A проходит между Release Coordinator и Review Agent: Agent Card, SendMessage, состояния Task, input_required, Artifact. Команда Review Agent свободна менять внутреннюю реализацию, пока держит контракт. А внутри проходит граница MCP: Review Host читает ресурс runbook, читает снимок релиза, вызывает детерминированный review-tool - и каждый сервер имеет least privilege. Полный production-путь запроса проходит через обе границы по очереди.
- A2A submitted
- working
- MCP discovery
- MCP calls
- Validate
- Artifact
- completed
A2A request
authenticate coordinator
create durable Task
publish submitted/working
run bounded agent workflow
MCP discover allowed servers
read runbook://release-policy
read release://service/version
call review_release
validate + redact artifact
publish completed
persist audit + metricsЧтобы такую систему можно было отлаживать, критично не смешивать идентификаторы разных слоёв - у каждого своё назначение.
Поле · Назначение · Не смешивать с
- trace id - Сквозной observability; Authorization proof
- A2A taskId - Жизненный цикл делегации; MCP request id
- A2A contextId - Группа связанных conversations; HTTP session
- MCP JSON-RPC id - Correlation одного call; Доменный job id
- idempotency key - Защита side effect; Trace id
- actor/tenant - Security context; Model-provided metadata
Собрать финальный release gate целиком - с порогами по успешности, стоимости и латентности - можно в лаборатории.
Production release gate
Отмечено 0 из 9. До release остаются незакрытые условия.
И это не теория: companion-проект реально проходит проверку, и её результат зафиксирован.
Проверка · Результат 01.08.2026
- TypeScript - Strict compile,
skipLibCheck: false, безanyв source/tests - Tests - 14 passed, 0 failed
- MCP E2E - Modern era, 2 tools, 3 listed resources, 1 prompt, decision ready
- A2A E2E - Agent Card resolved; completed Task с Markdown/JSON artifact и input-required Task
- Network/model - Не требуется; reasoning намеренно детерминирован
Главный критерий, по которому судят зрелость такой архитектуры, - независимость границ.
Готовый критерий архитектуры. Удаление A2A-слоя не должно менять MCP capability schemas. Замена MCP-сервера не должна менять публичную семантику A2A skill. Если оба условия выполняются - границы действительно независимы, и систему можно развивать по частям.
И последнее - дисциплина, без которой книга по живым протоколам превращается в тыкву.
Перепроверяйте версии перед deploy. MCP и A2A активно развиваются. Держите protocol conformance tests и читайте официальный changelog при каждом обновлении SDK, даже если TypeScript-компиляция остаётся зелёной. Зелёный компайл не значит совместимый протокол.
На этом система собрана целиком - от выбора контракта до выпуска. Все технические утверждения книги сверены с первоисточниками; их полный список - в следующей главе.