companies-house-screening-mcp
companies-house-screening-mcp
Consulta empresas del Reino Unido contra el registro público de Companies House desde un host MCP. Screening por lotes de una lista de proveedores, instantáneas de empresa en una sola llamada y señales fácticas en lugar de una puntuación de riesgo.
Estado: fase 6 de 6. Once herramientas, documentación generada desde el servidor en ejecución y controlada en CI, una evaluación de selección de herramientas y fixtures grabados de la API en vivo. Pipeline de publicación construido; aún no publicado.
Hay otro, y deberías saberlo
companies-house-mcp de
@aicayzer existe desde
julio de 2025, está en la v4.0.0 y se mantiene activamente. Cubre la misma
API. Este proyecto no es el primero y no pretende serlo.
Los dos están planteados de forma distinta, así que cuál encaja depende de lo que estés haciendo.
Usa el suyo si quieres amplitud. Expone más de la API — registros, exenciones, establecimientos del Reino Unido, inhabilitaciones de administradores — y, lo importante, puede descargar los propios documentos presentados. Este deliberadamente no: la API de documentos de Companies House queda fuera del alcance aquí.
Usa este si haces screening en lugar de navegar. Las diferencias que importan:
Screening por lotes |
|
Nunca adivina un número de empresa | Las herramientas de recuperación rechazan un nombre de empresa rotundamente, antes de cualquier petición. Dado un nombre, un modelo produce un número que parece correcto, y un número erróneo plausible devuelve otra empresa real que nada aguas abajo señala como incorrecto. ADR 5. |
Señales, no puntuaciones | Hechos leídos del registro con la fecha o el nombre detrás de cada uno, y deliberadamente sin calificación. ADR 7 contiene el argumento. |
Nada se descarta en silencio | Los resultados parciales están etiquetados; una tabla de screening que vuelve corta siempre dice por qué. ADR 8. |
Documentación que no puede quedarse obsoleta | La referencia de herramientas se genera desde el servidor en ejecución y cada ejemplo se ejecuta; CI falla si cualquiera de los dos se desvía. ADR 9. |
Una eval de selección de herramientas | Pregunta a un modelo real a qué herramienta recurre, y falla ante la inestabilidad. ADR 10. |
Once decisiones están documentadas en docs/adr, incluidas las que no tomaron el camino obvio.
Instalación
npx -y companies-house-screening-mcpConfiguración del host:
{
"mcpServers": {
"companies-house": {
"command": "npx",
"args": ["-y", "companies-house-screening-mcp"],
"env": { "COMPANIES_HOUSE_API_KEY": "your_key" }
}
}
}O con Docker — observa -i y sin -t, porque una TTY corrompe el
encuadre JSON-RPC:
docker run --rm -i -e COMPANIES_HOUSE_API_KEY=your_key ghcr.io/OWNER/companies-house-screening-mcpObtén una clave de API gratuita en developer.company-information.service.gov.uk: regístrate, crea una aplicación contra el entorno Live y crea una clave de tipo REST (una clave de stream autentica de la misma manera pero es para un servicio distinto).
Por qué otro wrapper de API
La forma obvia de construir esto es una herramienta MCP por endpoint. Veintidós pasarelas finas, el trabajo de un fin de semana, y es lo que son la mayoría de los servidores MCP publicados. También es malo en tres sentidos concretos:
Cada esquema de herramienta está en el contexto del modelo en cada turno, lo necesite la tarea o no.
Empuja la orquestación al modelo. "¿Es seguro incorporar a este proveedor?" se convierte en búsqueda, luego perfil, luego administradores, luego cargas, luego insolvencia — cinco idas y venidas y cinco oportunidades de perder el hilo.
Los payloads de Companies House llevan estructura que ningún modelo lee —
links,etag,kind, ETags por elemento, arrays de transacciones de presentación, objetos de dirección de nueve claves. Reformularlos ahorra entre el 36% y el 72% según el endpoint, medido contra respuestas reales grabadas en lugar de asumidas (npm run measure).
Así que este servidor expone once herramientas con forma de pregunta, dos de
las cuales (company_snapshot y screen_companies) hacen el fan-out en el
servidor y devuelven un objeto derivado. Las herramientas de recuperación
aceptan un número de empresa y rechazan un nombre de empresa, porque dado un
nombre un modelo adivinará un número, y un número de empresa erróneo
plausible devuelve una empresa real que nada aguas abajo señala como
incorrecto.
Las herramientas
Herramienta | Devuelve |
| Candidatos clasificados para un nombre o número, con un flag |
| IDs de administrador candidatos para el nombre de una persona, con recuentos de nombramientos. |
| Perfil, más flags derivados para presentaciones vencidas, cargas, insolvencia e incorporación reciente. |
| Administradores actuales y dimitidos, cada uno con el ID necesario para consultar sus otras empresas. |
| Qué se presentó y cuándo, filtrable por categoría. |
| Deuda garantizada, con un |
| Quién controla realmente la empresa y cómo se ostenta ese control. |
| Casos de insolvencia y los administradores concursales nombrados. |
| Cada empresa en la que participa un administrador: la herramienta de conflictos de interés. |
| Perfil, administradores, cargas e insolvencia en una llamada, con señales. |
| Hasta 50 empresas entran, una fila cada una sale, nada se descarta en silencio. |
Referencia completa: docs/tools. Ejemplos prácticos: docs/recipes — screening de proveedores, controles de conflicto de directores, verificación de facturas, riesgo de deudores, vigilancia de presentaciones de competidores.
Las señales son hechos, no una calificación. Este servidor no puntúa empresas y no te dirá si es seguro comerciar con una — informa de lo que encontró en el registro, con la fecha o el nombre detrás de cada observación, y deja el juicio a la persona que tiene el contexto. Una lista de señales vacía significa que no se encontró nada de la lista, no que la empresa sea sólida. ADR 7 contiene el razonamiento completo.
Cada herramienta está anotada con readOnlyHint: true, publica un esquema de
salida y acepta verbose para devolver el payload intacto junto al
reformulado.
Bajo las herramientas
Pieza | Qué hace |
| Valida cada variable de entorno al arrancar e informa de todos los problemas a la vez, nombrando la variable en lugar del campo interno. |
| Peticiones basic-auth, timeout por petición, reintento con jitter en 429 y 5xx, revalidación condicional, respaldo obsoleto ante fallo. |
| Ventana deslizante ajustada a los 600 por cinco minutos documentados, con margen de seguridad y adquisición serializada. |
| Memoria sobre disco, TTL por tipo de recurso, escrituras atómicas, entradas corruptas tratadas como fallo. |
| Cada fallo lleva un código estable, una frase sencilla y un siguiente paso. |
Proyecciones | La fuente se lee de forma defensiva campo por campo; la salida se valida estrictamente contra el esquema publicado. |
284 pruebas, sin red, sin necesidad de clave de API para ejecutarlas.
Configuración
Solo se requiere una variable.
Variable | Default | Notas |
| — | Obligatoria. Crea una clave de API REST en el portal para desarrolladores. No es una clave de streaming. |
|
| Anulación para un proxy. |
|
| Solicitudes por ventana. Redúcelo si la clave se comparte con otro proceso. |
|
| Cinco minutos. |
|
| Fracción del presupuesto que usará este proceso. |
|
| |
| directorio de caché de la plataforma | Respeta |
|
| Por solicitud. |
|
| Reintentos después del primer intento. |
|
|
|
| — | Ruta absoluta a un |
Desarrollo
npm install
npm test
npm run typecheck
npm run build
npm run docs:generateLa documentación se genera y se controla. docs/tools se renderiza desde el
servidor en ejecución a través de un cliente MCP real, y cada llamada en docs/recipes se
ejecuta cuando se construyen las páginas. npm run docs:check falla si lo que está
confirmado difiere, CI lo ejecuta antes de las pruebas, y la suite ejecuta la misma
comparación para que el fallo llegue mientras aún tienes el cambio delante de
ti. Cambia una descripción de herramienta y regeneras, o la compilación se pone en rojo.
La suite se ejecuta sin conexión contra fixtures grabados de la API real de Companies House,
por lo que un clon nuevo funciona sin nada configurado. npm run record-fixtures
los vuelve a grabar — consulta tests/fixtures/README.md para saber
de qué empresas provienen y por qué se eligieron esas.
Una vez que tengas una clave, copia .env.example a .env y complétalo:
npm run test:liveCada comando de desarrollo lee ese archivo. Cualquier cosa ya definida en tu shell
tiene prioridad sobre él. El servidor publicado no lee un .env a menos que
CH_ENV_FILE nombre uno — un host lo lanza con el directorio de trabajo del
host, y recoger cualquier .env que esté ahí es una buena manera de
cargar las credenciales equivocadas.
Esa prueba se ejecuta cada noche en CI. Su trabajo no es pasar — es fallar en voz alta la semana en que Companies House cambie un campo, para que los fixtures se actualicen antes de que un usuario encuentre la desviación.
La evaluación de selección de herramientas
Cada prueba en este repositorio pregunta ¿funciona la herramienta?. Una cosa que ninguna de ellas puede preguntar es si un modelo recurre a la herramienta correcta cuando una persona hace una pregunta real — una herramienta puede ser correcta, rápida y totalmente cubierta y aun así nunca ser elegida, porque su descripción es vaga o se solapa con otra. Ese es el defecto real más común en los servidores MCP publicados.
npm run eval -- --repeat 3Se ejecuta a través de OpenRouter o la API de Anthropic — define OPENROUTER_API_KEY
o ANTHROPIC_API_KEY. Por defecto usa z-ai/glm-5.2 en OpenRouter, alrededor de 4p
por una pasada completa, porque una evaluación que nadie ejecuta por el costo no está haciendo
nada. Apunta --model a cualquier cosa con soporte de herramientas para comparar.
Catorce preguntas formuladas como las haría una persona, puntuadas según qué herramienta se llamó primero, si se tocó una herramienta prohibida, si los argumentos eran correctos y — la que importa — si el modelo inventó un número de empresa que no estaba en la pregunta. Un caso que pasa dos de tres ejecuciones se reporta como inestable y falla, porque la selección intermitente significa que dos descripciones se solapan.
Ejecutada en tres modelos (GLM 5.2, Kimi K3, DeepSeek V4 Pro) obtiene una puntuación del 93–98%. El grupo de fundamentación — dado un nombre de empresa y sin número, buscar en lugar de recordar uno — pasa 7/7 en los tres. Los fallos se agruparon, y tres de ellos resultaron ser defectos en mis propias descripciones de herramientas y uno en la evaluación en sí, en lugar de en cualquier modelo.
No se necesita clave de Companies House; no se ejecuta nada. Comparación completa y lo que encontró en evals/README.md, razonamiento en ADR 10.
Notas de diseño
Once decisiones están documentadas en docs/adr:
El limitador de velocidad de ventana deslizante y su margen de seguridad
Herramientas con forma de pregunta, y por qué se rechaza un nombre
Lanzamientos impulsados por etiquetas, firmados con procedencia
Alcance
Solo lectura, permanentemente. Cada herramienta está anotada con readOnlyHint: true y no hay
ruta de escritura. La API de presentación de Companies House, que envía documentos en
nombre de una empresa, es un producto diferente con un perfil de riesgo diferente y está
fuera del alcance de este. La API de streaming también está fuera del alcance. Obtener el
PDF o iXBRL de una presentación a través de la API de documentos es la fase 7 y seguiría siendo
de solo lectura.
Hoja de ruta
Fase | Contenido | Estado |
1 | Cliente, autenticación, limitador de velocidad, caché, mapeo de errores, fixtures | hecho |
2 | Nueve herramientas primitivas con esquemas Zod y proyecciones con forma | hecho |
3 |
| hecho |
4 | Documentación de herramientas generada con verificación de desviación en CI, cinco recetas trabajadas | hecho |
5 | Suite de evaluación de selección de herramientas, prueba de humo en vivo en CI, ADRs restantes | hecho |
6 | Lanzamiento en npm y Docker con procedencia | pipeline construido, aún no publicado |
Licencia
Código fuente: MIT.
Los datos devueltos por este servidor son publicados por Companies House bajo la Open Government Licence v3.0 y no están cubiertos por la licencia MIT. Si los redistribuyes, lleva la atribución que requiere la OGL:
Contiene información del sector público licenciada bajo la Open Government Licence v3.0.
Este proyecto no está afiliado ni respaldado por Companies House.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Companies House MCP — UK statutory company registry (BYO key)
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
Company intelligence via UK Companies House and risk screening across 386 risk data sources.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kaylum54/companies-house-screening-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server