uk-company-check
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@uk-company-check Is Driver Plumbing & Heating Ltd still active, and who are its directors?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
uk-company-check — UK Companies House as MCP agent tools
An MCP server that turns the free, official Companies House API (the UK company registry — profiles, officers, filing history for every UK company) into four tools your AI agent can call.
Every UK B2B seller doing prospect research needs this data: is the prospect still trading, who are its directors, what industry codes is it under. Non-UK (US included) lead-gen and KYB sellers need it too — UK registry data is public, in English, and every company number is a join key.
Audience: B2B prospect researchers, lead-gen sellers, KYB/due-diligence workflows, any agent that needs UK company facts.
Cost: £0. The API key is free (2-minute signup, no credit card). The server has no other dependencies beyond the official MCP SDK.
No API key? It still runs. The server starts, lists its tools, and returns a plain-English "here's how to get the free key" message instead of crashing (agents can read that to the user).
What it does — the four tools
Tool | What it answers |
| "Find me UK companies named X" → name, company number, status, incorporation date, address |
| Full registry profile: status (active/dissolved/…), incorporation date, registered office, SIC codes with plain-English descriptions, current officers (directors & secretary) with appointment dates and occupations |
| What the company filed and when — confirmation statements, accounts, officer changes |
| Decode any UK SIC code to its official plain-English description. Works offline (embedded official list) — no key, no network |
get_company calls two registry endpoints (profile + officers) and returns one merged answer, so an agent doesn't have to orchestrate. Company numbers are accepted with or without leading zeros (123456 → 00123456), case-insensitively for SC/NI prefixes.
Related MCP server: companieswise
5-minute setup
Requirements: Python 3.10+ and either uv or pip. Nothing else — no Node, no database, no paid services.
1. Get your free Companies House API key (2 minutes, no card).
Go to https://developer.company-information.service.gov.uk/signin and register an account. Sign in, open Applications, create a new application, and copy the API key it shows you. That's the whole signup. (Do not commit the key anywhere — see the .env.example.)
Companies House documents the limit as 600 requests per 5-minute window per key — orders of magnitude more than prospect research needs. This server also caches answers for an hour, so repeat questions cost no quota.
2. Install.
# with uv (fastest):
uv venv && uv pip install -e .
# or with plain pip:
python3 -m venv .venv && .venv/bin/pip install -e .3. Test the install (30 seconds).
.venv/bin/python -m pytest tests/ -qYou'll see 43 passed — all tests run offline against a pretend registry on localhost, so they never spend your API quota or need the network.
4. Wire it into your MCP client.
Example for Claude Desktop / Cursor / any MCP client that uses JSON config:
{
"mcpServers": {
"uk-company-check": {
"command": "/ABSOLUTE/PATH/TO/uk-company-check/.venv/bin/python",
"args": ["-m", "uk_company_check"],
"env": { "CH_API_KEY": "your_real_api_key" }
}
}
}(Any MCP client works the same way: launch python -m uk_company_check on stdio with CH_API_KEY in the environment. Alternative env name: COMPANIES_HOUSE_API_KEY.)
5. Try it. In your client, ask:
Find UK companies called "Driver Plumbing" and tell me whether the top one is active, who its directors are, and what its SIC codes mean.
The agent will call search_companies → get_company → explain_sic_code and answer with sourced registry facts.
Example tool calls and responses
These are real outputs from this server's test suite (run against a pretend registry whose fixture company mirrors the live API's exact field shapes — see tests/fake_ch.py). With your API key, the live Companies House returns the same shapes with real data.
search_companies("driver plumbing") →
{
"query": "driver plumbing",
"total_results": 2,
"companies": [
{
"company_number": "00123456",
"company_name": "DRIVER PLUMBING & HEATING LTD",
"company_status": "active",
"incorporated": "2015-03-10",
"address": "28 London Road, Great Glen, Leicestershire, LE8 9FL",
"nature_of_business": "43220"
},
{
"company_number": "08765432",
"company_name": "OLD ROOFS LTD",
"company_status": "dissolved",
"incorporated": "2001-01-01",
"address": "1 Old Street, Leicester, LE1 1AA",
"nature_of_business": null
}
]
}get_company("123456") → (officers listed newest appointment first; resigned officers filtered out)
{
"company_name": "DRIVER PLUMBING & HEATING LTD",
"company_number": "00123456",
"status": "active",
"type": "ltd",
"incorporated": "2015-03-10",
"ceased": null,
"registered_office": "28 London Road, Great Glen, Leicestershire, LE8 9FL, United Kingdom",
"sic_codes": [
{ "code": "43220", "description": "Plumbing, heat and air-conditioning installation" },
{ "code": "99999", "description": "Dormant Company" }
],
"has_charges": false,
"has_insolvency_history": false,
"officers": [
{
"name": "Acme Corporate Services Limited",
"role": "corporate-secretary",
"appointed_on": "2020-01-01",
"occupation": null,
"nationality": null,
"year_of_birth": null
},
{
"name": "John Driver",
"role": "director",
"appointed_on": "2015-03-10",
"occupation": "Plumber",
"nationality": "British",
"year_of_birth": 1980
}
],
"note": null
}get_filing_history("00123456") →
{
"company_number": "00123456",
"total_count": 2,
"filings": [
{
"date": "2025-06-01",
"type": "CS01",
"category": "confirmation-statement",
"description": "confirmation statement (2025-05-10)",
"description_values": { "made_up_to": "2025-05-10" }
},
{
"date": "2024-12-15",
"type": "AA",
"category": "accounts",
"description": "legacy (group of companies' accounts made up to 31 March 2024)",
"description_values": { "description": "group of companies' accounts made up to 31 March 2024" }
}
]
}explain_sic_code("43220") →
{ "code": "43220", "description": "Plumbing, heat and air-conditioning installation" }How it's tested (and why you can trust the README)
43 tests in three layers — all offline, no network, no API quota:
Client unit tests (
tests/test_ch_api.py) — company-number normalisation, caching (a cached call provably makes zero HTTP requests), friendly errors for 401/404/429, SIC descriptions.Tool layer tests (
tests/test_server_tools.py) — each tool's output shape, resigned-officer filtering, SIC enrichment, all four tools registered, every tool has a docstring (agent-visible descriptions).Protocol tests (
tests/test_protocol.py) — launch the real server as a subprocess, speak MCP JSON-RPC over stdio (initialize → tools/list → tools/call), and verify responses. Also proves zero-key mode starts and self-explains instead of crashing.
The fake registry (tests/fake_ch.py) mirrors the exact Companies House response field names (company_name, company_status, sic_codes, officer_role, appointed_on, …) as documented on the official reference pages.
Run them yourself:
.venv/bin/python -m pytest tests/ -vWorks with both MCP SDK generations
The official Python SDK renamed its main class between versions: 1.x exposes mcp.server.fastmcp.FastMCP, 2.x renamed it to mcp.server.mcpserver.MCPServer. This server imports whichever is installed, so pip install mcp can give you either and it still runs. The protocol tests pass against both. (Tested against 1.14.0 and 2.2.0, on Python 3.12 and 3.14.)
Who it's for
B2B sellers and agencies doing UK prospect research (segment by SIC code, verify a company is active before outreach).
US and non-UK lead-gen sellers — UK registry data is public, in English, structured; the company number is a stable join key for enrichment.
KYB / due-diligence agents — status, officers, and filing history are the three core checks.
Any MCP client user who just wants UK company facts on tap.
Licence
MIT for the code (see LICENSE). The embedded SIC code descriptions in src/uk_company_check/sic_data.py are official UK SIC 2007 condensed-list data from Companies House, under the Open Government Licence v3.0 — Crown copyright preserved. Companies House data returned at runtime belongs to the UK Crown / Companies House and is used under OGL v3.0.
Available Tools
4 toolsexplain_sic_codeA
Decode a UK SIC code (the 5-digit 'nature of business' code on every company record) into its official plain-English description. Works offline from the official UK SIC 2007 condensed list — no API key needed. Example: explain_sic_code('43220') -> 'Plumbing, heat and air-conditioning installation'.
Args: code: The SIC code, e.g. "43220". Leading zeros are kept.
Inputs: code (required). Returns: object
get_companyB
Full profile of one UK company from its official registry record: status (active/dissolved/...), incorporation date, registered office, SIC codes with plain-English descriptions, and current officers (directors and secretary) with appointment dates and occupations.
Args: company_number: The 8-character Companies House number, e.g. "00123456", "123456", "SC123456" or "NI123456" — leading zeros optional.
Inputs: company_number (required). Returns: object
get_filing_historyA
The most recent filings a company has made at Companies House (confirmation statements, accounts, officer changes...). Useful for spotting dormancy (nothing filed for years), late accounts, or a change of directors last week.
Args: company_number: The Companies House number (leading zeros optional). items_per_page: How many filings to return (1-100, default 10).
Inputs: company_number (required), items_per_page. Returns: object
search_companiesA
Search the UK company register by name. Returns matches with company number, status, address snippet and incorporation date — use the company_number from the best match with get_company.
Args: query: Company name or part of it, e.g. "Driver Plumbing" or "TESCO". items_per_page: How many matches to return (1-100, default 10).
Inputs: query (required), items_per_page. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: name search, full company profile, filing history, and SIC code decoding. There is no overlap in function or ambiguity about when to use each.
All names use snake_case and follow a verb_noun pattern: search_companies, get_company, get_filing_history, explain_sic_code. The convention is consistent and readable.
Four tools are well-scoped for a read-only UK company lookup service. Each tool earns its place without redundancy or excessive granularity.
The set covers the core due-diligence workflow: find a company, get its profile including officers, check filings, and decode SIC codes. Minor gaps exist, such as no dedicated PSC/charges lookup or advanced search filters, but agents can work around them for basic checks.
Maintenance
Related MCP Connectors
CompanyLens is a remote MCP server giving AI agents instant access to official company registry data across 19 jurisdictions in Europe, the Americas, and Asia-Pacific. Eighteen read-only tools let you search companies and people, look up officers and beneficial owners, map corporate networks through shared directors, screen names against the UK disqualified directors register, find every company at a registered address, and pull filing history — all from a single connector. Visit our website: https://companylens.io
Company data for AI agents: enrich a domain, UK Companies House records, Y Combinator companies.
UK Companies House company search, officers and PSC via the official API. Runs on Apify.
UK Companies House and KYB: search, officers, owners (PSC), filings, charges, banned directors
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables looking up UK companies, officers, ownership, filings, and running due diligence checks via the Companies House API, usable from AI tools like Claude or Cursor.12 npm39MIT

companieswiseofficial
AlicenseAqualityCmaintenanceProvides verified UK company lookup and number validation for AI agents using official Companies House data. Enables lookup of registered details by number, validation of company number format, and search by company name.351 npmApache 2.0- AlicenseAqualityDmaintenanceEnables AI assistants to search and retrieve UK Companies House data including company profiles, officers, and filing history via the official API.4196 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying UK company data including search, profiles, officers, filings, and persons with significant control via Companies House API.196 npmMIT