Skip to main content
Glama

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" (overrides district)

  • 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 search

  • radius_km — default 5, max 100

  • min_power_kw — e.g. 50 for fast DC

  • connector — "CCS", "Type 2", "CHAdeMO", "CEE", or "DC" / "AC"

  • available_only — only points that are free right now

  • limit — 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.server

Add 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_freshness says 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 --refresh
  • The cache lives in your user cache folder (via platformdirs). Set PORTUGAL_FUEL_EV_CACHE_DIR to 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 .../api/PrecoComb/)

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 source and each price's last_update for that reason.

EV charging sites, points, connectors, live status and prices

MOBI.E, via Portugal's National Access Point (NAP, IMT): https://pgm.mobie.pt/integration/nap/evChargingInfra and .../evActualStatus (DATEX II 3.3 XML)

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: PesquisarPostos returns every station selling one fuel type in an area, with price ("1,899 €", turned into 1.899), coordinates and last update; for a point search the server fetches the whole country (about 1 MB) and filters by distance. GetDadosPosto gives 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 send If-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 tools
ev_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").

NameRequiredDescriptionDefault
site_or_point_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
latYes
lonYes
limitNo
connectorNo
radius_kmNo
min_power_kwNo
available_onlyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
latNo
lonNo
brandNo
limitNo
districtNo
fuel_typeYes
radius_kmNo
municipalityNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
station_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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".

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 5 tool updatesv0.1.0
    • First observedev_charger_detail
    • First observedev_chargers
    • First observedfuel_prices
    • First observedfuel_station_detail
    • First observedfuel_types

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables 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