Skip to main content

UK due diligence MCP server — nine tools across five public registers

Project description

uk-due-diligence-mcp

Nine tools across five UK public registers.

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.


Data Sources

Register API Auth
Companies House api.company-information.service.gov.uk API key (free)
Charity Commission api.charitycommission.gov.uk API key (free)
HMLR Land Registry landregistry.data.gov.uk (SPARQL + REST) None
The Gazette thegazette.co.uk/all-notices (Linked Data) None
HMRC VAT api.service.hmrc.gov.uk None

Tools

Tool Register Description
company_search Companies House Search by name/keyword with status/type filters
company_profile Companies House Full profile: status, filing compliance, charges
company_officers Companies House Directors with high-appointment-count risk flag
company_psc Companies House Beneficial owners, PSC chain, offshore flags
charity_search Charity Commission Search by name, filter by registration status
charity_profile Charity Commission Full record: trustees, finances, governing doc
land_title_search HMLR Property ownership via SPARQL PPI query
gazette_insolvency The Gazette Corporate insolvency notices (codes 2441-2460)
vat_validate HMRC VAT Trading name + address as registered for VAT

Setup

API Keys

Key Where to get it
CH_API_KEY developer.company-information.service.gov.uk — free
CHARITY_API_KEY api-portal.charitycommission.gov.uk — free

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

Local development

git clone https://github.com/bch-nz/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

Add to your MCP client config:

{
  "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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uk_due_diligence_mcp-1.0.1.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uk_due_diligence_mcp-1.0.1-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file uk_due_diligence_mcp-1.0.1.tar.gz.

File metadata

  • Download URL: uk_due_diligence_mcp-1.0.1.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for uk_due_diligence_mcp-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0704bebb28c4700fab2da1a7262dc2b9891df1c331d3425021ea828c8364a685
MD5 0168e1bf5a1c3f1e5fafc30c62fcc86b
BLAKE2b-256 0ba2b144b2384fc7f2d5f92960d61044604d69784ec48399393bb65f20f20d32

See more details on using hashes here.

File details

Details for the file uk_due_diligence_mcp-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for uk_due_diligence_mcp-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9f7a54f7c76d0406060ecebaf49c416c949e771026316cc631dd3408122f57cf
MD5 3804c0d3cea87207f2213d62d4d2bb38
BLAKE2b-256 856002bac58b843315e488ea6ebdc4be15424bfe011530af01d8ee51c3d8b657

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page