Modules
Per-backend behaviours used by AtpMcp for dependency injection.
Long-lived Isabelle session shared across every prove_isabelle and
query_backend backend: "isabelle" call for the lifetime of the MCP
server.
GenServer that drives the MCP protocol loop: owns stdout, runs each
tools/call in its own Task, and handles notifications/cancelled.