Brreg MCP Server
A Model Context Protocol (MCP) server for interacting with Brønnøysundregistrene (Brreg) API - Norwegian Business Registry.
Features
- Company Search: Search for companies with various filters
- Company Details: Get detailed information about specific companies
- Company Roles: Retrieve roles and board members
- Subunit Search: Search for business units/subunits
- Subunit Details: Get detailed information about specific subunits
- Organization Forms: Get organization forms and their descriptions
- Municipalities: Get Norwegian municipalities and their details
- Role Information: Get role types, role group types, and representatives
- Updates Tracking: Get updates for companies and subunits
- NACE Codes: Search and filter by NACE industry codes with hierarchical support
- Error Handling: Comprehensive error handling with validation
- Type Safety: Full TypeScript support with proper type definitions
Installation
Option 1: Install from npm (Recommended)
# Install globally
npm install -g brreg-mcp-server
# Or install locally in your project
npm install brreg-mcp-server
Option 2: Clone from source
# Clone repository
git clone https://github.com/david/brreg-mcp-server.git
cd brreg-mcp-server
# Install dependencies
npm install
# Build project
npm run build
# Start server
npm start
Development
# Run in development mode
npm run dev
MCP Tools
1. search_companies
Search for companies in Norwegian Business Registry.
Parameters:
name(string): Company name (free text, 1-180 characters)organizationNumber(array): Organization numbers (9 digits each)parentCompany(string): Parent company organization numberfromEmployees(number): Minimum number of employeestoEmployees(number): Maximum number of employeesbankrupt(boolean): Filter by bankruptcy statusregisteredInVAT(boolean): Filter by VAT registrationregisteredInBusinessRegister(boolean): Filter by business register statusorganizationForm(array): Organization forms (e.g., AS, ENK)municipalityNumber(array): Municipality numbers (4 digits each)industryCode(array): Industry codes (e.g., 41.109, 01.1)page(number): Page number (default: 1)size(number): Page size (default: 20)sort(string): Sort field and order (e.g., antallAnsatte,ASC)
2. get_company
Get detailed information about a specific company.
Parameters:
organizationNumber(string, required): Organization number (9 digits)
3. get_company_roles
Get all roles for a specific company.
Parameters:
organizationNumber(string, required): Organization number (9 digits)
4. search_subunits
Search for business units/subunits.
Parameters:
name(string): Subunit nameorganizationNumber(array): Organization numbersparentCompany(string): Parent companyfromEmployees(number): Minimum employeestoEmployees(number): Maximum employeesregisteredInVAT(boolean): VAT registration statuspage(number): Page numbersize(number): Page size
5. get_subunit
Get detailed information about a specific subunit.
Parameters:
organizationNumber(string, required): Organization number (9 digits)
6. get_organization_forms
Get all organization forms.
Parameters:
page(number): Page number (default: 1)size(number): Page size (default: 20)sort(string): Sort field and order (e.g., kode,ASC)
7. get_organization_forms_for_units
Get organization forms for main units.
Parameters:
page(number): Page number (default: 1)size(number): Page size (default: 20)sort(string): Sort field and order (e.g., kode,ASC)
8. get_organization_forms_for_subunits
Get organization forms for subunits.
Parameters:
page(number): Page number (default: 1)size(number): Page size (default: 20)sort(string): Sort field and order (e.g., kode,ASC)
9. get_organization_form
Get specific organization form by code.
Parameters:
organizationCode(string, required): Organization form code (e.g., AS, ENK, ASA)
10. get_municipalities
Get all Norwegian municipalities.
Parameters:
page(number): Page number (default: 1)size(number): Page size (default: 20)sort(string): Sort field and order (e.g., navn,ASC)
11. get_municipality
Get specific municipality by municipality number.
Parameters:
municipalityNumber(string, required): Municipality number (4 digits)
12. get_role_types
Get all role types.
13. get_role_group_types
Get all role group types.
14. get_role_representatives
Get all role representatives.
15. get_company_updates
Get updates for companies with optional filters.
Parameters:
date(string): Show updates from and including this timestamp (ISO-8601)updatedBefore(string): Show updates to and including this timestamp (ISO-8601)updateId(number): Show only updates from and including update ID (>= 1)organizationNumber(array): Comma-separated list of organization numbersincludeChanges(boolean): Include the changes that caused the update to be publishedpage(number): Page number (default: 1)size(number): Page size (default: 20, max: 10000)sort(string): Sort field and order (e.g., id,ASC). Only id is supported
16. get_subunit_updates
Get updates for subunits with optional filters.
Parameters:
date(string): Show updates from and including this timestamp (ISO-8601)updatedBefore(string): Show updates to and including this timestamp (ISO-8601)updateId(number): Show only updates from and including update ID (>= 1)organizationNumber(array): Comma-separated list of organization numbersincludeChanges(boolean): Include the changes that caused the update to be publishedpage(number): Page number (default: 1)size(number): Page size (default: 20, max: 10000)sort(string): Sort field and order (e.g., id,ASC). Only id is supported
17. search_nace_codes
Search NACE industry codes with hierarchical filtering support using the full SN2025 classification.
Parameters:
searchText(string): Text to search for in NACE code names, short names, codes, or notesparentCode(string): Get all child codes for a specific NACE parent code (e.g., "01.1" will return all subcategories)exactCode(string): Get specific NACE code by exact codelevel(string): Filter by NACE level (1-5). Level 1 = sections, Level 2 = divisions, Level 3 = groups, Level 4 = classes, Level 5 = national subcategoriesincludeHierarchy(boolean): Include full hierarchical path in results (default: true)includeNotes(boolean): Include detailed notes in results (default: false)
18. get_services
Get all available services from Brreg API.
Usage Examples
Search for software companies in Oslo
{
"name": "search_companies",
"arguments": {
"industryCode": ["62"],
"municipalityNumber": ["0301"],
"fromEmployees": 10,
"size": 50
}
}
Get company details
{
"name": "get_company",
"arguments": {
"organizationNumber": "123456789"
}
}
Get subunit details
{
"name": "get_subunit",
"arguments": {
"organizationNumber": "987654321"
}
}
Get organization forms
{
"name": "get_organization_forms",
"arguments": {
"page": 1,
"size": 50
}
}
Get specific organization form
{
"name": "get_organization_form",
"arguments": {
"organizationCode": "AS"
}
}
Get municipalities
{
"name": "get_municipalities",
"arguments": {
"page": 1,
"size": 20,
"sort": "navn,ASC"
}
}
Get company updates
{
"name": "get_company_updates",
"arguments": {
"date": "2024-01-01T00:00:00.000Z",
"size": 50,
"includeChanges": true
}
}
Search NACE codes
{
"name": "search_nace_codes",
"arguments": {
"searchText": "software",
"level": "4",
"includeHierarchy": true
}
}
Get NACE codes by parent
{
"name": "search_nace_codes",
"arguments": {
"parentCode": "62",
"includeNotes": true
}
}
Configuration
Claude Desktop Setup
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"brreg": {
"command": "npx",
"args": ["brreg-mcp-server"]
}
}
}
Or if installed globally:
{
"mcpServers": {
"brreg": {
"command": "brreg-mcp-server"
}
}
}
Error Handling
The server provides comprehensive error handling:
- Validation Errors: Invalid input parameters
- Not Found Errors: Company or resource not found
- Rate Limit Errors: API rate limits exceeded
- Server Errors: Temporary server issues
- Network Errors: Connection problems
Data Types
The server provides proper TypeScript types for:
- Company information
- Subunit data
- Role information
- API responses
- Error responses
License
MIT License
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
Support
For issues related to the Brreg API itself, visit Brreg's documentation.
For issues with this MCP server, please create an issue in the repository.
