mcp-nordic
# mcp-nordic
One MCP server for all Nordic data. 33 tools across 10 modules, zero API keys required.
## What's included
| Module | Tools | Data Source |
|--------|-------|-------------|
| ๐ฉ๐ฐ `dk-cvr` | `dk_cvr_search`, `dk_cvr_lookup` | [cvrapi.dk](https://cvrapi.dk) |
| ๐ฉ๐ฐ `dk-addresses` | `dk_address_search`, `dk_reverse_geocode`, `dk_postal_code_lookup`, `dk_municipality_lookup`, `dk_nearby_addresses` | [DAWA](https://dawadocs.dataforsyningen.dk) |
| ๐ฉ๐ฐ `dk-weather` | `dk_current_weather`, `dk_weather_forecast`, `dk_compare_weather` | [DMI HARMONIE 2km](https://open-meteo.com) |
| ๐ฉ๐ฐ `dk-energy` | `dk_electricity_prices`, `dk_co2_emissions`, `dk_energy_mix`, `dk_cheapest_hours` | [Energi Data Service](https://www.energidataservice.dk) |
| ๐ณ๐ด `no-companies` | `no_search_companies`, `no_company_lookup`, `no_search_subunits`, `no_company_roles` | [Brรธnnรธysund](https://data.brreg.no) |
| ๐ณ๐ด `no-weather` | `no_current_weather`, `no_weather_forecast` | [MET Norway/yr.no](https://api.met.no) |
| ๐ซ๐ฎ `fi-companies` | `fi_search_companies`, `fi_company_lookup`, `fi_search_by_industry`, `fi_recent_registrations` | [PRH/YTJ](https://avoindata.prh.fi) |
| ๐ซ๐ฎ `fi-weather` | `fi_current_weather`, `fi_weather_forecast`, `fi_compare_weather` | [Open-Meteo](https://open-meteo.com) |
| ๐ณ๐ด `no-addresses` | `no_address_search`, `no_reverse_geocode`, `no_postal_code_lookup`, `no_municipality_addresses` | [Kartverket](https://ws.geonorge.no/adresser/v1/) |
| ๐ธ๐ช `se-weather` | `se_current_weather`, `se_weather_forecast` | [SMHI](https://opendata.smhi.se) |
All APIs are free, open, and require no authentication.
## Quick start
```json
{
"mcpServers": {
"nordic": {
"command": "npx",
"args": ["-y", "mcp-nordic"]
}
}
}
```
Or clone and run directly:
```bash
git clone https://github.com/robobobby/mcp-nordic.git
cd mcp-nordic
npm install
node src/index.js
```
## Selective loading
Only need Danish weather and Finnish companies?
```json
{
"mcpServers": {
"nordic": {
"command": "npx",
"args": ["-y", "mcp-nordic", "--dk-weather", "--fi-companies"]
}
}
}
```
Available flags: `--dk-cvr`, `--dk-addresses`, `--dk-weather`, `--dk-energy`, `--no-companies`, `--no-addresses`, `--no-weather`, `--fi-companies`, `--fi-weather`, `--se-weather`, `--all` (default).
## Examples
Ask your AI assistant:
- "Look up the company Novo Nordisk in Denmark"
- "What's the weather in Copenhagen vs Oslo?"
- "What's the forecast for Stockholm this weekend?"
- "When's the cheapest time to charge my EV today in DK1?"
- "Find recently registered Finnish companies in the tech sector"
- "What's the current energy mix in Denmark?"
- "Search for Norwegian companies in the oil industry"
- "Weather in Tromsรธ vs Kiruna?"
- "Find addresses on Bryggen in Bergen"
- "What's at coordinates 59.91, 10.75 in Norway?"
## Country coverage
| Country | Companies | Weather | Addresses | Energy |
|---------|-----------|---------|-----------|--------|
| ๐ฉ๐ฐ Denmark | โ
CVR | โ
DMI | โ
DAWA | โ
Energinet |
| ๐ณ๐ด Norway | โ
Brรธnnรธysund | โ
MET/yr.no | โ
Kartverket | โ |
| ๐ซ๐ฎ Finland | โ
PRH/YTJ | โ
Open-Meteo | โ | โ |
| ๐ธ๐ช Sweden | โ | โ
SMHI | โ | โ |
## Cloudflare Workers deployment (hosted MCP)
This repo now includes a Worker entrypoint using MCP's web-standard streamable HTTP transport.
### Deploy
```bash
npm install
npm run worker:deploy
```
### Endpoints
- `https://<your-worker>.workers.dev/health`
- `https://<your-worker>.workers.dev/mcp`
Use the `/mcp` URL as your hosted MCP endpoint.
## Individual servers
Each module is also available as a standalone server:
- [mcp-danish-cvr](https://github.com/robobobby/mcp-danish-cvr)
- [mcp-danish-addresses](https://github.com/robobobby/mcp-danish-addresses)
- [mcp-danish-weather](https://github.com/robobobby/mcp-danish-weather)
- [mcp-danish-energy](https://github.com/robobobby/mcp-danish-energy)
- [mcp-norwegian-companies](https://github.com/robobobby/mcp-norwegian-companies)
- [mcp-norwegian-weather](https://github.com/robobobby/mcp-norwegian-weather)
- [mcp-finnish-companies](https://github.com/robobobby/mcp-finnish-companies)
- [mcp-swedish-weather](https://github.com/robobobby/mcp-swedish-weather)
- [mcp-finnish-weather](https://github.com/robobobby/mcp-finnish-weather)
- [mcp-norwegian-addresses](https://github.com/robobobby/mcp-norwegian-addresses)
## License
MIT
TDQS
Scored across 33 tools
The tools are well-organized by country and domain (e.g., address, weather, company), making it easy to distinguish between them. However, some overlap exists within domains, such as multiple company search tools per country (e.g., dk_cvr_lookup and dk_cvr_search), which could cause minor confusion if an agent is unsure which to use for specific queries.
The naming follows a highly consistent pattern: country code prefix (dk_, fi_, no_, se_) followed by a descriptive verb_noun format (e.g., address_search, current_weather). This predictability makes it easy for agents to understand and navigate the toolset without ambiguity.
With 33 tools, the count is borderline high for a single server, potentially overwhelming for agents. While the tools cover multiple Nordic countries and domains comprehensively, the scope might be better split into sub-servers (e.g., by country or function) to improve manageability and reduce cognitive load.
The toolset provides complete coverage for its intended domain of Nordic data, including addresses, weather, and company registries across Denmark, Finland, Norway, and Sweden. It supports key operations like search, lookup, and comparison, with no obvious gaps that would hinder agent workflows for these use cases.