elpriser-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@elpriser-mcpwhat is the current electricity price in DK1?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
elpriser-mcp
MCP server for Danish electricity prices — current spot price, cheapest hours, and a 7-day forecast for DK1 and DK2, straight from elpriser.org.
A Model Context Protocol server that lets an LLM (Claude Desktop, etc.) answer questions like:
"Hvad er elprisen lige nu?" / "What does electricity cost right now in Denmark?"
"Hvornår er strøm billigst i morgen?" — find the cheapest hours to charge the EV / run the heat pump
"Vis elpriser i dag time for time for DK2"
"Hvordan ser elprisprognosen ud de næste 7 dage?"
Data comes from the free, public elpriser.org API, which is sourced from Energi Data Service (Energinet) / Nord Pool. Prices can be the raw spot price or the total price you actually pay per kWh (incl. system & transmission tariffs, electricity tax and 25% VAT). No API key required.
Tools
Tool | What it does |
| Current price for this hour (DK1/DK2) |
| All 24 hourly prices for a date |
| The N cheapest hours of the day (EV/heat-pump scheduling) |
| 7-day forecast (actual for today/tomorrow, estimate beyond) |
| Net company (netselskab) for a lat/lng — for exact total price |
All tools take an area (DK1 or DK2, default DK1) and most take a mode:
spot_ex— raw spot price, no VATspot_inkl— spot price incl. 25% VATinkl_alt(default) — total price incl. all tariffs + electricity tax + VATinkl_alt_minus— total without electricity tax
Related MCP server: aria-mcp-elpriser
Install
Requires Node.js ≥ 18.
Claude Desktop
Add to your claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"elpriser": {
"command": "npx",
"args": ["-y", "elpriser-mcp"]
}
}
}Restart Claude Desktop. You should see the elpriser tools available.
Any other MCP client
Run the server over stdio:
npx -y elpriser-mcpOr install globally:
npm install -g elpriser-mcp
elpriser-mcpExamples
You: Hvornår er strøm billigst i morgen i DK1?
Claude (calls
get_cheapest_hours area=DK1 hours=5 date=…): De billigste timer i morgen er 02–05 og 13–14 …
Configuration
Env var | Default | Purpose |
|
| Override the API base (e.g. for testing). |
How it works
elpriser-mcp is a thin wrapper over the public elpriser.org REST API
(/api/now, /api/prices, /api/schedule, /api/forecast,
/api/supplierlookup). The full OpenAPI 3.1 spec lives at
https://elpriser.org/api/openapi.json and human docs at
https://elpriser.org/api.
License
MIT © elpriser.org
Built and maintained alongside elpriser.org — aktuelle elpriser og spotpriser time for time for hele Danmark.
Available Tools
5 toolsfind_net_companyA
Look up the Danish net company (netselskab) for a location by latitude/longitude — needed to compute the exact total price for an address. Use for "hvilket netselskab har jeg".
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude (WGS84). | |
| lng | Yes | Longitude (WGS84). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description mentions it's a lookup operation but does not disclose whether it's read-only, what side effects exist, or what the output format is. This is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence plus a usage hint, with no unnecessary words or redundancy. It is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description covers the purpose and usage. Lacks return value information, but given simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides clear descriptions for lat and lng (WGS84). The description adds context about locality but not additional parameter meaning. Schema coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: lookup a Danish net company by latitude/longitude. It provides context ('needed to compute the exact total price for an address') and includes a Danish query phrase, effectively distinguishing it from sibling price-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a specific use case and query example ('Use for "hvilket netselskab har jeg"'). It implicitly guides usage, but does not explicitly mention when not to use or provide alternatives, though sibling tools are clearly unrelated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cheapest_hoursA
Find the N cheapest hours of the day for a price zone — for scheduling EV charging, heat pump, dishwasher etc. Use for "hvornår er strøm billigst i dag/i morgen".
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Danish price zone: DK1 = Vestdanmark (Jylland og Fyn), DK2 = Østdanmark (Sjælland, Lolland-Falster, Bornholm). | DK1 |
| mode | No | Price view: spot_ex = raw spot price (no VAT); spot_inkl = spot incl. 25% VAT; inkl_alt = total price incl. system/transmission tariffs + electricity tax + VAT (what you actually pay); inkl_alt_minus = total without electricity tax. | inkl_alt |
| hours | No | How many cheapest hours to return. | |
| date | No | Date as YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only describes the tool's function without disclosing any behavioral traits (e.g., data source, latency, error handling, or whether it's a read operation). A read operation is implied but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose. It is efficient and avoids excess text, though it could be slightly expanded for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool does but not the output format or how results are returned. Given no output schema, this is a gap. However, the tool's simplicity and clear parameters partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add any parameter-specific meaning beyond what the schema provides, maintaining a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds the N cheapest hours of the day for a price zone, with concrete use cases like scheduling EV charging. It distinguishes from siblings (e.g., get_current_price, get_price_forecast) by focusing on cheapest hours.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use (scheduling appliances) and includes a natural language query example in Danish. Does not explicitly exclude cases or mention alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_priceA
Get the current Danish electricity price (this hour) for a price zone. Use for "hvad er elprisen lige nu / hvad koster strøm nu".
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Danish price zone: DK1 = Vestdanmark (Jylland og Fyn), DK2 = Østdanmark (Sjælland, Lolland-Falster, Bornholm). | DK1 |
| mode | No | Price view: spot_ex = raw spot price (no VAT); spot_inkl = spot incl. 25% VAT; inkl_alt = total price incl. system/transmission tariffs + electricity tax + VAT (what you actually pay); inkl_alt_minus = total without electricity tax. | inkl_alt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the tool's purpose, with no information about read-only nature, side effects, rate limits, or data freshness. For a simple query tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that efficiently convey purpose and usage context. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and no annotations, the description is adequate but lacks details like data source or refresh rate. It is complete enough given the low complexity, but could be slightly improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (area and mode) with detailed enum descriptions. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current Danish electricity price for a price zone, using a specific verb and resource. It includes a usage example in Danish, and implicitly distinguishes from sibling tools like 'get_price_forecast' or 'get_today_prices' by focusing on the current hour.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for ...' with example user queries, indicating when to use. However, it does not provide when-not-to-use or mention alternatives, though sibling tools cover other temporal queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_forecastA
Get a 7-day electricity price forecast for a price zone (actual day-ahead prices for today/tomorrow, weather-corrected estimate beyond). Use for "elpriser de næste dage / prognose".
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Danish price zone: DK1 = Vestdanmark (Jylland og Fyn), DK2 = Østdanmark (Sjælland, Lolland-Falster, Bornholm). | DK1 |
| mode | No | Price view: spot_ex = raw spot price (no VAT); spot_inkl = spot incl. 25% VAT; inkl_alt = total price incl. system/transmission tariffs + electricity tax + VAT (what you actually pay); inkl_alt_minus = total without electricity tax. | inkl_alt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the time horizon (7 days) and the data source distinction (actual vs estimate). However, it does not mention the return format, potential error conditions, or any other behavioral traits like rate limits. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the key information: the tool's capability and a usage hint. Every word earns its place; no fluff. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and moderate complexity (2 params, 7-day forecast), the description is fairly complete: it explains the time range, data source distinction, and provides a usage hint. It does not describe the output format, which would improve completeness, but the essential context is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both parameters (enum values explained). The description adds minimal extra context (price zone and mode meanings are already covered in schema). Baseline 3 is appropriate as the description does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a 7-day electricity price forecast for a price zone. It distinguishes between actual day-ahead prices and weather-corrected estimates, and provides a concrete use case in Danish. The purpose is specific and differentiates from sibling tools like get_current_price or get_today_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a usage hint ('Use for elpriser de næste dage / prognose') which indicates when to apply it. It does not explicitly mention when not to use it or compare to alternatives, but the context of siblings and the forecast nature provides implicit guidance. Close to a 5 but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_today_pricesA
Get all 24 hourly electricity prices for a given date (default: today) in a price zone. Use for "elpriser i dag / time for time".
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Danish price zone: DK1 = Vestdanmark (Jylland og Fyn), DK2 = Østdanmark (Sjælland, Lolland-Falster, Bornholm). | DK1 |
| mode | No | Price view: spot_ex = raw spot price (no VAT); spot_inkl = spot incl. 25% VAT; inkl_alt = total price incl. system/transmission tariffs + electricity tax + VAT (what you actually pay); inkl_alt_minus = total without electricity tax. | inkl_alt |
| date | No | Date as YYYY-MM-DD. Defaults to today (Danish local time). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the tool returns 'all 24 hourly electricity prices', but lacks details such as whether prices are in order, the unit (e.g., DKK/kWh), or any timezone considerations. No mention of data source, update frequency, or potential delays.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences. The first sentence states the core functionality and defaults, and the second provides a usage hint. There is no unnecessary text, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters with no output schema, so the description should partially compensate. It mentions 'all 24 hourly electricity prices' but does not specify the structure (e.g., list of objects with hour and price) or any units. This is adequate but leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond what the schema already provides for each parameter (area, mode, date). The enums and defaults are well-documented in the schema, so the description offers no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all 24 hourly electricity prices for a given date in a price zone, and includes a specific use case hint: 'elpriser i dag / time for time'. This distinguishes it from sibling tools like get_current_price (single current price) and get_price_forecast (forecast).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context with 'Use for "elpriser i dag / time for time"', indicating when to use it. However, it does not explicitly exclude other scenarios or mention alternatives like get_cheapest_hours, which could be used for filtering. The sibling names help but are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct aspect of electricity pricing: net company lookup, cheapest hours, current price, forecast, and hourly prices. No overlap or ambiguity.
Most tools use the 'get_' prefix (get_cheapest_hours, get_current_price, get_price_forecast, get_today_prices), but one tool uses 'find_' (find_net_company), introducing a minor inconsistency.
Five tools cover the core needs of Danish electricity price queries without being excessive or insufficient. The count is well-scoped for the domain.
The set covers current price, daily/hourly prices, cheapest hours, forecast, and net company lookup. Missing historical price retrieval, but the essential workflows are supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Energi Data Service (Energinet) MCP — Denmark's official open energy data.
Real-time electricity price signals for AI agents. Spot prices, cheapest hours, and contract recommendations. 31 countries across Europe and Oceania. No authentication required.
Real-time electricity prices for AI agents. 40+ countries, 100+ zones. No auth required.
Octopus Energy public API MCP — UK energy tariffs & products.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides access to Danish energy data from Energinet, including real-time electricity spot prices, CO2 emissions, and production mix. It enables users to monitor grid status and identify the most cost-effective hours for energy-intensive tasks.415MIT
- AlicenseAqualityCmaintenanceMCP server for fetching Danish electricity spot prices (DK1/DK2) using the free elprisenligenu.dk API, providing tools to get current price, cheapest hours, and price summaries.4MIT
- FlicenseNot gradedqualityBmaintenanceA read-only MCP server that exposes European day-ahead electricity prices for ~41 bidding zones via tools like hourly prices, cheapest hours, current price, and cross-zone summary, enabling AI agents to query energy market data.1
- AlicenseNot gradedqualityBmaintenanceMCP server that gives AI agents real-time German electricity price forecasts.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/x2q/elpriser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server