mcp-brreg
# mcp-brreg
An MCP server for **Enhetsregisteret**, the Norwegian Central Coordinating Register for Legal Entities.
Gives an AI agent direct access to the Norwegian company register: look up an organisation number, search by name or industry, list companies registered in a municipality this month, or read the registered board of a company.
## Why
Every Norwegian developer, analyst or salesperson eventually needs the same thing — company data from Brønnøysund — and ends up writing the same fetch wrapper. This is that wrapper, exposed as tools an agent can call directly.
Unlike a lot of public-data projects, there is no local copy and no scheduled harvest here. Enhetsregisteret is an official, documented, unauthenticated API that answers fast, so the server queries it live. The data you get is the register as it stands right now.
## Tools
| Tool | What it does |
|---|---|
| `search_companies` | Search by name, industry code (NACE), municipality or legal form |
| `get_company` | Full register record for one organisation number |
| `list_recent_registrations` | Companies entered into the register within a recent date window |
| `get_roles` | Registered roles — chair, board members, general manager |
Filters accept comma-separated values, so `municipalityNumber: "3103,3105"` covers several municipalities in one call and `organisationForm: "AS,ENK"` covers several legal forms.
## Install
```bash
git clone https://github.com/DimaVasilenko-Intune/mcp-brreg.git
cd mcp-brreg
npm install
npm run build
claude mcp add brreg -- node "$(pwd)/dist/server.js"
```
Any MCP client works — it is a plain stdio server:
```json
{
"mcpServers": {
"brreg": {
"command": "node",
"args": ["/absolute/path/to/mcp-brreg/dist/server.js"]
}
}
}
```
## Examples
Once connected, an agent can answer things like:
- *"Which limited companies were registered in Moss in the last 30 days?"*
- *"Look up organisation number 923609016 and tell me who chairs the board."*
- *"Find bakeries in Fredrikstad that have no website registered."*
## Data source
[Enhetsregisteret](https://data.brreg.no/enhetsregisteret/api/docs) at `data.brreg.no` — public, free and unauthenticated. No API key is needed and this server sends none. The register is maintained by Brønnøysundregistrene; this project only reshapes what it publishes.
A note on personal data: `get_roles` returns the names of people holding registered roles. That information is public by law and already served by the register to anyone who asks — this server does not widen access to it. If you build something on top, the usual rules about processing personal data still apply to you.
## Development
```bash
npm run dev # run from source
npm run build # compile to dist/
```
## License
MIT © Dima Vasilenko
TDQS
Scored across 4 tools
Each tool targets a distinct aspect of the register: searching by criteria, fetching full company details, listing recent registrations, and retrieving roles. There is no functional overlap; search_companies and list_recent_registrations differ by query type and purpose.
All tool names follow a consistent verb_noun pattern: search_companies, get_company, list_recent_registrations, get_roles. The verbs are action-oriented and the nouns are clear, making the pattern predictable and easy to infer.
With 4 tools, the server is well-scoped for a public company register API. Each tool serves a distinct common use case without unnecessary bloat, and the count is neither too sparse nor overwhelming.
The tool set covers the essential read operations for the domain: discovery (search and recent registrations), detailed lookup (get_company), and related structured data (get_roles). Since the register is public and read-only, no create/update/delete is expected. The surface is complete for typical consumer needs.