portugal-fuel-ev-mcp
Click on "Deploy 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., "@portugal-fuel-ev-mcpcheapest diesel in Sintra for 5 stations"
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.
portugal-fuel-ev-mcp
MCP server that answers "where is the cheapest place to fill up / charge near me in Portugal?", for combustion cars and electric cars, so Claude (or any MCP client) can look it up from official open data.
Read-only, no keys, no account. Fuel prices come from DGEG's official price site; EV chargers, live status and prices come from the MOBI.E network feeds on Portugal's National Access Point. Not affiliated with DGEG, MOBI.E or IMT.
Tools
fuel_prices
Cheapest stations for one fuel type, cheapest first.
Parameters:
fuel_type— a DGEG fuel name or id ("Gasóleo simples","Gasolina simples 95","Gasolina 98","GPL Auto"...) or plain words:"diesel","petrol","95","98","lpg","cng"district— e.g."Lisboa","Porto","Faro"(case- and accent-insensitive)municipality— e.g."Sintra","Évora"(overridesdistrict)lat/lon+radius_km— search around a point (default radius 10 km)brand— only one brand, e.g."Galp","Prio"limit— how many stations (default 10, max 50)
With no area it searches all of Portugal. Each station has: price (EUR per litre, or per kg/m³ for gas), brand, name, address, municipality, coordinates, distance (when searching around a point) and the station's last price update. The result also gives how many stations matched and the min/median/max price.
fuel_station_detail
One station: every fuel it sells with price and last update, opening hours, services and payment methods.
fuel_types
The DGEG fuel types (id, name, unit) and the districts. Only needed when unsure which fuel name to use.
ev_chargers
Public charging sites near a point, nearest first, with live status and published prices.
Parameters:
lat/lon— where to searchradius_km— default 5, max 100min_power_kw— e.g.50for fast DCconnector—"CCS","Type 2","CHAdeMO","CEE", or"DC"/"AC"available_only— only points that are free right nowlimit— sites to return (default 10, max 50)
Each site has: operator, address, distance, opening hours and its matching points. Each point has: live status (available, in use, out of order...), maximum power, connectors and the price the feed publishes (per_kwh, per_minute, per_session, in EUR). The result also says how fresh the data is.
ev_charger_detail
One charging site by site id, point id or EVSE id: all its points with status, power, connectors and price, plus the operator's contact, opening hours and how you can start a charge (app, RFID card, credit card...).
Related MCP server: @cyanheads/openchargemap-mcp-server
About EV prices
The prices are the rates that the MOBI.E status feed publishes for each charging point: a pricing type (per kWh, per minute of charging, per session, or "other", such as parking time) and an amount. They may not be the whole bill:
The feed does not say which tariff it is (regular, or ad hoc / pay at the charger), nor whether VAT is included. A spot check against MOBI.E's own tariff list found that where a point has an ad hoc tariff the feed usually carries that one; elsewhere it carries the operator's regular tariff.
On the MOBI.E network the operator's tariff is only the charging point's fee. When you pay with a MOBI.E card or app, your provider (CEME) adds its own energy price, plus network access charges, the MOBI.E management fee and taxes.
Every ev_chargers and ev_charger_detail result carries this note (price_note). Use the prices to compare chargers, and check the operator's app or your provider for the final cost.
Install
Requires Python 3.10+.
git clone https://github.com/ThiagoJacobLannes/portugal-fuel-ev-mcp
cd portugal-fuel-ev-mcp
python -m pip install -e .On Windows, if you keep code in a cloud-synced folder (Google Drive, OneDrive), create the virtual environment outside it: sync clients drop desktop.ini files into folders, which can crash packages on startup.
Add to Claude Code
claude mcp add portugal-fuel-ev -- python -m portugal_fuel_ev_mcp.serverAdd to Claude Desktop
Merge claude_desktop_config.snippet.json into your Claude Desktop claude_desktop_config.json, then restart Claude Desktop:
{
"mcpServers": {
"portugal-fuel-ev": {
"command": "python",
"args": ["-m", "portugal_fuel_ev_mcp.server"]
}
}
}First EV call is slow
The MOBI.E feeds are large (about 180 MB for the inventory, 40 MB for the live status) and are not compressed. The first EV call of the day downloads them, which takes one to three minutes depending on the connection and on MOBI.E's server. The server reads them as they stream in (it never holds the whole file in memory) and keeps a compact cache of about 1 MB, so later calls take milliseconds.
The inventory is refreshed at most every 24 hours, and the live status every 10 minutes, only when a tool needs them. Each result's
data_freshnesssays when the data was published and fetched.To download ahead of time (for example if your client times out on long calls), run:
python -m portugal_fuel_ev_mcp.server --refreshThe cache lives in your user cache folder (via
platformdirs). SetPORTUGAL_FUEL_EV_CACHE_DIRto use another folder.If a refresh fails, the server keeps using the last cache and says so in
data_freshness.warnings.
Fuel prices are fetched live from DGEG on each call (cached for 10 minutes).
Data sources and licences
Data | Source | Terms |
Fuel prices, stations, opening hours | DGEG, Preços dos Combustíveis Online (JSON API | DGEG's site says the information is free and can be used freely; reuse must name DGEG as the source, show the date and time of the last price update, and reproduce the information faithfully. The tools return |
EV charging sites, points, connectors, live status and prices | MOBI.E, via Portugal's National Access Point (NAP, IMT): | Listed on the NAP (datasets 148 and 149) as "Livre acesso" (open access), with no separate licence document. Credit "MOBI.E / NAP Portugal" when you reuse the data. |
Prices are posted by station operators and charging operators; they can be wrong or out of date. Check at the pump or in the charger's app.
The DGEG endpoints are the ones used by the Home Assistant integration netsoft-ruidias/ha-custom-component-precoscombustiveis and by GeiserX/Pumperly. The DATEX II parsing follows the notes in CarregaErvilhas/nap-dashboard and mobilidade-dados-pt/carregamento-pt.
How it works
Fuel:
PesquisarPostosreturns every station selling one fuel type in an area, with price ("1,899 €", turned into1.899), coordinates and last update; for a point search the server fetches the whole country (about 1 MB) and filters by distance.GetDadosPostogives one station's details.EV: the two DATEX II feeds are parsed incrementally with Python's built-in
xml.etree.ElementTree.XMLPullParser, one charging site at a time. Status and prices are joined to the inventory by (site id, point id), because some operators reuse bare point ids across sites. Requests sendIf-None-Match, so an unchanged feed is not downloaded again.
If a source changes or is down, tools return {"error": ...} instead of wrong data.
License
MIT
Available Tools
5 toolsev_charger_detailA
Everything about one MOBI.E charging site: all its points with live status, power, connectors and price, plus operator contact, opening hours and accepted authentication (app, RFID card, credit card...).
Use after ev_chargers. Accepts a site_id (e.g. "EZC-AMD-00051"), a point_id (e.g. "AMD-00051-1") or an EVSE id (e.g. "PTEZCEAMD00051*1").
| Name | Required | Description | Default |
|---|---|---|---|
| site_or_point_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full disclosure burden. It reveals the richness of the payload (live status, pricing, auth methods), which implies a read, but never states permissions, rate limits, or what happens with a malformed or unknown id.
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-loaded with the payload description, then the sequencing hint, then the argument formats. No filler and no repetition of structured fields.
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?
An output schema exists so return-value explanation is unnecessary, and the single required parameter is fully disambiguated. The only gap is error behavior for unresolvable ids, minor for a one-parameter lookup.
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 0% — the sole parameter 'site_or_point_id' is bare in the schema. The description fully compensates by naming all three accepted id forms and giving a concrete example of each ("EZC-AMD-00051", "AMD-00051-1", "PT*EZC*E*AMD*00051*1"), which is exactly what an agent needs to build the call.
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?
States a specific verb+resource: retrieve everything about one MOBI.E charging site, enumerating the returned facets (points, live status, power, connectors, price, operator contact, hours, auth methods). This clearly separates it from the list-oriented sibling ev_chargers without either schema being opened.
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?
"Use after ev_chargers" gives explicit sequencing relative to the sibling that produces the ids this tool needs. It stops short of stating when NOT to use it or when to prefer fuel_station_detail, so it is clear context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ev_chargersA
Public EV charging sites near a point in Portugal (MOBI.E network), nearest first, with live status and the price the network publishes for each charging point.
Use for "where can I charge near X?", "fast chargers near me", "is there a free CCS charger nearby?". Needs coordinates; if the user gives a place name, use known coordinates for it. Covers mainland Portugal, Azores and Madeira.
Args: lat, lon: Point to search around (WGS84). radius_km: Search radius (default 5, max 100). min_power_kw: Only points that can deliver at least this power, e.g. 50 for fast DC. connector: "CCS" (CCS2), "Type 2", "CHAdeMO", "CEE", or "DC" / "AC". available_only: Only points whose live status is "available" right now. limit: Max sites to return (default 10, max 50).
Each site: operator, address, distance_km, opening hours and its matching points, each
with status (available, in use, out of order...), max power, connectors and price
(per_kwh / per_minute / per_session in EUR, from the feed). IMPORTANT: these are the
charging operator's published fees and may not be the whole bill: see price_note and
tell the user. data_freshness says how old the inventory and live status are.
The first call of the day downloads ~220 MB from MOBI.E and can take 1-3 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | ||
| lon | Yes | ||
| limit | No | ||
| connector | No | ||
| radius_km | No | ||
| min_power_kw | No | ||
| available_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it warns that the first call of the day downloads ~220 MB and may take 1-3 minutes (a real latency/side-effect trait), discloses data staleness via data_freshness, and flags that published fees may not be the whole bill, instructing the agent to relay price_note. These are exactly the non-obvious behaviors an agent cannot get from the schema.
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?
Front-loaded with the one-line purpose, then Args and a return summary — a structure an agent can scan. It is somewhat long, and the enumeration of return fields overlaps with the existing output schema, though the 'tell the user about price_note' instruction justifies part of that restatement.
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 7-parameter tool with an output schema and no annotations, the description covers what the schema cannot: geographic coverage, cold-start cost, live-status semantics, freshness, and the pricing disclaimer. Nothing needed to call it correctly or to interpret results responsibly is missing.
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 0% and the schema has no enums, so the description must compensate — and it does, documenting units (WGS84), defaults and caps (radius 5/100, limit 10/50), the semantics of min_power_kw with a concrete example (50 for fast DC), and the accepted connector values (CCS2, Type 2, CHAdeMO, CEE, DC/AC). The value list is the single most important addition since the schema types connector as a bare string; only minor ambiguity (e.g. how 'DC' interacts with min_power_kw) remains.
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?
States a specific resource (public EV charging sites on the MOBI.E network), the geographic scope (mainland Portugal, Azores, Madeira) and the ordering (nearest first with live status and prices). It is clearly distinguishable from the fuel_* siblings and from ev_charger_detail, which the 'each site' summary implicitly frames as the bulk-listing counterpart.
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?
Gives concrete trigger phrasings ('where can I charge near X?', 'fast chargers near me') and the prerequisite that coordinates are required, with a fallback instruction if the user supplies a place name. It stops short of explicitly naming ev_charger_detail as the tool for drilling into a single site, so routing to the sibling is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuel_pricesA
Cheapest fuel stations in Portugal for one fuel type, cheapest first (official DGEG prices).
Use for "where is diesel/petrol/LPG cheapest in Lisboa / near me / in Braga?". Give an area as a district, a municipality, or a point (lat + lon, with radius_km); with no area it searches all of Portugal. Names are case- and accent-insensitive ("evora" works).
Args: fuel_type: A DGEG fuel name or id, e.g. "Gasóleo simples" (regular diesel, 2101), "Gasolina simples 95" (regular 95 petrol, 3201), "Gasolina 98", "GPL Auto" (LPG), or plain words: "diesel", "petrol", "95", "98", "lpg", "cng". See fuel_types() for the full list. district: Portuguese district, e.g. "Lisboa", "Porto", "Faro". municipality: Municipality (concelho), e.g. "Sintra", "Vila Nova de Gaia". Overrides district. lat, lon: A point (WGS84). Results get distance_km and are limited to radius_km. radius_km: Search radius around lat/lon (default 10). brand: Only this brand (substring match), e.g. "Galp", "Prio", "Intermarché". limit: How many stations to return (default 10, max 50).
Each station: price_eur (per litre, or per kg/m3 for gas), brand, name, address, municipality, distance_km (with lat/lon), coordinates and last_update (the station's last price update). Also returns how many stations matched and the min/median/max price. Always mention the source (DGEG) and the last_update when quoting prices.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lon | No | ||
| brand | No | ||
| limit | No | ||
| district | No | ||
| fuel_type | Yes | ||
| radius_km | No | ||
| municipality | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden and does well: it discloses sort order (cheapest first), data source (official DGEG), price units (per litre vs per kg/m3 for gas), the last_update freshness field, and the instruction to always cite source and update time. It stops short of stating read-only character, caching/update cadence, or failure behavior.
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?
Front-loaded one-line summary followed by a usable Args block and a short returns paragraph. The "Each station: ..." enumeration partly duplicates the output schema, but the closing instruction to always cite DGEG and last_update earns its place.
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 an 8-parameter, annotation-free lookup tool this is essentially complete: input forms, defaults, geographic precedence, units, ordering, provenance, and the sibling that enumerates legal fuel_type values. Return details being duplicated is harmless given an output schema exists.
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 0%, so the description must compensate and it does for all eight parameters: fuel_type accepts DGEG names, numeric ids, or plain words like "diesel"/"lpg"; district vs municipality with precedence; lat/lon triggering distance_km within radius_km; brand as a substring match; limit default 10 max 50. It also notes case/accent-insensitive name matching, which the schema cannot express.
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?
Names a specific resource and operation (cheapest fuel stations in Portugal, cheapest first, DGEG source) and distinguishes scope from siblings by directing agents to fuel_types() for the full fuel list. An agent can tell this is the search-a-price tool, not the detail tool, without opening the schema.
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?
Gives concrete trigger phrasings ("where is diesel cheapest in Lisboa / near me / in Braga") and states the default when no area is given (searches all of Portugal), plus the municipality-overrides-district rule. It doesn't explicitly say when to prefer fuel_station_detail or fuel_types instead, so routing is implied rather than fully enumerated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuel_station_detailA
Full details of one fuel station: every fuel it sells with price and last update, opening hours, services (car wash, shop, tyre air...) and payment methods.
Use after fuel_prices, with a station id from its results.
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden; it implies a read-only lookup and tells the agent what the response contains, which is useful. It does not state behavior for an unknown/invalid station id, coverage limits, or any rate/auth considerations.
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 short sentences, front-loaded with the resource and its contents, followed immediately by the call condition. No redundant restatement of the tool name or filler.
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?
A read-only single-parameter detail lookup with an output schema, so return values need not be spelled out; the description still summarizes them well. Only the error/edge-case behavior for a bad id is left unaddressed, which is minor here.
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 0% and the schema only types station_id as an integer. The description compensates by explaining where the id comes from (results of fuel_prices), which is real added meaning, but it does not clarify id format or validity constraints.
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?
Names a specific resource and scope ('Full details of one fuel station') and enumerates the payload (prices with last update, opening hours, services, payment methods). This is clearly distinguishable from the sibling fuel_prices (list of prices) and ev_charger_detail (different resource).
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?
'Use after fuel_prices, with a station id from its results' gives an explicit sequencing rule and the source of the required argument, which implies fuel_prices is the discovery step and this is the follow-up. It stops short of stating when not to use it (e.g., browsing all stations), but the dependency guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuel_typesA
List DGEG fuel types (id, name, unit) and the districts accepted by fuel_prices.
Only needed when unsure which fuel name to pass; fuel_prices also understands "diesel", "petrol", "95", "98", "lpg".
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. The verb "List" clearly implies a read-only reference lookup with no mutation, and the description identifies what is returned (fuel type ids/names/units and accepted districts), though it does not discuss authentication, caching, or rate limits.
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 two short sentences with no filler. The core list purpose is front-loaded, followed immediately by the usage caveat and alternative.
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?
With zero parameters and an output schema present, the description does not need to explain return values in detail. It provides enough context about what the tool lists, when to use it, and which sibling handles common fuel names, making it complete for this simple reference lookup.
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 tool takes zero parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description appropriately does not invent parameter details.
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 states a specific verb and resource: it lists DGEG fuel types with their id, name, and unit, and also lists the districts accepted by fuel_prices. It clearly distinguishes itself from the sibling fuel_prices tool by explaining that fuel_prices accepts common fuel names directly.
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?
It explicitly says it is only needed when the agent is unsure which fuel name to pass, and it names fuel_prices as the primary alternative that understands "diesel", "petrol", "95", "98", and "lpg". This gives a clear when-to-use and when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
ev_charger_detail - First observed
ev_chargers - First observed
fuel_prices - First observed
fuel_station_detail - First observed
fuel_types
TDQS
Scored across 5 tools
The set cleanly splits into two domains: fuel stations (fuel_prices, fuel_station_detail, fuel_types) and EV charging (ev_chargers, ev_charger_detail). Search tools and detail tools are explicitly paired, and fuel_types is clearly a lookup helper. No two tools appear to do the same thing.
All names use snake_case and follow a domain_action or domain_resource pattern. Minor inconsistency exists between plural list tools (fuel_prices, ev_chargers) and singular detail tools (fuel_station_detail, ev_charger_detail), and fuel_types is a helper rather than an action. Still predictable and readable.
Five tools is well-scoped for a specialized Portugal fuel/EV charging server. Each tool has a clear role: two search tools, two detail tools, and one reference/lookup tool. Nothing feels redundant or missing from the count perspective.
The surface covers the core lifecycle: find fuel stations, inspect a station, list fuel types, find EV chargers, and inspect a charging site. A minor gap is that EV charger search requires coordinates and lacks the district/municipality convenience offered by fuel_prices. Overall complete enough for the stated purpose.
Maintenance
Related MCP Connectors
Gas and fuel prices by station and area, as structured data via a hosted MCP server.
Open Charge Map MCP — global EV charging station database (openchargemap.io).
Find EV charging stations, detail, and reliability check-ins via the global Open Charge Map.
Real-time fuel prices, alerts, and cheapest gas stations across 38+ countries.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides real-time fuel prices at gas stations in Spain using the government's public API. Enables users to find the cheapest fuel in a municipality or list stations sorted by price.2MIT
- AlicenseNot gradedqualityAmaintenanceFind EV charging stations by location and connector, get full station detail, resolve reference IDs, and read community reliability check-ins via MCP.63 npm1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables users to look up official Brazilian fuel station information from a hosted service, paying per query with prepaid credits, across any MCP-compatible client.MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to query Austria's public fuel price API to find the cheapest diesel, super, or CNG stations near an address or within a region, including price, address, distance, open status, and navigation links, and to list regions and districts. It runs locally as a read-only stdio MCP server with no API keys required.MIT