Apiverket MCP Server
This server provides AI assistants with access to Swedish public government data through the Apiverket API, covering 139 endpoints across 16 categories.
Discover endpoints (
govdata_discover): Search and browse available API endpoints by keyword or category without making API calls — useful for finding the right endpoint before querying.Query government data (
govdata_query): Call any discovered endpoint withpath_paramsandquery_paramsto retrieve structured JSON data across domains like weather, transport, jobs, company info, and more.Inspect account & usage (
govdata_account): Check API key mode (sandbox/live), tier, daily usage, company-search/lookup quotas, and upgrade-relevant limits.Error handling & pagination: Receive structured recovery guidance on failures (e.g., 429 rate limit errors) and truncated large responses with pagination instructions.
Automated workflow guidance: Predefined discovery workflows support data families including transport, weather, geography, municipalities, jobs, government, culture, education, tourism, environment, and company data.
Data domains include:
🌦️ Weather & Climate: forecasts, warnings, air quality, observations
🚆 Transport: train departures, transit stops, transport statistics
🏛️ Government & Parliament: documents, members, committees, SFS/SOU legislation
👮 Police & Safety: events and stations by location
💼 Jobs: search, taxonomy, concepts, autocomplete
🏙️ Geography & Municipalities: population, KPIs, geometry, county/municipality codes
🏢 Company Data: search by name, look up by organisation number
⚡ Economy & Finance: exchange rates, electricity prices
🌱 Environment: EV charger locations, environmental data
🎓 Education, Culture, Tourism, and more
Apiverket MCP Server
An MCP (Model Context Protocol) server that gives AI assistants access to Swedish public data through the Apiverket API. It works with Claude Code, Claude Desktop, Cursor, VS Code, Gemini CLI-style MCP clients, and other MCP-compatible tools.
What it does
Tool | Purpose |
| Search and browse supported Apiverket endpoints before choosing a path |
| Call a discovered endpoint and return structured JSON or recovery guidance |
| Inspect sanitized key mode, tier, daily usage, company-search/company-lookup quota, and upgrade-relevant limits |
Agents should call govdata_discover before govdata_query instead of guessing /v1 paths. After a 429 or when a user asks about limits, agents should call govdata_account.
Related MCP server: Kolada MCP Server
How Agents Should Use Apiverket
Discover: call
govdata_discoverwith the user's topic, not a guessed path.Check context: call
govdata_accountfor quota, tier, and production-readiness questions.Query: call
govdata_queryonly with a supported endpoint returned by discovery.Recover: if a request fails, use the structured recovery guidance before retrying.
Discovery includes family workflows for transport, weather, geography, municipalities, jobs, government, culture, education, tourism, environment, and company data. These workflows explain search/list/detail patterns, required codes, coordinates, date formats, pagination, and common recovery steps.
Quick Start
Claude Code / Claude Desktop
{
"mcpServers": {
"apiverket": {
"command": "npx",
"args": ["-y", "apiverket-mcp-server"],
"env": {
"GOVDATA_API_URL": "https://apiverket.se",
"GOVDATA_API_KEY": "sk_test_demo"
}
}
}
}Cursor / VS Code
{
"servers": {
"apiverket": {
"command": "npx",
"args": ["-y", "apiverket-mcp-server"],
"env": {
"GOVDATA_API_URL": "https://apiverket.se",
"GOVDATA_API_KEY": "sk_test_demo"
}
}
}
}Gemini CLI-Style MCP Config
{
"mcpServers": {
"apiverket": {
"command": "npx",
"args": ["-y", "apiverket-mcp-server"],
"env": {
"GOVDATA_API_URL": "https://apiverket.se",
"GOVDATA_API_KEY": "sk_test_demo"
}
}
}
}Keys And Limits
Variable | Default | Description |
|
| Apiverket API base URL |
|
| Sandbox key by default. Use a |
sk_test_demo is for setup and safe sandbox responses. It is useful for checking that your MCP client is wired correctly, but production workflows should use a live key. Free live keys are good for exploration; upgrade when daily API or company-search limits block a real workflow.
Company Data With Agents
Company search and company lookup have different jobs:
Use
govdata_discover(query: "company")to find the supported company endpoints.Use
/v1/companies/searchwhen the user only has a company name or uncertain organisation number.Cache the returned
org_number.Use
/v1/companies/{orgNumber}for repeated enrichment and automation.If company search returns 429, stop retrying until
reset_at; use lookup when org numbers are already known.
Company search and live company lookup have separate daily quota context by tier. govdata_account shows the configured key tier, remaining company-search quota, remaining company-lookup quota, reset time, and available upgrade tiers. Apiverket does not expose company board, officer, owner, or UBO subresource paths through the company API.
Common Family Workflows
Family | Good first query | Agent workflow |
Transport |
| Use station codes for |
Weather |
| Use city endpoints for simple weather, warnings for national alerts, and station/lat/lon flows for air quality or observations. |
Geography & municipalities |
| Find official municipality/county/place codes first; search KPIs before municipality KPI detail calls; request geometry only when needed. |
Jobs |
| Use |
Government & safety |
| Choose calendar, documents, members, committees, SFS, SOU, police events, or police stations based on the question. |
Culture, education & environment |
| Search first, then reuse returned IDs/codes for detail endpoints; ensure |
Tool Examples
# Discover endpoints
govdata_discover(query: "electricity prices")
govdata_discover(category: "Weather & Climate")
govdata_discover(query: "train departures")
govdata_discover(query: "municipality KPI")
govdata_discover(query: "jobs taxonomy")
# Query data after discovery
govdata_query(endpoint: "/v1/weather/{city}", path_params: {city: "stockholm"})
govdata_query(endpoint: "/v1/transport/trains/{station}", path_params: {station: "Cst"})
govdata_query(endpoint: "/v1/jobs/search", query_params: {q: "developer", limit: 5})
govdata_query(endpoint: "/v1/taxonomy/types")
govdata_query(endpoint: "/v1/companies/search", query_params: {q: "volvo", limit: 10})
govdata_query(endpoint: "/v1/companies/{orgNumber}", path_params: {orgNumber: "5560125790"})
# Inspect tier and quota state
govdata_account()Build From Source
git clone https://github.com/vinvuk/apiverket-mcp.git
cd apiverket-mcp
npm install
npm run buildHow It Works
The MCP server runs locally over stdio.
govdata_discoversearches the built-in endpoint catalog without an API call.govdata_querycalls Apiverket with the configured API key.Structured API errors are turned into recovery guidance for agents.
Large responses are truncated with pagination guidance.
Requirements
Node.js >= 18
An Apiverket API key, or
sk_test_demofor sandbox setup
License
MIT
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vinvuk/apiverket-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server