Skip to main content

UK due diligence MCP server — Companies House, Charity Commission, HMLR, Gazette, HMRC VAT

Project description

uk-due-diligence-mcp

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, disqualification checks, insolvency notices, VAT validation, and property transactions.

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

PyPI SafeSkill Glama smithery badge Install in VS Code Install in VS Code Insiders Install in Cursor


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
disqualified_search Companies House Search disqualified directors by name
disqualified_profile Companies House Full disqualification record, period, Act, companies
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)
gazette_notice The Gazette Full legal wording of a specific insolvency notice
vat_validate HMRC VAT Trading name + address as registered for VAT
search All registers Fan-out search across all registers — returns IDs for ChatGPT deep research
fetch All registers Fetch a structured record by ID returned from search

Prompts

Three workflow prompts orchestrate multi-step investigations. Available via get_prompt on tool-only clients (ChatGPT) and natively on protocol-aware clients (Claude, Inspector).

Prompt Description
due_diligence Full DD check — company, officers, PSC, gazette, disqualification
charity_due_diligence Charity profile + insolvency check
director_check Disqualification status check for an individual

Connect

Hosted (no install)

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

Local (uvx)

export CH_API_KEY=your_key
export CHARITY_API_KEY=your_key
{
  "mcpServers": {
    "uk-due-diligence": {
      "type": "stdio",
      "command": "uvx",
      "args": ["uk-due-diligence-mcp"]
    }
  }
}

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.


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
├── disqualified.py     # disqualified_search, disqualified_profile
├── 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.6.tar.gz (125.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.6-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uk_due_diligence_mcp-1.0.6.tar.gz
  • Upload date:
  • Size: 125.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for uk_due_diligence_mcp-1.0.6.tar.gz
Algorithm Hash digest
SHA256 0f8309122b5b8ed7a6893a720becb519e4fc2d560d1a065c77f5a45a0f674134
MD5 526843df4b590a47bd38a8b943b9fbf1
BLAKE2b-256 15c7fc5d5cccd16f87b15c90768e7cbc9144bb529b7be8756213bb75e7d92712

See more details on using hashes here.

Provenance

The following attestation bundles were made for uk_due_diligence_mcp-1.0.6.tar.gz:

Publisher: release.yml on paulieb89/uk-due-diligence-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for uk_due_diligence_mcp-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 91474072cfab4f9bc11212f6bcff7b470607f7dba5f9b5f3a9d6ce829e3b14cf
MD5 dc34eab856084fe4e5692d47fe9206cc
BLAKE2b-256 a00e620e0a961b95d39d53e98a0ea2f9407005d8f730750bf5314ca8b8718630

See more details on using hashes here.

Provenance

The following attestation bundles were made for uk_due_diligence_mcp-1.0.6-py3-none-any.whl:

Publisher: release.yml on paulieb89/uk-due-diligence-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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