Running · one MCP server fronting every Norwegian public register and business system.
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.
Claude Code — remote (this server):
claude mcp add --transport http norsk http://kikobling.hannisdal.dev/mcp
Claude Desktop / Cursor / Windsurf — add to the MCP config file:
{
"mcpServers": {
"norsk": {
"type": "http",
"url": "http://kikobling.hannisdal.dev/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"] }
}
}
| Tool | Purpose |
|---|---|
norsk_search | Search the catalog of Norwegian data operations (company registry, property/addresses, official statistics, exchange rates, weather, accounting systems). |
norsk_describe | Get the full parameter schema, returned fields and a worked example for one or more operation ids from norsk_search. |
norsk_call | Execute an operation and get shaped, token-budgeted data back. |
norsk_resolve | Turn a name, org number or address the user typed into a canonical Norwegian identifier. |
norsk_providers | List the data providers available, how many operations each has, and whether they are live or mocked. |
| Provider | Ops | Auth | Status |
|---|---|---|---|
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.
# find an operation
curl -s 'http://kikobling.hannisdal.dev/api/v1/search?query=styremedlemmer'
# resolve a name to an org number
curl -s 'http://kikobling.hannisdal.dev/api/v1/resolve?text=Rema%201000'
# call an operation
curl -s 'http://kikobling.hannisdal.dev/api/v1/call' -H 'content-type: application/json' \
-d '{"id":"brreg.roller.get","params":{"orgnr":"883409442"}}'
POST /mcp | Streamable HTTP MCP |
GET /health | Liveness + catalog stats |
GET /catalog.json | Every operation, machine-readable |
/api/v1/{search,describe,call,resolve,providers} | REST mirror of the tools |