Skip to main content
Glama
reidar80

Norwegian Business Registry MCP Server

by reidar80

get_municipality

Retrieve detailed municipality information from the Norwegian Business Registry using a 4-digit municipality number.

Instructions

Get information about a specific Norwegian municipality

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kommunenummerYes4-digit municipality number (e.g., '0301' for Oslo)

Implementation Reference

  • Dispatches the get_municipality tool call: extracts the municipality number from arguments, fetches data via apiClient, and returns it as JSON text content.
    case "get_municipality":
      const { kommunenummer } = request.params.arguments as { kommunenummer: string };
      const municipality = await apiClient.getMunicipality(kommunenummer);
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(municipality, null, 2),
          },
        ],
      };
  • Defines the tool schema in the listTools response, including name, description, and input schema requiring 'kommunenummer' string.
      name: "get_municipality",
      description: "Get information about a specific Norwegian municipality",
      inputSchema: {
        type: "object",
        properties: {
          kommunenummer: { type: "string", description: "4-digit municipality number (e.g., '0301' for Oslo)" }
        },
        required: ["kommunenummer"]
      }
    },
  • BrregApiClient method that performs the HTTP request to fetch municipality data from BRREG API using the provided municipality number.
    async getMunicipality(municipalityNumber: string) {
      return this.makeRequest(`/enhetsregisteret/api/kommuner/${municipalityNumber}`);
  • Registers the get_municipality tool by including it in the tools list returned by ListToolsRequest handler.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools: [
          {
            name: "search_entities",
            description: "Search for Norwegian business entities (hovedenheter) with various filters",
            inputSchema: {
              type: "object",
              properties: {
                navn: { type: "string", description: "Entity name (1-180 characters)" },
                navnMetodeForSoek: { type: "string", enum: ["FORTLOEPENDE"], description: "Search method for name parameter" },
                organisasjonsnummer: { type: "array", items: { type: "string" }, description: "List of organization numbers (9 digits)" },
                overordnetEnhet: { type: "string", description: "Parent entity organization number" },
                fraAntallAnsatte: { type: "number", description: "Minimum number of employees" },
                tilAntallAnsatte: { type: "number", description: "Maximum number of employees" },
                konkurs: { type: "boolean", description: "Whether entity is bankrupt" },
                registrertIMvaregisteret: { type: "boolean", description: "Registered in VAT registry" },
                registrertIForetaksregisteret: { type: "boolean", description: "Registered in business registry" },
                registrertIStiftelsesregisteret: { type: "boolean", description: "Registered in foundation registry" },
                registrertIFrivillighetsregisteret: { type: "boolean", description: "Registered in voluntary organization registry" },
                underTvangsavviklingEllerTvangsopplosning: { type: "boolean", description: "Under forced liquidation" },
                underAvvikling: { type: "boolean", description: "Under liquidation" },
                underKonkursbehandling: { type: "boolean", description: "Under bankruptcy proceedings" },
                organisasjonsform: { type: "array", items: { type: "string" }, description: "Organizational forms" },
                hjemmeside: { type: "string", description: "Website" },
                kommunenummer: { type: "array", items: { type: "string" }, description: "Municipality numbers" },
                naeringskode: { type: "array", items: { type: "string" }, description: "Industry codes" },
                size: { type: "number", description: "Page size (default 20)" },
                page: { type: "number", description: "Page number" },
                sort: { type: "string", description: "Sort field and order (e.g., 'navn,ASC')" }
              }
            }
          },
          {
            name: "get_entity",
            description: "Get detailed information about a specific Norwegian business entity",
            inputSchema: {
              type: "object",
              properties: {
                organisasjonsnummer: { type: "string", description: "9-digit organization number" }
              },
              required: ["organisasjonsnummer"]
            }
          },
          {
            name: "get_entity_roles",
            description: "Get all roles for a specific entity",
            inputSchema: {
              type: "object",
              properties: {
                organisasjonsnummer: { type: "string", description: "9-digit organization number" }
              },
              required: ["organisasjonsnummer"]
            }
          },
          {
            name: "search_sub_entities",
            description: "Search for Norwegian business sub-entities (underenheter) with various filters",
            inputSchema: {
              type: "object",
              properties: {
                navn: { type: "string", description: "Sub-entity name (1-180 characters)" },
                navnMetodeForSoek: { type: "string", enum: ["FORTLOEPENDE"], description: "Search method for name parameter" },
                organisasjonsnummer: { type: "array", items: { type: "string" }, description: "List of organization numbers (9 digits)" },
                overordnetEnhet: { type: "string", description: "Parent entity organization number" },
                fraAntallAnsatte: { type: "number", description: "Minimum number of employees" },
                tilAntallAnsatte: { type: "number", description: "Maximum number of employees" },
                registrertIMvaregisteret: { type: "boolean", description: "Registered in VAT registry" },
                fraOppstartsdato: { type: "string", description: "Start date from (ISO-8601 yyyy-MM-dd)" },
                tilOppstartsdato: { type: "string", description: "Start date to (ISO-8601 yyyy-MM-dd)" },
                fraDatoEierskifte: { type: "string", description: "Ownership change date from (ISO-8601 yyyy-MM-dd)" },
                tilDatoEierskifte: { type: "string", description: "Ownership change date to (ISO-8601 yyyy-MM-dd)" },
                fraNedleggelsesdato: { type: "string", description: "Closure date from (ISO-8601 yyyy-MM-dd)" },
                tilNedleggelsesdato: { type: "string", description: "Closure date to (ISO-8601 yyyy-MM-dd)" },
                organisasjonsform: { type: "array", items: { type: "string" }, description: "Organizational forms" },
                hjemmeside: { type: "string", description: "Website" },
                kommunenummer: { type: "array", items: { type: "string" }, description: "Municipality numbers" },
                naeringskode: { type: "array", items: { type: "string" }, description: "Industry codes" },
                size: { type: "number", description: "Page size (default 20)" },
                page: { type: "number", description: "Page number" },
                sort: { type: "string", description: "Sort field and order" }
              }
            }
          },
          {
            name: "get_sub_entity",
            description: "Get detailed information about a specific Norwegian business sub-entity",
            inputSchema: {
              type: "object",
              properties: {
                organisasjonsnummer: { type: "string", description: "9-digit organization number" }
              },
              required: ["organisasjonsnummer"]
            }
          },
          {
            name: "get_organizational_forms",
            description: "Get all organizational forms used in the Norwegian business registry",
            inputSchema: {
              type: "object",
              properties: {
                sort: { type: "string", description: "Sort order (ASC/DESC)" },
                size: { type: "number", description: "Page size" },
                page: { type: "number", description: "Page number" }
              }
            }
          },
          {
            name: "get_organizational_form",
            description: "Get information about a specific organizational form",
            inputSchema: {
              type: "object",
              properties: {
                organisasjonskode: { type: "string", description: "Organizational form code (e.g., 'AS', 'ASA')" }
              },
              required: ["organisasjonskode"]
            }
          },
          {
            name: "get_municipalities",
            description: "Get all Norwegian municipalities",
            inputSchema: {
              type: "object",
              properties: {
                sort: { type: "string", description: "Sort order" },
                size: { type: "number", description: "Page size" },
                page: { type: "number", description: "Page number" }
              }
            }
          },
          {
            name: "get_municipality",
            description: "Get information about a specific Norwegian municipality",
            inputSchema: {
              type: "object",
              properties: {
                kommunenummer: { type: "string", description: "4-digit municipality number (e.g., '0301' for Oslo)" }
              },
              required: ["kommunenummer"]
            }
          },
          {
            name: "get_entity_updates",
            description: "Get updates on entities for maintaining a local copy of the registry",
            inputSchema: {
              type: "object",
              properties: {
                dato: { type: "string", description: "Show updates from this timestamp (ISO-8601)" },
                oppdateringsid: { type: "string", description: "Show updates from this update ID" },
                organisasjonsnummer: { type: "array", items: { type: "string" }, description: "Filter by organization numbers" },
                page: { type: "number", description: "Page number" },
                size: { type: "number", description: "Page size (default 20, max 10000)" },
                sort: { type: "string", description: "Sort by ID (ASC/DESC)" }
              }
            }
          },
          {
            name: "get_sub_entity_updates",
            description: "Get updates on sub-entities for maintaining a local copy of the registry",
            inputSchema: {
              type: "object",
              properties: {
                dato: { type: "string", description: "Show updates from this timestamp (ISO-8601)" },
                oppdateringsid: { type: "string", description: "Show updates from this update ID" },
                organisasjonsnummer: { type: "array", items: { type: "string" }, description: "Filter by organization numbers" },
                page: { type: "number", description: "Page number" },
                size: { type: "number", description: "Page size (default 20, max 10000)" },
                sort: { type: "string", description: "Sort by ID (ASC/DESC)" }
              }
            }
          },
          {
            name: "get_role_updates",
            description: "Get role updates for entities",
            inputSchema: {
              type: "object",
              properties: {
                afterTime: { type: "string", description: "Get events after this timestamp (ISO-8601)" },
                afterId: { type: "number", description: "Get events after this ID" },
                organisasjonsnummer: { type: "array", items: { type: "string" }, description: "Filter by organization numbers" },
                size: { type: "number", description: "Number of events to retrieve (default 100, max 10000)" }
              }
            }
          },
          {
            name: "search_voluntary_organizations",
            description: "Search voluntary organizations in the voluntary organization registry",
            inputSchema: {
              type: "object",
              properties: {
                searchAfter: { type: "string", description: "Search after this organization number for pagination" },
                size: { type: "number", description: "Maximum number of organizations (default 100)" },
                spraak: { type: "string", description: "Language for code descriptions (e.g., 'NOB')" }
              }
            }
          },
          {
            name: "get_voluntary_organization",
            description: "Get detailed information about a specific voluntary organization",
            inputSchema: {
              type: "object",
              properties: {
                organisasjonsnummer: { type: "string", description: "9-digit organization number" },
                spraak: { type: "string", description: "Language for code descriptions (e.g., 'NOB')" }
              },
              required: ["organisasjonsnummer"]
            }
          },
          {
            name: "get_icnpo_categories",
            description: "Get ICNPO (International Classification of Non-Profit Organisation) categories",
            inputSchema: {
              type: "object",
              properties: {
                spraak: { type: "string", description: "Language for descriptions (e.g., 'NOB')" }
              }
            }
          }
        ],
      };

Latest Blog Posts

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/reidar80/BRREG-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server