How to deploy docs-mcp-server with Docker¶
Use this guide when you need a repeatable deployment and health validation loop.
Prerequisites¶
deployment.jsonexists in repo root- Docker daemon is running
- Dependencies installed via
uv sync
Step 1: Deploy container¶
online mode enables sync schedulers and starts two containers on a private
Docker network:
docs-mcp-server-multiruns the application and crawler.docs-mcp-browserruns one shared headless Chrome process. Its CDP port is not published to the host.
The deployment waits for the browser's /json/version endpoint before it
starts the application. Offline mode does not start the browser sidecar.
Step 2: Check health endpoint¶
You should see JSON status output including tenant counts and, in online mode,
infrastructure.browser.ready: true. Browser telemetry also reports active
leases, capacity, reconnects, cleanup failures, and owned targets/contexts.
Step 3: Trigger sync for selected tenants¶
Use --force for first-time or recovery sync.
Step 4: Build search segments (optional but recommended after sync)¶
Step 5: Validate search path¶
Verification checklist¶
- Health endpoint responds
- Target tenants sync successfully
- Search test returns ranked results
Troubleshooting¶
Deployment script fails quickly¶
- Validate config JSON syntax:
- Confirm required files/paths referenced by tenants exist.
Health endpoint shows tenant issues¶
- Inspect container logs:
- Re-run sync for failing tenant with
--force.
Browser health is degraded¶
- Check both containers:
- Inspect the browser health check and application logs:
- Redeploy both owners together:
Search is slow on first query¶
- First query can be cold-start behavior while indexes load.
- Pre-build with
trigger_all_indexing.pyfor critical tenants.
Why this workflow¶
Deploy → health check → sync → optional indexing → search verification gives a deterministic operational loop and isolates failures by stage.