MCP Hub
Back to servers

UK Due Diligence

UK due diligence — Companies House, Charity Commission, Land Registry, Gazette, HMRC VAT

Registry
Updated
Apr 1, 2026

uk-due-diligence-mcp

Nine tools across five UK public registers. Zero paywalls. All official APIs.

Give an agent a company name and it pulls corporate status, filing compliance, director networks, beneficial ownership chains, insolvency notices, VAT validation, and property transactions.

Every data source is a legally-mandated register with a free official API.

PyPI


Data Sources

RegisterAPIAuth
Companies Houseapi.company-information.service.gov.ukAPI key (free)
Charity Commissionapi.charitycommission.gov.ukAPI key (free)
HMLR Land Registrylandregistry.data.gov.uk (SPARQL + REST)None
The Gazettethegazette.co.uk/all-notices (Linked Data)None
HMRC VATapi.service.hmrc.gov.ukNone

Tools

ToolRegisterDescription
company_searchCompanies HouseSearch by name/keyword with status/type filters
company_profileCompanies HouseFull profile: status, filing compliance, charges
company_officersCompanies HouseDirectors with high-appointment-count risk flag
company_pscCompanies HouseBeneficial owners, PSC chain, offshore flags
charity_searchCharity CommissionSearch by name, filter by registration status
charity_profileCharity CommissionFull record: trustees, finances, governing doc
land_title_searchHMLRProperty ownership via SPARQL PPI query
gazette_insolvencyThe GazetteCorporate insolvency notices (codes 2441-2460)
vat_validateHMRC VATTrading name + address as registered for VAT

Setup

Install from PyPI

pip install uk-due-diligence-mcp

API Keys

KeyWhere to get it
CH_API_KEYdeveloper.company-information.service.gov.uk — free
CHARITY_API_KEYapi-portal.charitycommission.gov.uk — free

HMLR, Gazette, and HMRC VAT require no API key.

Local development

git clone https://github.com/paulieb89/uk-due-diligence-mcp
cd uk-due-diligence-mcp

cp .env.example .env
# Fill in your API keys

pip install -e .
python server.py

Server starts at http://localhost:8080/mcp.

Fly.io deployment

fly launch --name uk-due-diligence-mcp --region lhr
fly secrets set CH_API_KEY=xxx CHARITY_API_KEY=xxx
fly deploy

Connecting

Claude Code / .mcp.json

{
  "mcpServers": {
    "uk-due-diligence": {
      "type": "http",
      "url": "https://uk-due-diligence-mcp.fly.dev/mcp"
    }
  }
}

Claude.ai / other MCP clients

{
  "mcpServers": {
    "uk-due-diligence": {
      "url": "https://uk-due-diligence-mcp.fly.dev/mcp"
    }
  }
}

Demo

Run due diligence on Carillion PLC

The agent calls company_search to resolve the company number, then company_profile, company_officers, company_psc, and gazette_insolvency — reasoning across all five registries to surface risk signals.


Project Structure

uk-due-diligence-mcp/
├── server.py           # FastMCP init, tool registration, transport config
├── companies_house.py  # company_search, company_profile, company_officers, company_psc
├── charity.py          # charity_search, charity_profile
├── land_registry.py    # land_title_search (SPARQL + REST)
├── gazette.py          # gazette_insolvency (JSON-LD, notice codes 2441-2460)
├── hmrc_vat.py         # vat_validate
├── http_client.py      # Shared httpx clients, retry backoff, error formatting
├── inputs.py           # Pydantic v2 input models
├── fly.toml
├── Dockerfile
├── pyproject.toml
└── .env.example

Technical Notes

The Gazette API

REST+RDF linked-data pattern. Corporate insolvency notice codes span 2441-2460. The read API is unauthenticated; auth is write-only (for placing notices).

HMLR Land Registry

Free endpoint at api.landregistry.data.gov.uk. Returns RDF/Turtle by default — the SPARQL endpoint is used for Price Paid Index queries. Covers England and Wales only.

High-Appointment-Count Signal

Directors with 10+ other active appointments are flagged. A director on 40+ companies is a common pattern in nominee director operations and phoenix company structures.


Licence

MIT

Reviews

No reviews yet

Sign in to write a review