Confirmed problem
The MCP server processes requests through one serial promise chain. A long campaign generation can block ping, tools/list, provider status, cancellation, and every other request until generation finishes.
Scope
- Remove global serialization while preserving safe per-campaign ordering.
- Run independent read/status/protocol requests concurrently.
- Model long generation as trackable work with status and cancellation.
- Add bounded worker/concurrency controls rather than unlimited parallel execution.
- Ensure one failed request cannot poison the request processor.
Acceptance criteria
Required verification
- Concurrent JSON-RPC test with one long generation and multiple quick requests.
- Cancellation-during-generation test.
- Failure-isolation and ordering tests.
- External MCP client verification.
Dependency
Coordinate with SF-006 and SF-036 so web and MCP use the same generation job model.
Confirmed problem
The MCP server processes requests through one serial promise chain. A long campaign generation can block ping, tools/list, provider status, cancellation, and every other request until generation finishes.
Scope
Acceptance criteria
ping,tools/list, status, and cancellation respond while a campaign is generating.Required verification
Dependency
Coordinate with SF-006 and SF-036 so web and MCP use the same generation job model.