Цей документ є одночасно:
- master-структурою для створення PRD у продукті;
- конкретним PRD для
eMCPяк офіційного MCP platform layer в Evolution CMS.
Нормативна ієрархія:
PRD.mdвизначає продуктову рамку, цілі, scope, acceptance, метрики.SPEC.mdвизначає технічні MUST/SHOULD контракти реалізації.TOOLSET.mdвизначає публічний контракт tool names/params/responses/errors.
Підтверджений стан у workspace:
make demo-allпроходить end-to-end уdemo.- Інсталяційний pipeline (
install/publish/migrate) проходить стабільно. php artisan emcp:test(initialize,tools/list) -> PASS.- Runtime HTTP integration (
tests/Integration/RuntimeIntegrationHttpTest.php) -> PASS. - Підтверджено API шлях читання даних з БД через MCP (
evo.content.search,evo.content.root_tree,evo.content.get). - Автоматично генерується
demo/logs.mdз деталями токена, MCP запитів/відповідей, manual-check командами і негативними probe-кейсами (401/403/413/415/409/429,evo.model.get(User)sanity). demo/logs.mdдодатково включає локальнийsTasklifecycle proof (queued -> completed) черезphp artisan stask:worker.- Додано RC-hardening test pack у
composer run test: unit (ScopePolicy,ServerRegistry), async failover behavior, SiteContent tree/TV contracts, security guardrails, docs/config/commands consistency, upstream adapter smoke. - Додано streaming policy hardening для PHP-FPM/proxy (
text/event-stream,Cache-Control,X-Accel-Buffering) і тести покриття. - Додано migration matrix automation (
sqlite/mysql/pgsql) у CI та локальний wrapperscripts/migration_matrix_check.sh. - Додано clean-install validation script (
scripts/clean_install_validation.sh) і інтеграцію вdemo-runtime-proof. - Додано reproducible simulation benchmark suite + leaderboard artifacts (
scripts/benchmark/*,build/benchmarks/*). - Додано optional advanced tree tools (
neighbors,prev/next siblings,children/siblings range) з контрактними та runtime перевірками. - Додано secret-controlled live hardening probes у
runtime-integration(negative checks, model sanity, optionalsTasklifecycle з external-worker режимом).
Залишок до RC-1 (core platform hardening):
- branch protection required-check enforcement для CI runtime jobs (
demo-runtime-proof,runtime-integration) наrelease/*; - live async checks для
sTask(progress/result/retry/failover); - live stream/rate-limit операційні перевірки на зовнішньому target infra;
- cut first RC tag після approval/checklist gate.
- Цільовий пакет:
eMCPу/Users/dmi3yy/PhpstormProjects/Extras/eMCP. - Upstream MCP SDK:
/Users/dmi3yy/PhpstormProjects/Extras/LaravelMcp(laravel/mcp). - Snapshot upstream на 2026-02-17:
v0.5.9; протоколи2025-11-25,2025-06-18,2025-03-26,2024-11-05. - Суміжні пакети інтеграції:
eAi(thin-wrapper pattern),sApi(JWT/API kernel),sTask(async queue/workers),dAi(manager-side AI consumer).- Операційні/контрактні референси екосистеми:
LaravelAi(upstream SDK packaging style),ColimaOpenclaw(contract discipline: deterministic gates, doc-sync, operability-first checks).- Доменна база Evo:
SiteContent(closure table + TVs), template/tv/snippet/plugin/module/category/user/permissions моделі.
Формальний статус:
eMCPє official platform layer для MCP в Evolution CMS.eMCPпідпорядковується SemVer і BC policy.- Підтримуване вікно сумісності upstream:
laravel/mcp ^0.5.x.
Потрібен стабільний enterprise-рівневий MCP шар для Evo, який:
- не форкає upstream
laravel/mcp; - працює в Evo runtime без Laravel app skeleton;
- дає контроль доступу (ACL/scopes/roles), аудит, rate limits, idempotency;
- дає публічний contract-first toolset для дерева документів і Evo-моделей;
- дозволяє будувати керовані orchestration-процеси поверх MCP без прив'язки до однієї концепції.
Наслідки без вирішення:
- нестабільні інтеграції пакетів;
- розрив між API-контрактом і реалізацією;
- високий ризик orchestration/policy drift для розширених сценаріїв;
- складна інтеграція dAi/eAi/sApi/sTask без єдиного execution contract.
Стандартизувати MCP інтеграцію в Evolution CMS як довгострокову платформу з прогнозованою сумісністю.
Побудувати eMCP як contract-first інтеграційний шар:
- Protocol/Adapter/API/Async розділені чіткими boundary;
TOOLSET.mdє канонічним data-contract;evo.content.*таevo.model.*дають стабільні read-профілі;- optional async через
sTaskпідтримує traceable Intent→Task→Workflow.
initialize+tools/list+ canonicaltools/callсумісні з MCP клієнтами:>= 99.5%успішних запитів на smoke/control наборах.evo.content.search/descendantsна контрольних наборах повертають валідну структуру дерева і TV-дані:100%відповідність golden fixtures.- Доля async задач через
sTask, що завершуються без ручного ретраю:>= 95%. - Critical secret leakage у логах/відповідях:
0. - Для orchestration сценаріїв:
policy violationsу workflow не вище погодженого baseline.
- Пакет
eMCP(ServiceProvider, plugin, config, routes, lang, migrations, middleware, tools). - Manager access layer (ACL
emcp) і API access layer (sApiscopes). - Optional async layer через
sTask(emcp_dispatch, failover, idempotency). - Публічний domain toolset:
evo.content.*для tree/TV profile,evo.model.list|getдля allowlisted model catalog.- Contract-first валідація structured payload (без raw DSL/SQL fragments).
- Audit/logging/redaction/rate limit/limits governance.
- Повний GUI-конструктор MCP schema/tool definitions.
- Marketplace MCP серверів.
- Повна standalone OAuth authorization server реалізація.
- Автоматичне ввімкнення write-tools без explicit opt-in.
- Risk-first гейти: Gate A -> Gate B -> Gate C -> Gate D -> Gate E.
- MVP v0.1 обмежений:
web+manager+initialize/tools:list/405. - Жодної обов'язкової залежності на
Passportдля boot у clean Evo.
- Сумісність з
LaravelMcp: протокольна поведінка (GET=405,MCP-Session-Id, JSON-RPC) не ламається. - Сумісність з
sApi: зовнішній доступ реалізується через route-provider + JWT scopes. - Сумісність з
sTask: async не створює власного queue-framework, а використовує worker/task модель. - Сумісність з
eAi/dAi: eMCP дає стабільний tool contract для споживачів, без прив'язки до конкретної orchestration стратегії.
Core Platform Contract(required for eMCP v1 compliance):- transport/protocol parity, registry, ACL/scopes/rate/limits, canonical
evo.content.*+evo.model.*, BC/SemVer discipline. Orchestration Extension Profile(optional, post-MVP):- Intent/Policy/Evidence/Approval/Simulation layers for higher-level consumers.
- Нормативний маркер: orchestration entities are NOT required for eMCP core compliance.
- Не додавати orchestration-specific persistence (
Intent,PolicyCheck,EvidenceTrace,SimulationEpisode) у core runtime. - Не додавати non-deterministic benchmark workloads у core до завершення RC-1 (дозволений лише reproducible simulation baseline evidence).
- Не ламати canonical domain toolset; optional additive tools допускаються тільки без breaking-змін.
McpServer(handle, transport, policy overrides).ToolContract(name, args schema, response schema, error mapping, toolsetVersion).ActorContext(user/service actor, scopes, role, trace).PolicyGuard(ACL/scopes/rate/limits/denylist).AuditEvent(request, intent, outcome, redaction-safe fields).
SiteContentяк вузол дерева.TVяк розширення запису (with_tvs,tv_filters,tv_order,tags_data).ClosureRelation(ancestors/descendants/depth/neighbors semantics).ModelCatalogEntity(allowlisted Evo models + field projection policy).
Intent(що має бути виконано, з versioned policy context).EvidenceTrace(які факти/контекст/правила застосовані).Task(керована дія у workflow, включно з async).WorkflowState(draft/validated/queued/running/done/failed/rejected).PolicyCheckResult(allow/deny + violated rules).ApprovalGate(approve/reject/escalate).SimulationEpisodeтаStrategyScoreдля benchmark/leaderboard.
Request -> Validate -> Authorize -> Execute -> Map -> Paginate -> Respond -> Audit.
received->validated->authorized->executed->responded.- Будь-який fail ->
rejected|failedз traceable error class.
Intent -> PolicyCheck -> Task(s) -> Workflow -> Audit/Evidence -> ApprovalGate (за правилом).
- Tree traversal лише через структуровані selectors (
ancestors/descendants/children/siblings/...). - TV-фільтрація/сортування через typed structured payload, не через raw client DSL.
- Як інтегратор, я підключаю
eMCPі отримую сумісний MCP endpoint без Laravel skeleton. - Як адміністратор, я керую доступом через
emcp+mcp:*scopes і бачу audit trail. - Як dAi/eAi агент, я читаю дерево
SiteContentі TV-поля через стабільні tools без прямого SQL. - Як SecOps, я гарантую redaction секретів і deny-by-default політику.
- Як власник платформи, я використовую eMCP як нейтральний execution-contract для різних orchestration підходів.
- Як RnD команда, я порівнюю стратегії через simulation episodes і leaderboard метрики.
- Кожен tool-call реалізує pipeline
validate -> authorize -> query -> map -> paginate. evo.content.searchє референсним сценарієм для tree + TV + pagination.
dispatchстворює task payload із actor/context/trace/idempotency.- Worker
emcp_dispatchвиконує виклик. - Результат і прогрес фіксуються у task/result store.
- Контекст збирається з документа, дерева, атрибутів, прав.
- Policy layer визначає
valid_actions. - Оркестратор (LLM або rule-based strategy) формує
Intentлише в межах valid actions. - Intent матеріалізується у
Task(s). - Кожен крок має evidence trace і статус workflow.
- Набір контрольних епізодів (incident/SLA/regulatory/resource conflict/risk zone).
- Запуск baseline + strategy A/B/C на тих самих епізодах.
- Обчислення composite score або Elo/TrueSkill.
- Публікація leaderboard і drift-порівняння.
- Нова стратегічна ініціатива.
- Падіння ключових метрик або SLA.
- Запит від бізнесу/регулятора.
initialize,tools/list,tools/call,dispatch.- Policy violations або idempotency conflict.
- Queue failover events, worker health degradation.
- Вхід нової policy версії.
- Detection policy drift або аномального рішення strategy.
- Approval gate approve/reject/escalate.
- Сумісність: Evolution CMS
^3.5.2, PHP^8.3, Illuminate12.*. - Заборона прямої залежності на
laravel/framework/illuminate/foundation. - Безпека: deny-by-default, redaction, allowlist/denylist.
- Продуктивність: bounded
depth/limit/offset, bounded result size, pagination required. - Масштабованість: async через
sTask, deterministic failover. - Спостережуваність:
trace_id,task_id,request_idу кожному ключовому журналі/події. - Тестованість: golden fixtures + policy tests + integrity checks.
- UX/DX: стабільні помилки, чіткі коди, передбачуваний контракт без прихованої магії.
- AC1: Пакет встановлюється і завантажується в clean Evo без fatals.
- AC2: Publish створює
core/custom/config/mcp.phpіcore/custom/config/cms/settings/eMCP.php. - AC3:
GETна MCP endpoint повертає405;POSTобробляє JSON-RPC. - AC4:
initializeповертає валідний MCP handshake +MCP-Session-Id. - AC5:
tools/listпрацює стабільно для активного server handle. - AC6: Manager route без
emcppermission повертає403.
- AC7: API route без потрібного scope повертає
401/403. - AC8:
mcp:readдозволяє list/read, але блокуєtools/callбезmcp:call. - AC9: Passport не використовується і не є необхідним для роботи пакета.
- AC10:
make:mcp-*іmcp:startпрацюють у Evo runtime. - AC11: Worker
emcp_dispatchавто-реєструється, якщоsTaskвстановлений. - AC12: Async payload містить actor/context/trace/idempotency поля.
- AC13:
queue.failover=syncдає синхронний fallback при відсутностіsTask. - AC14: Локалізації
en/uk/ruпокривають manager/error/permissions ключі. - AC15: Audit log не містить raw bearer token та секретів.
- AC16:
evo.content.search|get|root_tree|descendants|ancestors|children|siblingsповертають валідні дані наSiteContent. - AC17:
tv_filters/tv_orderпрацюють тільки з allowlisted operators/casts. - AC18: Raw
tvFilterDSL у клієнтському payload відхиляється. - AC19:
evo.model.list|getне віддають чутливі поля. - AC20: Write-tools disabled-by-default і вимагають explicit allow +
emcp_manage+mcp:admin. - AC21:
initializeповертаєserverInfo.platform/platformVersion+capabilities.evo.toolsetVersion. - AC22: Ecosystem package може підключити server/tool/policy без змін ядра eMCP.
- AC23: Per-server overrides (
scope_map,limits,rate_limit,security.deny_tools) реально впливають на runtime. Core compliance boundary: - AC16-AC23 are mandatory for core platform compliance.
- AC24: Intent→Task workflow зберігає trace/evidence/policy-check статуси.
- AC25: Approval gate може approve/reject/escalate і це аудитується.
- AC26: Simulation benchmark повторюваний і порівнює baseline + альтернативні стратегії. Extension compliance boundary:
- AC24-AC26 belong to orchestration extension profile and are not required for eMCP core compliance.
- Success rate MCP базових викликів (
initialize,tools/list, canonicaltools/call). - P95 latency для
evo.content.searchіevo.content.descendants. - Async completion rate / retry rate / failover rate.
- Кількість policy violation блокувань.
- Кількість секретів, знайдених у логах/відповідях (ціль:
0).
- Time-to-decision і time-to-resolution.
- Частка задач, повернутих з аудиту як некоректні.
- Drift-detection lead time (на скільки раніше система помічає policy drift).
- Порівняння strategy score відносно baseline на контрольному наборі епізодів.
Канонічна структура для будь-якого PRD:
- Контекст
- Проблема
- Ціль
- Scope
- Сутності
- Взаємодія
- User Stories
- Воркфлоу
- Тригери
- Нефункціональні вимоги
- Acceptance Criteria
- Метрики
Головний ланцюг мислення продуктом:
Проблема -> Намір -> Механіка -> Результат.
Чотири причини (why this shape):
- Матеріальна: з яких блоків складається система.
- Формальна: як блоки організовані у стани/переходи.
- Рушійна: які події запускають систему.
- Цільова: яку вимірювану цінність система створює.
Відповідність "COBOL-style clarity" для eMCP:
DATA DIVISION->Contracts/Data:TOOLSET.mdяк публічний data-contract;- typed DTO/validation contracts для аргументів/відповідей.
PROCEDURE DIVISION->Procedures/Handlers:- 1 tool = 1 handler з pipeline
validate -> authorize -> query -> map -> paginate. ENVIRONMENT DIVISION->Runtime/Config:- runtime guards: ACL/scopes/rate/limits/redaction/idempotency/failover.
FILE SECTION->Mappers:- стабільні mapper'и для
SiteContent+ TV projection + tree projection.
Прийняті рішення для v1:
- canonical джерело контракту:
TOOLSET.md+ typed PHP validators у коді; - eMCP лишається adapter-first платформою;
- будь-яка важка orchestration-логіка ізолюється у workflow/policy шар, не в transport layer;
- default шлях даних: Eloquent scopes; для hot-path допустимий query builder optimization без зміни публічного контракту.
Для узгодженості зі SPEC.md і TASKS.md фіксуються ID вимог.
- FR1: Install via
php artisan package:installrequire evolution-cms/emcp "*". - FR2: Publish config to
core/custom/config/mcp.phpandcore/custom/config/cms/settings/eMCP.php. - FR3: Config-first MCP server registration on boot.
- FR4: Support
webtransport (MVP),localtransport (post-MVP). - FR5:
MCP-Session-Idpassthrough mandatory; streaming only Gate B+. - FR6: Manager access requires Evo permission
emcp. - FR7: API access via
sApi+ scope checks. - FR8: Scope map minimum:
mcp:read,mcp:call,mcp:admin. - FR9: Passport не входить у runtime/auth модель eMCP.
- FR10:
sTaskworkeremcp_dispatchfor async calls. - FR11: Async payload includes actor/context/audit fields.
- FR12: Safe audit log with redaction.
- FR13: Rate limits + payload size limits.
- FR14: Idempotency for async dispatch with
409conflict semantics. - FR15: Multilingual manager/error/permissions keys (
en/uk/ru).
- FR16: Canonical
evo.content.*tool profile (search/get/root_tree/descendants/ancestors/children/siblings). - FR17: TV support via structured params (
with_tvs,tv_filters,tv_order,tags_data). - FR18: Enforced limits (
depth,limit,offset) and allowlisted sort columns. - FR19: Strict operator/cast validation; no raw SQL/DSL injection surface.
- FR20: Read-only
evo.model.list|getwith model allowlist. - FR21: Sensitive field masking/exclusion for protected entities.
- FR22: Write-tools disabled-by-default and require explicit multi-gate authorization.
- FR23: Advanced closure-table tools as optional additive profile (
neighbors,prev/next,*_range). - FR24:
initializereturns mandatory platform metadata. - FR25: Official extension points for ecosystem packages.
- FR26: Per-server runtime policy overrides are supported.
- Move/Copy/Delete обробляються транзакційно.
- Перевіряються інваріанти дерева: відсутність циклів, коректний
depth, валідні ancestor/descendant зв'язки. - Є регулярний integrity check/healthcheck і алерти при дрейфі.
- Structured TV policy не допускає raw DSL у payload.
- Є performance-профілі для hot TV filters/order.
- Для heavy cases є стратегія оптимізації (індекси/materialized/denormalized projections).
- Чітко визначено модель прав (RBAC/ABAC/hybrid) і точку enforcement (query layer/global scope/middleware/service).
- Є policy tests: рішення не може пройти, якщо порушено rule.
- Є benchmark suite сценаріїв (інцидент, регуляторика, SLA, конфлікти пріоритетів, дефіцит ресурсів).
- Кожен сценарій має expected allowed-actions і forbidden-actions.
- Є leaderboard стратегій (baseline, LLM planner, LLM+retrieval, LLM+policy memory) з відтворюваними метриками.
- eMCP версіонується за SemVer.
evo.content.*іevo.model.*є публічними stable namespace.- Перейменування/видалення canonical tools можливе тільки в
MAJOR. - Зміна error semantics вимагає
MAJOR. - Додавання нових optional params/tools дозволене в
MINOR. - Заборонено робити optional -> required у
MINOR. - Для breaking змін обов'язковий deprecation цикл мінімум один
MINOR.
PRD.md,SPEC.md,TOOLSET.mdузгоджені без контрактних конфліктів.- MVP Gate A проходить end-to-end smoke (
initialize/tools:list/405/ACL). - Domain contract покритий golden fixtures і базовими security tests.
- Async/policy/orchestration гейти мають формалізовані AC і метрики.
- Чи виділяємо окрему таблицю
Intentу v1, чи запускаємо через payloadsTask+ audit schema без нової таблиці. - Яка стратегія benchmark даних пріоритетна першою: історичний replay чи синтетичні сценарії.
- Які саме policy dimensions входять у перший обов'язковий orchestration score.