The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the UK Companies House listing page.
A comprehensive Know Your Business (KYB) toolkit via Model Context Protocol (MCP). This server provides 22 production-ready tools that integrate with the UK Companies House API to enable complete due diligence automation, beneficial owner discovery, risk detection, and regulatory compliance.
Status: ✅ Production Ready | Version: 2.0.0 | Tools: 22 (17 new + 5 backward compatible) | API Endpoints: 16
| # | Requirement | Tools | Status |
|---|---|---|---|
| 1️⃣ | Filing History | get_filing_history_list(), get_filing_history_item() | ✅ |
| 2️⃣ | Filing Item by Transaction ID | get_filing_history_item() | ✅ |
| 3️⃣ | Document Download via MCP | download_document(), download_filing_document() | ✅ |
| 4️⃣ | PSC (Beneficial Owners) - Full Set | get_psc_list(), get_psc(), get_psc_statements() | ✅ |
| 5️⃣ | Charges (Mortgages/Security) | get_charges_list() | ✅ |
| 6️⃣ | Insolvency (MANDATORY KYB) | get_insolvency() | ✅ |
| 7️⃣ | Registered Office Address (Direct) | get_registered_office_address() | ✅ |
| 8️⃣ | Officer Appointments (Director Network) | get_officer_appointments() | ✅ |
| 9️⃣ | Officer Disqualifications (MANDATORY) | get_disqualification_natural(), get_disqualification_corporate() | ✅ |
| 🔟 | Advanced Company Search | search_companies_advanced() | ✅ |
Getting Started: Start with one of these based on your needs:
This is what a full Know Your Business process looks like using the server:
Result: Complete due diligence report with all compliance checks passed ✅
Build the Image:
Run the Container:
Test with Postman:
mcp_postman_collection.json.apiKey variable to your Companies House API Key.http://localhost:8001/mcp.Configure your MCP client to connect to the server. Since this server uses HTTP transport, you might need an adapter or a client that supports HTTP MCP.
Tool Call Example (JSON-RPC):
| Tool | Description | Key Args |
|---|---|---|
search_companies_advanced | Advanced search: name, number, or address | q, items_per_page, start_index |
get_company_profile | Full company details | company_number |
get_registered_office_address | Direct office address access | company_number |
| Tool | Description | Key Args |
|---|---|---|
get_filing_history_list | List all filings with pagination | company_number, category, items_per_page |
get_filing_history_item | Get specific filing by transaction ID | company_number, transaction_id |
download_document | Download document by ID | document_id |
download_filing_document | Download filing (lookup + download wrapper) | company_number, transaction_id |
| Tool | Description | Key Args |
|---|---|---|
get_company_officers | List directors and secretaries | company_number, items_per_page |
get_officer_appointments | Get all appointments for an officer | officer_id, items_per_page |
| Tool | Description | Key Args |
|---|---|---|
get_psc_list | List beneficial owners (Persons with Significant Control) | company_number, items_per_page |
get_psc | Individual PSC details with ownership info | company_number, psc_id |
get_psc_statements | PSC statements (e.g., "no PSCs", "unknown") | company_number, items_per_page |
| Tool | Description | Key Args |
|---|---|---|
get_insolvency | ⚠️ MANDATORY: Check insolvency proceedings | company_number |
get_disqualification_natural | 🚩 MANDATORY: Check natural person disqualification | officer_id |
get_disqualification_corporate | 🚩 MANDATORY: Check corporate disqualification | officer_id |
| Tool | Description | Key Args |
|---|---|---|
get_charges_list | List charges/mortgages (secured lending) | company_number, items_per_page |
| Tool | Description | Key Args |
|---|---|---|
generate_company_report | Full KYB aggregation (Best for agents) | company_number |
search_companies, get_filing_history, get_company_charges, get_persons_with_significant_control, get_company_insolvency
(Still available but use new tools above)
Deploy:
(Note: The secret.yaml is no longer strictly required if you rely on client-side keys, but can be used for server-side defaults).
Access:
The service is exposed via NodePort on port 30001 (or LoadBalancer depending on your K8s setup).
This server is designed to be stateless. It does not store your API keys. Keys are passed per-request or configured via environment variables (optional fallback). Ensure you transmit keys over HTTPS in production.
GET /company/{company_number} - Full company profileGET /company/{company_number}/registered-office-address - Office addressGET /company/{company_number}/officers - Officers listGET /company/{company_number}/filing-history - Filing history with transaction IDsGET /company/{company_number}/filing-history/{transaction_id} - Individual filing itemGET /company/{company_number}/charges - Charges/mortgagesGET /company/{company_number}/insolvency - Insolvency statusGET /company/{company_number}/persons-with-significant-control - PSC listGET /company/{company_number}/persons-with-significant-control/{type}/{id} - Individual PSCGET /company/{company_number}/persons-with-significant-control-statements - PSC statementsGET /officers/{officer_id}/appointments - Officer's appointmentsGET /disqualified-officers/natural/{officer_id} - Natural person disqualificationsGET /disqualified-officers/corporate/{officer_id} - Corporate disqualificationsGET /document/{document_id}/content - Download document contentGET /search/companies - Company search with filtersAll API calls use HTTP Basic Authentication with your Companies House API Key.
The MCP server passes through rate limit errors (HTTP 429). Implement exponential backoff in client applications.
Document downloads are returned as base64-encoded content with metadata including:
document_id: The document identifiercontent_type: MIME type (e.g., application/pdf)content_length: File size in bytescontent_base64: Base64-encoded file content