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.
git clone https://github.com/cyanheads/openchargemap-mcp-server{
"mcpServers": {
"openchargemap": {
"command": "node",
"args": ["/path/to/openchargemap-mcp-server/dist/index.js"],
"env": {
"OPENCHARGEMAP_API_KEY": "<openchargemap_api_key>"
}
}
}
}OPENCHARGEMAP_API_KEYMCP Servers overview
<div align="center">
<h1>@cyanheads/openchargemap-mcp-server</h1>
<p><b>Find EV charging stations by location and connector, get full station detail, resolve reference IDs, and read 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>
---
## 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
- 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 set (default 25, max 200), ordered by distance; truncation is disclosed when the cap is hit
- **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, operational flag, fault-vs-positive comment counts) — no synthetic score; omitted when status is fresh and uncontested
- 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)
- Returns the matching `id`(s) plus the `filterParam` they feed and the snapshot vintage (`snapshotDate`)
- An optional startup refresh keeps the snapshot from drifting — see `OPENCHARGEMAP_REFERENCE_REFRESH` below
---
### `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 and dates, newest first (`maxresults` caps, max 100)
- 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):
- Declarative tool and resource definitions — single file per primitive, framework handles registration and validation
- Unified error handling — handlers throw, framework catches, classifies, and formats; typed error contracts with recovery hints
- Pluggable auth: `none`, `jwt`, `oauth`
- Swappable storage backends: `in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`
- Structured logging with optional OpenTelemetry tracing
- STDIO and Streamable HTTP transports
Open Charge Map–specific:
- Type-safe client for the OCM v3 POI API with retry and session-scoped result caching
- Reference data (connectors, operators, usage/status types, countries) bundled as an offline snapshot — name→ID resolution needs no live `/referencedata` call, with an optional startup refresh to prevent drift
- Curated connector aliases (`CCS`, `NACS`/`Supercharger`, `J1772`, `Type 2`, `CHAdeMO`) so the names agents actually use resolve to the right IDs
- Geocoding intentionally delegated — the server is coordinate-native and composes with any geocoding MCP server rather than rebuilding place-name lookup
Agent-friendly output:
- Reliability surfaced as first-class signal — `status`, `isOperational`, and `dateLastVerified` on every station, plus a plain-prose `reliabilityNote` derived only from observable facts (no fabricated confidence score)
- Honest sparsity — heavily-omitted upstream fields are optional with "absence means unknown, not zero/false" descriptions; the server never invents data OCM didn't return
- CC BY 4.0 attribution on every tool response and in the server-level instructions, per the data license
## Getting started
Add the following to your MCP client configuration file. An Open Charge Map API key is required — see [Prerequisites](#prerequisites).
```json
{
"mcpServers": {
"openchargemap-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/openchargemap-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"OPENCHARGEMAP_API_KEY": "your-api-key"
}
}
}
}
```
Or with npx (no Bun required):
```json
{
"mcpServers": {
"openchargemap-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/openchargemap-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"OPENCHARGEMAP_APWhat 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 was last updated today.
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?
+
cyanheads/openchargemap-mcp-server has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains cyanheads/openchargemap-mcp-server?
+
cyanheads/openchargemap-mcp-server is maintained by cyanheads. The last recorded GitHub activity is from today, with 0 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.
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!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。