Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
The company registry MCP: brreg orgnr, Companies House, Bolagsverket organisationsnummer.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
REGISTRY_MCP_CONTACT_EMAIL, COMPANIES_HOUSE_API_KEY, BOLAGSVERKET_CLIENT_ID, BOLAGSVERKET_CLIENT_SECRET, BOLAGSVERKET_ENVIRONMENTLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://api.foretak.dev/mcpAbre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"registry": {
"command": "npx",
"args": [
"-y",
"registry-mcp"
],
"env": {
"REGISTRY_MCP_CONTACT_EMAIL": "your-value",
"COMPANIES_HOUSE_API_KEY": "your-value",
"BOLAGSVERKET_CLIENT_ID": "your-value",
"BOLAGSVERKET_CLIENT_SECRET": "your-value",
"BOLAGSVERKET_ENVIRONMENT": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add --transport http registry https://api.foretak.dev/mcpclaude mcp add registry --env REGISTRY_MCP_CONTACT_EMAIL=your-value --env COMPANIES_HOUSE_API_KEY=your-value --env BOLAGSVERKET_CLIENT_ID=your-value --env BOLAGSVERKET_CLIENT_SECRET=your-value --env BOLAGSVERKET_ENVIRONMENT=your-value -- npx -y registry-mcpCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"registry": {
"url": "https://api.foretak.dev/mcp"
}
}
}Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"registry": {
"command": "npx",
"args": [
"-y",
"registry-mcp"
],
"env": {
"REGISTRY_MCP_CONTACT_EMAIL": "your-value",
"COMPANIES_HOUSE_API_KEY": "your-value",
"BOLAGSVERKET_CLIENT_ID": "your-value",
"BOLAGSVERKET_CLIENT_SECRET": "your-value",
"BOLAGSVERKET_ENVIRONMENT": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"registry": {
"type": "http",
"url": "https://api.foretak.dev/mcp"
}
}
}Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"registry": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"registry-mcp"
],
"env": {
"REGISTRY_MCP_CONTACT_EMAIL": "your-value",
"COMPANIES_HOUSE_API_KEY": "your-value",
"BOLAGSVERKET_CLIENT_ID": "your-value",
"BOLAGSVERKET_CLIENT_SECRET": "your-value",
"BOLAGSVERKET_ENVIRONMENT": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://api.foretak.dev/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
REGISTRY_MCP_CONTACT_EMAIL envBOLAGSVERKET_ENVIRONMENT envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub foretak, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: COMPANIES_HOUSE_API_KEY, BOLAGSVERKET_CLIENT_ID, BOLAGSVERKET_CLIENT_SECRET
Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.
El repo de GitHub cambió por última vez –, y la última versión (0.4.2) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, ProAgentStore
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP-first control plane for ProAgentStore agents and private instances.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Company data for AI agents, any country. One MCP server and REST API, three national registers today: the United Kingdom's Companies House, looked up by company number; Norway's Enhetsregisteret / Brønnøysundregistrene (brreg), looked up by organisasjonsnummer (orgnr); and Sweden's Bolagsverket, looked up by organisationsnummer — one JSON shape whichever you ask.
claude mcp add registry-mcp --transport http https://api.foretak.dev/mcp?src=readme
No install step, over stdio:
claude mcp add registry-mcp -- uvx registry-mcp
What makes it worth a tool slot:
company_deadlines gives the next filing date and names why in applies_because — a Norwegian legal form's statutory duty, or "Companies House publishes this date for the company itself" when the register states it rather than us computing it. Quote the reason, not just the number.cached and fetched_at. OpenCorporates' own knowledge base tells users to "allow 30 days" for a correction to reach its site — a 30× freshness gap, stated by the incumbent about itself.Security. Read-only, always — nothing here writes to a register or anywhere else. No credentials are required from a caller; this deployment's own upstream credential (COMPANIES_HOUSE_API_KEY) is read from the environment and never logged or returned. The base lookup calls three named upstreams and nothing else: data.brreg.no, api.company-information.service.gov.uk and gw.api.bolagsverket.se. include=["lei"]/include=["parents"] additionally call api.gleif.org (GLEIF, CC0, keyless); include=["peppol"] additionally resolves a DNS record at the Peppol SML and calls whichever SMP host it names for that participant, falling back to the Peppol Directory (directory.peppol.eu) only when neither answers — see the attachments above. No personal data beyond what each national register already publishes about the entity itself — and because a Swedish sole trader's company number *is* their personnummer, the usage log stores no identifier at all for a country whose identifiers can be a natural person's (legal/privacy.md). This service does not perform sanctions, PEP or adverse-media screening, and it does not verify bank account details. Details: SECURITY.md.
One-click install, for a remote streamable-HTTP server:
Other clients (Claude Desktop, Cursor, VS Code, Cline, plain JSON configs): see docs/clients.md.
ChatGPT reaches an MCP server through a custom connector, and its deep research mode calls exactly two tools — search and fetch — which this server ships alongside the five registry tools. In ChatGPT, open Settings → Connectors, add a custom connector, and give it:
https://api.foretak.dev/mcp?src=readme
No authentication, no key, no account. If your ChatGPT plan does not show custom connectors under Settings → Connectors, turn on Settings → Security and login → Developer mode first, then add the URL from https://chatgpt.com/plugins.
search takes one free-text query — a company name, a national identifier, or a name plus a country ("Tesco United Kingdom") — and returns citable rows; fetch takes a row's id ("NO:923609016") and returns that company's register record and its statutory filing deadlines, with the full JSON of both in metadata.
Claude Desktop takes the same URL as a custom connector: Settings → Connectors → Add custom connector, then https://api.foretak.dev/mcp?src=readme. No key. For a local stdio install instead, see Configuration.
Status:
0.4.2, live —GET /healthreturns{"version":"0.4.2","countries":["GB","NO","SE"]}. The five registry tools and their response shapes are frozen; two connector aliases (search,fetch) wrap them for ChatGPT and add no new shape. The hosted API atapi.foretak.devis live, and listed in the official MCP registry asio.github.foretak/registry-mcp. Countries: United Kingdom (Companies House), Norway (brreg), Sweden (Bolagsverket) — see below for each country's identifier format and example calls.
The same two commands as above — Streamable HTTP or local stdio. To add it as a project-level .mcp.json file instead of the CLI, see Configuration.
$ curl https://api.foretak.dev/v1/NO/company/923609016
{ "country": "NO", "registry": "brreg", "id": "923609016", "id_formatted": "923 609 016", "id_scheme": "organisasjonsnummer", "euid": null, "name": "EQUINOR ASA", "legal_form_code": "ASA", "legal_form": "Public limited company", "legal_form_local": "Allmennaksjeselskap", "status": "active", "is_active": true, "registered_at": "1995-03-12", "vat_registered": true, "vat_number": "NO923609016MVA", "vat_registered_at": "1989-07-01", "employees": 21239, "share_capital": 5976872600.0, "share_capital_currency": "NOK", "business_address": {"lines": ["Forusbeen 50"], "postal_code": "4035", "city": "STAVANGER"}, "advertising_protected": null, "source": "Enhetsregisteret (Brønnøysundregistrene)", "license": "NLOD 2.0" }
Abridged — the full CompanyReport also carries previous_names, industry_codes, registers, purpose, parent_id, confidence, cached, fetched_at and notes. Every field is documented in llms-full.txt §5.
euid is the EU-wide identifier some member-state registers publish (Finland does; none of ours do yet) — never the LEI, never constructed from parts. advertising_protected is true/false/null: whether the register marks this entity as protected against direct-marketing use, null meaning the register publishes no such flag at all (Norway and the UK, today); where it is true (Sweden's *reklamspärr*, for one), a notes sentence states it and that marking must travel with any contact details you pass on.
The United Kingdom, same shape, same abridgement:
$ curl https://api.foretak.dev/v1/GB/company/00445790
{ "country": "GB", "registry": "companies-house", "id": "00445790", "id_formatted": null, "id_scheme": "company number", "euid": null, "name": "TESCO PLC", "legal_form_code": "plc", "legal_form": "Public limited company", "status": "active", "is_active": true, "registered_at": "1947-11-27", "vat_registered": null, "vat_number": null, "employees": null, "employees_reported": false, "registers": {"insolvency": false}, "industry_codes": [{"code": "47110", "description": null, "scheme": "SIC 2007", "rank": 1}], "business_address": {"lines": ["Tesco House, Shire Park", "Kestrel Way"], "postal_code": "AL7 1GA", "city": "Welwyn Garden City"}, "advertising_protected": null, "published_deadlines": [ {"kind": "annual_accounts", "due_date": "2027-08-26", "period_end": "2027-02-26", "overdue": false, "source": "accounts.next_accounts.due_on"}, {"kind": "confirmation_statement", "due_date": "2027-07-02", "period_end": "2027-06-18", "overdue": false, "source": "confirmation_statement.next_due"} ], "source": "Companies House (UK)", "license": "Crown copyright — Companies House public register, free to re-use" }
published_deadlines carries the dates the register publishes itself, with the upstream field each came from. It is [] for Norway and Sweden, which compute all of their own.
Sweden, added in 0.3.0, is where "one shape" starts to earn the claim:
$ curl https://api.foretak.dev/v1/SE/company/5560160680
{ "country": "SE", "registry": "bolagsverket", "id": "5560160680", "id_formatted": "556016-0680", "id_scheme": "organisationsnummer", "euid": null, "name": "Telefonaktiebolaget LM Ericsson", "legal_form_code": "AB", "legal_form": "Private or public limited company", "legal_form_local": "Aktiebolag", "status": "active", "is_active": true, "registered_at": "1918-08-19", "vat_registered": null, "vat_number": null, "employees": null, "employees_reported": false, "industry_codes": [{"code": "70100", "description": "Verksamheter som utövas av huvudkontor", "scheme": "SNI 2007", "rank": 1}], "postal_address": {"postal_code": "16483", "city": "STOCKHOLM", "country_code": "SE"}, "advertising_protected": null, "published_deadlines": [], "source": "Bolagsverket (bolagsverket.se)", "license": "Free re-use (Bolagsverket/SCB high-value datasets, EU Open Data Directive) — the publisher names no licence" }
Bolagsverket names no licence for this data, so neither do we: the string says what the permission is and says plainly that there is no licence name to quote, because a familiar name in that field would be a fabrication.
Sweden publishes no status field at all. status is derived from three independent signals — a strike-off date, an ongoing winding-up or restructuring procedure, and Statistics Sweden's "economically active" flag — and is_active therefore means *on the register and not winding down*, which is not the same as trading. Where any of that is unavailable the answer is unknown, never active.
Two dates are computed, and each carries the provision it comes from:
$ curl "https://api.foretak.dev/v1/SE/company/5560160680/deadlines?today=2026-09-07"
{"kind": "general_meeting", "due_date": "2027-06-30", "days_until": 296, "rolled_forward"
Solo se muestra el principio; lee el resto en el repo