evaconnect-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., "@evaconnect-mcpwhat's my car's current charge and doors status?"
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.
evaconnect
Typed Python client and stdio MCP server for the Evolute companion API
(https://app.evassist.ru). Own account / own vehicle only.
Read telemetry (charge, climate, doors, online) and recent trips without the official Android app. Vehicle commands are not implemented — the command channel is unconfirmed.
Install
Python 3.12+.
cd /Users/nmel/Documents/Projects/evaconnect
python3.12 -m venv .venv
source .venv/bin/activate
pip install ".[dev]"Editable (pip install -e) is optional. On Python 3.14 / macOS the hatchling
.pth is often marked hidden, and 3.14 then skips it — evolute fails with
No module named 'evaconnect'. Either install without -e, or after -e run:
chflags nohidden .venv/lib/python*/site-packages/*.pthEntry points after install:
evolute— small CLI (status,trips,vehicles,info)evaconnect-mcp— stdio MCP serverevaconnect-poller— write telemetry/trips to Postgres for Grafana
Remote poller + Postgres next to an existing Grafana: see deploy/README.md.
Related MCP server: Rivian MCP
Auth
Preferred for the poller: credentials.json (created chmod 600). Refresh
rotates refreshToken; the file is the source of truth.
{
"accessToken": "",
"refreshToken": "",
"carId": ""
}Override the path with EVOLUTE_CREDENTIALS. Env vars
(EVOLUTE_ACCESS_TOKEN / EVOLUTE_REFRESH_TOKEN / EVOLUTE_CAR_ID) fill
missing fields only — they do not override tokens already in the file. After
refresh the new pair is written back to the file and into the process env.
Do not commit tokens, phone, VIN, IMEI, or coordinates.
Library login (CLI / scripts only — not exposed as MCP tools):
from evaconnect import EvoluteClient
with EvoluteClient() as client:
info = client.get_info() # no token; field is capcha, not captcha
client.request_otp(phone, phone_country) # one SMS; formats are caller-supplied
client.sign_in(phone, code)Auth header is access-token: <token>, not Authorization: Bearer.
Library
from evaconnect import EvoluteClient
with EvoluteClient() as client:
client.refresh()
me = client.me()
cars = client.list_vehicles() # id, plate, model; VIN/IMEI not in repr
car = client.get_vehicle(cars[0].id)
tel = client.get_telemetry(car_id=car.id) # or imei=…
session = client.get_charge_session() # may be None
trips = client.list_trips(car.id, limit=5, offset=0)
trip = client.get_trip(car.id, trips.rows[0].id, trips.rows[0].segment_start_time)get_telemetry accepts an IMEI or a mongo car _id (24 hex chars) and
resolves IMEI when needed. Those two IDs are not interchangeable.
send_command exists only as a stub and always raises NotImplementedError.
CLI
evolute info # GET /id-service/info (no token)
evolute status
evolute trips -n 5
evolute vehiclesMCP (Cursor)
stdio server. Tools (read-only):
Tool | What it returns |
| Charge, climate, doors, online. Geo hidden unless |
| List; VIN/IMEI masked unless |
| Last N trips; no addresses/track |
| One trip; track only if |
| Current charge session (or empty) |
| Session present/valid; no raw tokens |
There is no request_otp and no command-sending tool.
Cursor mcp.json example (~/.cursor/mcp.json or project .cursor/mcp.json):
{
"mcpServers": {
"evaconnect": {
"command": "/Users/nmel/Documents/Projects/evaconnect/.venv/bin/evaconnect-mcp",
"env": {
"EVOLUTE_ACCESS_TOKEN": "",
"EVOLUTE_REFRESH_TOKEN": "",
"EVOLUTE_CAR_ID": ""
}
}
}
}If the venv is on PATH, "command": "evaconnect-mcp" is enough.
Default MCP output redacts VIN, IMEI, phone, tokens, and exact coordinates
(include_pii off). Do not poll telemetry faster than once per 5 seconds
(the client caches within that window).
Tests
Mocks only — tests never call production.
pytestSpec gaps (explicit parameters, no guessing)
Phone /
phoneCountryformat is unknown — pass them as strings.Trip
sort.by/dirdefault to live-confirmedDATE/DESC(DURATION/DISTANCEandASCare also valid).distanceunits (m vs km) are unknown — rawint, no conversion.Access-token TTL is unknown — one auto-refresh on HTTP 401, no loop.
Charge-session body when charging is not fully specified.
Time-Zoneheader is unused (not confirmed).
License
MIT
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 Servers
- AlicenseAqualityDmaintenanceProvides access to Alpha ESS solar inverter and battery system data, enabling monitoring of energy statistics, real-time power data, and configuration of battery charging and discharge schedules through the Alpha ESS Open API.10MIT
- AlicenseAqualityBmaintenanceEnables read-only access to vehicle data via the unofficial Rivian GraphQL API, allowing users to monitor battery levels, OTA updates, and charging status. It provides tools to check vehicle state and user account information directly through Claude.9202MIT

Cariot MCP Serverofficial
AlicenseBqualityDmaintenanceEnables querying Cariot APIs for fleet management data, including alcohol checks, daily reports, drivers, vehicles, and realtime snapshots, with utility for generating chart configurations.7241MIT- AlicenseNot gradedqualityBmaintenanceA secure, read-only MCP server that connects to BYD electric vehicles via the BYD cloud API, enabling AI agents to query real-time vehicle data such as battery SOC, range, tire pressures, door states, and GPS.MIT
Related MCP Connectors
MCP server wrapping the Tesla Fleet API and TeslaMate API
Unofficial integration! ## ✨ Key Features ### 💰 Financial Intelligence - **Smart Charging Cost An…
Find EV charging stations, detail, and reliability check-ins via the global Open Charge Map.
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/ca11mebaraka/evaconnect'
If you have feedback or need assistance with the MCP directory API, please join our Discord server