MCP server for the UK Companies House RESTful API
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"companies-house-mcp-2","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
[](https://github.com/release-art/ch-mcp/actions/workflows/release.yml) [](https://opensource.org/licenses/MIT) [](https://pypi.org/project/companies-house-mcp) # Companies House MCP Server A [Model Context Protocol](https://modelcontextprotocol.io/) server that exposes the UK [Companies House register](https://find-and-update.company-information.service.gov.uk/) to LLM clients as a set of read-only tools. Built on [FastMCP v3](https://gofastmcp.com/) and the [`ch-api`](https://github.com/release-art/ch-api) async client. ## Overview - **22 read-only tools** across five domains: search, companies, officers, PSCs (persons with significant control), and filings. - **Two transports**: HTTP (Starlette/uvicorn) for remote MCP clients, and stdio for local integrations. - **OAuth2 via Auth0**, with three modes: - `none` — no authentication (local dev / trusted-ingress only). - `remote` — JWT verification only (the MCP server trusts an upstream Auth0 tenant). - `proxy` — full OAuth proxy with dynamic client registration; tokens are persisted to Azure Blob Storage, encrypted with Fernet. - **Scope-based authorization**: tools tagged `ch_api:read` require the `ch-api:read` scope in the access token. Enforcement is per-tool, so `initialize` and `tools/list` remain reachable by unauthenticated clients. - **Structured responses**: Pydantic models synthesised by reflection from `ch-api` types. Every response carries a typed `refs` sub-object holding the resource IDs (company number, charge id, document id, …) extracted from the upstream `links` block — chain tool calls by feeding those IDs straight into the next tool's input. ## Tools | Module | Tools | |--------|-------| | [`search.py`](src/ch_mcp/server/search.py) | …
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.