UK due diligence MCP server — nine tools across five public registers
Project description
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.
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
Install from PyPI
pip install 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.
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uk_due_diligence_mcp-1.0.3.tar.gz.
File metadata
- Download URL: uk_due_diligence_mcp-1.0.3.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae66cbd4c8cfc40b06eb4716d2ebf3a94f00bf26ed3fdabac5932e5a3de660f3
|
|
| MD5 |
8aebb95d0a4c018c836afdd4cc7dc94d
|
|
| BLAKE2b-256 |
1ff960fe7963a6b1855e4e63861b226b49fb8d19d0326df4f97cac04f6ac3394
|
File details
Details for the file uk_due_diligence_mcp-1.0.3-py3-none-any.whl.
File metadata
- Download URL: uk_due_diligence_mcp-1.0.3-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c0d551dcbb86b2858383f589f643e5d2d252a3787701caa0b29ced847625460
|
|
| MD5 |
07fea87086455d8c174173f89c193f19
|
|
| BLAKE2b-256 |
8e12840ff91c53152a7b620fb176a6c364d785fedc652a11038eae2ed81dc5cd
|