Find EV charging stations worldwide by location and connector via the global Open Charge Map registry — full station detail, reference-ID resolution, and community reliability check-ins via MCP. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/openchargemap-mcp-server{
"mcpServers": {
"openchargemap": {
"command": "node",
"args": ["/path/to/openchargemap-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center">
<h1>@cyanheads/openchargemap-mcp-server</h1>
<p><b>Find EV charging stations worldwide by location and connector via the global Open Charge Map registry — full station detail, reference-ID resolution, and community reliability check-ins via MCP. STDIO or Streamable HTTP.</b>
<div>4 Tools • 1 Resource</div>
</p>
</div>
<div align="center">
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/openchargemap-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/openchargemap-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
</div>
<div align="center">
[](https://github.com/cyanheads/openchargemap-mcp-server/releases/latest/download/openchargemap-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=openchargemap-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvb3BlbmNoYXJnZW1hcC1tY3Atc2VydmVyIl0sImVudiI6eyJPUEVOQ0hBUkdFTUFQX0FQSV9LRVkiOiJ5b3VyLWFwaS1rZXkifX0=) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22openchargemap-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fopenchargemap-mcp-server%22%5D%2C%22env%22%3A%7B%22OPENCHARGEMAP_API_KEY%22%3A%22your-api-key%22%7D%7D)
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
</div>
<div align="center">
**Public Hosted Server:** [https://openchargemap.caseyjhand.com/mcp](https://openchargemap.caseyjhand.com/mcp)
</div>
---
## Tools
Four tools across the find-and-detail surface — search, detail, offline ID resolution, and the community reliability layer:
| Tool | Description |
|:---|:---|
| `openchargemap_find_stations` | Find charging stations near a point or within a bounding box, filtered by connector, power, network, usage, status, and charge points. Coordinate-native. |
| `openchargemap_get_station` | Full record for one station by numeric OCM ID — every connection, operator, access rules, charge points, cost, media, and a computed reliability note. |
| `openchargemap_lookup_reference` | Resolve connector/operator/usage/status/country names to the integer filter IDs `find_stations` needs. Served from a bundled snapshot — offline and instant. |
| `openchargemap_get_station_comments` | Community check-ins for one station alongside the registry status and last-verified date, so registry-vs-reality mismatch is visible. |
### `openchargemap_find_stations`
The workhorse. Search the global registry by location, then narrow with filters.
- Radius search (`latitude` + `longitude` + `distance`, in `KM` or `Miles`) or `boundingbox` — exactly one mode per call. A `boundingbox` sent alongside a `latitude` or a `longitude` is rejected rather than searched with the coordinate quietly dropped
- Optional country scope via ISO 3166-1 alpha-2 `countrycode`; global by default, no implicit country
- Filters: connector type, minimum power (kW), operator/network, usage type, charge level, operational status, minimum charge points — all integer IDs, single or OR-matched arrays
- Resolve a connector or network name to its filter ID with `openchargemap_lookup_reference` first (e.g. `"CCS"` → `33`)
- Each result carries title, address, distance, connections (type/power/current/count), operator, access rules, registry status, and `dateLastVerified`
- `maxresults` caps the page (default 25, max 200), ordered by distance. A truncated page reports `nextOffset`; pass it back as `offset` for the next page. OCM has no offset parameter of its own, so paging runs over an over-fetched candidate page — reachable depth is 500 stations per search (`offset` 0–499), and `totalCount` is what the search retrieved rather than a registry-wide total (OCM publishes none). It is exact only when the candidate page came back short of its cap; otherwise it is a floor, and the notice says so
- Local filters (`minchargepoints`, and the drop of OCM's 0,0 coordinate sentinels) run over that whole candidate page, so a match ranked past `maxresults` is not lost and a page emptied by filtering is reported as truncated, not as "no stations"
- **Coordinate-native — does not geocode place names.** Resolve a place like "Ballard, Seattle" to coordinates with a geocoding server (e.g. the `openstreetmap` MCP server's `openstreetmap_geocode`) first, then pass them here
---
### `openchargemap_get_station`
Full detail for one station by its numeric OCM ID (fetched with `verbose=true`).
- Every connection: type, level, power, current, amperage, voltage, quantity
- Operator and network, usage and access restrictions (pay-at-location, membership, access key), number of charge points
- General comments, usage cost, data provider, submitted media, verification recency
- Optional inline community check-ins with `includeComments`
- Computes a plain-prose `reliabilityNote` from observable facts (verification age, registry status, operational flag, fault-vs-positive check-in counts) — no synthetic score; omitted when status is fresh and uncontested
- A status of "Temporarily Unavailable" or "Partly Operational (Mixed)" raises a caveat of its own — OCM flags both operational, so the flag alone would read as all-clear on a station the operator has said is down
- Obtain an ID from `openchargemap_find_stations`. UUID lookup is not supported by the OCM API.
---
### `openchargemap_lookup_reference`
Resolve Open Charge Map reference data to the integer IDs the `find_stations` filters require — served from a bundled snapshot, so it makes **no network call** (offline, instant).
- Categories: `connectiontypes`, `operators`, `usagetypes`, `statustypes`, `currenttypes`, `levels`, `countries`
- Pass a `query` to resolve a name, title, code, or alias (`"CCS"`, `"Tesla Supercharger"`, `"ChargePoint"`, `"Public - Pay At Location"`, `"France"`, `"FR"`) — case-insensitive, matched on title, formal name, and curated connector aliases
- Omit the `query` to browse the whole category (up to `limit`, max 100). Browsing and querying both page: `totalCount` is the full match count, and a truncated page reports `nextOffset` to pass back as `offset` — every entry in a large category like `operators` (974) or `countries` (250) is reachable
- Returns the matching `id`(s) plus the `filterParam` they feed and the vintage of the data actually served — `snapshotDate` with a `source` of `live` or `bundled`, so a fresh fetch is never mistaken for a freshly cut bundle
- An optional startup refresh keeps the snapshot from drifting — see `OPENCHARGEMAP_REFERENCE_REFRESH` below. When it succeeds, `source` is `live` and `snapshotDate` is the day it ran; when it is off or it failed, `source` is `bundled` and the date is the bundle's own
---
### `openchargemap_get_station_comments`
Community check-ins for one station — the honest reliability signal beyond the operator-reported registry flag.
- Returns user comments and fault reports with ratings, dates, and the recorded check-in outcome ("Charged Successfully", "Failed to Charge (Equipment Not Operational)", …), newest first (`maxresults` caps the page, max 100)
- One POI fetch carries every comment the station has, so `totalCount` is exact and `offset` (paired with the `nextOffset` a truncated page reports) reads the rest without a further upstream call
- Every count states its population: `totalComments` is the station's whole set, the rendered header reads `2 of 6 comment(s)` when a page is only part of it, and `reliabilityNote`'s fault ratio is counted over the whole set so it does not move with `maxresults`
- The check-in outcome is the charge-attempt result and drives fault detection — a failed charge counts even when it was filed as a plain comment
- Surfaces the station's registry status, operational flag, and `dateLastVerified` alongside the comments so you can flag mismatches like "listed operational, but recent check-ins report a fault"
- An empty result is **not** an error — a station with no check-ins returns `comments: []`; absence of reports is not evidence the charger works
- Backed by the POI fetch with `includecomments=true` (OCM has no standalone comments endpoint)
- Obtain a station ID from `openchargemap_find_stations`
## Resource
| Type | Name | Description |
|:---|:---|:---|
| Resource | `openchargemap://station/{id}` | Full station record (with community comments) by numeric OCM ID — the URI-addressable twin of `openchargemap_get_station`. |
All station data is also reachable via the tools. The station corpus (~200k locations, geo-scoped) is not exposed as a listable resource — discover stations with `openchargemap_find_stations`. Reference data is a resolve surface, not a stable-by-URI record, so it is served by `openchargemap_lookup_reference` rather than a resource.
## Features
Built on [`@cyanheads/mcp-ts-core`](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)What people ask about openchargemap-mcp-server
What is cyanheads/openchargemap-mcp-server?
+
cyanheads/openchargemap-mcp-server is mcp servers for the Claude AI ecosystem. Find EV charging stations worldwide by location and connector via the global Open Charge Map registry — full station detail, reference-ID resolution, and community reliability check-ins via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-08-25.
How do I install openchargemap-mcp-server?
+
You can install openchargemap-mcp-server by cloning the repository (https://github.com/cyanheads/openchargemap-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/openchargemap-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/openchargemap-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/openchargemap-mcp-server?
+
cyanheads/openchargemap-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-08-25, with 3 open issues.
Are there alternatives to openchargemap-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy openchargemap-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-openchargemap-mcp-server)<a href="https://claudewave.com/repo/cyanheads-openchargemap-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-openchargemap-mcp-server" alt="Featured on ClaudeWave: cyanheads/openchargemap-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!