norsk

Running · one MCP server fronting every Norwegian public register and business system.

6MCP tools (fixed)
15catalog operations
6providers
9guides

The tool count does not grow with the provider count. Operations are rows in a searchable catalog, not tools — which is how this avoids the ~7 400 tools a naive one-tool-per-endpoint build would need.

Connect a harness

Claude Code — remote (this server):

claude mcp add --transport http norsk http://kikobling.no/mcp

Claude Desktop / Cursor / Windsurf — add to the MCP config file:

{
  "mcpServers": {
    "norsk": {
      "type": "http",
      "url": "http://kikobling.no/mcp"
    }
  }
}

Local stdio (no network round-trip, for a checkout of the repo):

{
  "mcpServers": {
    "norsk": { "command": "bun", "args": ["run", "/absolute/path/to/norsk/src/mcp/stdio.ts"] }
  }
}

Tools

ToolPurpose
norsk_searchSearch the catalog of Norwegian data operations (company registry, property/addresses, official statistics, exchange rates, weather, accounting systems).
norsk_describeGet the full parameter schema, returned fields and a worked example for one or more operation ids from norsk_search.
norsk_callExecute an operation and get shaped, token-budgeted data back.
norsk_resolveTurn a name, org number or address the user typed into a canonical Norwegian identifier.
norsk_providersList the data providers available, how many operations each has, and whether they are live or mocked.
norsk_guideRead a short guide on how to work with a topic: company research, annual accounts, addresses and property, statistics, Norwegian identifiers, keeping responses small, and troubleshooting errors.

Guides

Reachable in-agent as norsk_guide(name="…"), as MCP resources guide://<name>, and as markdown at /guide/<name>.

GuideCoversTokens
eiendom Geocoding Norwegian addresses, reverse geocoding a coordinate, cadastral gnr/bnr, and place names.876
feilsoking Every error code this server returns, what actually causes it, and the fix.956
identifikatorer orgnr, fødselsnummer, gnr/bnr, kommunenummer, næringskode, postnummer — what each one is and which are off-limits.867
kostnad Views, field projection, limits, pagination and the token budget — how to stop responses getting truncated.833
regnskap What the fields in brreg.regnskap.get mean, how to compare years, and the traps in Norwegian financial reporting.774
regnskapssystem Tripletex, Fiken and Visma — what is connected, why some data is mocked, and how to handle fixture responses honestly.858
selskap Recipes for company lookup — name to org number, board and management, branches, corporate structure, industry screening.1130
statistikk The three-step SSB workflow for 6000+ statbank tables, plus Norges Bank FX rates and MET forecasts.801
usage The search->call loop, what the five tools do, and which other guide to read next.600

Providers

ProviderOpsAuthStatus
brreg 5 none live
kartverket 3 none live
met 1 none live
norges-bank 1 none live
ssb 3 none live
tripletex 2 oauth mock

mock means fixture data served through the identical contract, so tier-1/2 providers can be exercised end-to-end before their access approvals land. Every mocked response is labelled source: mock so an agent can never present it as real.

Try it without a harness

# find an operation
curl -s 'http://kikobling.no/api/v1/search?query=styremedlemmer'

# resolve a name to an org number
curl -s 'http://kikobling.no/api/v1/resolve?text=Rema%201000'

# call an operation
curl -s 'http://kikobling.no/api/v1/call' -H 'content-type: application/json' \
  -d '{"id":"brreg.roller.get","params":{"orgnr":"883409442"}}'

Endpoints

POST /mcpStreamable HTTP MCP
GET /healthLiveness + catalog stats
GET /catalog.jsonEvery operation, machine-readable
/api/v1/{search,describe,call,resolve,providers}REST mirror of the tools