Apache Doris MCP Server treats the runtime catalog, schemas, safety policy, generated documentation, tests, and release artifacts as one public contract. A change is complete only when these sources remain aligned.
git clone https://github.com/apache/doris-mcp-server.git cd doris-mcp-server uv sync --frozen --group dev
Common commands:
uv run pytest -q -W error uv run ruff check . uv run mypy doris_mcp_server uv run bandit -q -c pyproject.toml -r doris_mcp_server doris_mcp_client uv lock --check uv build
Run a focused test first, then the full release gate. Do not use a successful unit test as proof that the Host/transport/Doris boundary works.
| Contract | Source |
|---|---|
| product version | doris_mcp_server/_version.py |
| domain and child definitions | doris_mcp_server/tools/domain_catalog.py |
| formal feature matrix | Doris feature/version registry modules |
| discovery/availability | domain_manifest.py, capability_detector.py |
| exact execution | domain_dispatcher.py, domain runtimes |
| operation authorization | auth/operation_policy.py and catalog policies |
| configuration | utils/config.py, .env.example |
| generated public catalog | docs/tool-registry.md |
| release history | CHANGELOG.md, release/migration docs |
Do not hand-edit docs/tool-registry.md. Regenerate it from the runtime catalog:
uv run python generate_tool_catalog.py uv run python generate_tool_catalog.py --check
Before adding or changing a child:
CHANGELOG.md in the same pull request.The current release contract is eight domains and fifty-five children. A change to those counts is intentional API work, not an incidental handler edit.
Use a custom provider when the capability belongs to an external business API or deployment-specific extension rather than the built-in Doris contract. Providers must:
doris_mcp_server.tool_providers entry point;MCP_TOOL_PROVIDERS;ToolRateLimit;README.md and README.zh-CN.md concise and structurally aligned.docs/<area>/ topic..zh-CN.md pairs with equivalent headings/meaning.test/tools/ — domain catalog, manifests, dispatcher, capabilities, runtimes.test/protocol/ — MCP transport, pagination, state, schemas, trace, errors.test/security/ and test/auth/ — authentication, authorization, secrets, SQL and data safety.test/deployment/ — dependencies, CI contract, packaging and coverage gates.uv run pytest -q -W error
Coverage floors include protocol, authentication, and core manager domains in addition to the repository-wide floor.
The real Doris tests are opt-in and must use an explicitly authorized test cluster/account. They exercise actual process transports and must perform zero management writes. Validate:
Never point destructive or unreviewed tests at a shared cluster.
CI checks out the pinned official MCP Conformance project, builds it, and runs the server-stateless scenario against the repository fixture. A local run must use the same pinned revision as CI; an arbitrary latest checkout is not release evidence.
uv build
Install the built wheel in a clean Python 3.12 environment, confirm runtime imports/CLI identity, and verify that development-only dependencies are absent from the runtime boundary.
CI must pass:
For changes that affect Doris execution, add real-cluster evidence in the PR without exposing credentials or private endpoints.
git status, staged diff, and author email before commit..env, test data, or generated runtime logs.CHANGELOG.md for every user-visible or release-engineering change.See 1.0 release notes and 1.0 migration.