A full-featured wrapper around both the Tesla Fleet API and TeslaMate API, exposing 98 tools for Fleet and 9 for TeslaMate. You can control vehicle functions (lock, climate, charging amps, trunk), manage Powerwall and solar (backup reserve, storm mode, time-of-use settings), send navigation destinations, pull trip analytics, and query charging history. It includes a generative UI system that lets the AI author custom dashboards on the fly using Pyodide, plus pre-built skills like a drive efficiency coach that chains tools into analytical workflows. The hosted version supports OAuth SSO through Tesla's auth server, so compatible clients trigger sign-in automatically without token juggling. Useful if you want conversational access to your entire Tesla ecosystem without opening the app.
Public tool metadata for what this MCP can expose to an agent.
vehicle_status_overviewGet a full status snapshot for one vehicle (battery range, charging, location, climate, locks, firmware, alerts). Do not use this to see if the vehicle is awake/online. Do use this for general status, 'view battery', or 'battery and range' intents.2 paramsGet a full status snapshot for one vehicle (battery range, charging, location, climate, locks, firmware, alerts). Do not use this to see if the vehicle is awake/online. Do use this for general status, 'view battery', or 'battery and range' intents.
actionstringvehicle_idstringvehicle_listList vehicles available to the authenticated Tesla account.1 paramsList vehicles available to the authenticated Tesla account.
actionstringvehicle_wake_upWakes up the selected vehicle from sleep so it becomes online and can receive further commands. *ALL* operations on the vehicle must first ensure it is awake by calling this tool.1 paramsWakes up the selected vehicle from sleep so it becomes online and can receive further commands. *ALL* operations on the vehicle must first ensure it is awake by calling this tool.
vehicle_idstringvehicle_door_lockLocks all doors on the selected vehicle. Use for explicit 'lock the car' intents.1 paramsLocks all doors on the selected vehicle. Use for explicit 'lock the car' intents.
vehicle_idstringvehicle_door_unlockUnlocks all doors on the selected vehicle. Use for explicit 'unlock the car' intents.1 paramsUnlocks all doors on the selected vehicle. Use for explicit 'unlock the car' intents.
vehicle_idstringvehicle_flash_lightsFlashes the vehicle headlights briefly as a visual signal. Use for 'flash the lights' or 'locate my car' intents.1 paramsFlashes the vehicle headlights briefly as a visual signal. Use for 'flash the lights' or 'locate my car' intents.
vehicle_idstringvehicle_honk_hornHonks the horn on the selected vehicle once. Use for explicit 'honk the horn' or 'sound the horn' intents, often to help locate a parked vehicle.1 paramsHonks the horn on the selected vehicle once. Use for explicit 'honk the horn' or 'sound the horn' intents, often to help locate a parked vehicle.
vehicle_idstringvehicle_sun_roof_controlControls the powered sunroof. Only available on vehicles equipped with an operable sunroof. The vehicle must be stopped and in Park. Valid states include: "vent" (partially opens for ventilation) and "close" (fully closes the sunroof). Some vehicles do not support intermediate...2 paramsControls the powered sunroof. Only available on vehicles equipped with an operable sunroof. The vehicle must be stopped and in Park. Valid states include: "vent" (partially opens for ventilation) and "close" (fully closes the sunroof). Some vehicles do not support intermediate...
statestringvent · closevehicle_idstringvehicle_window_controlControls the window positions on all four doors simultaneously. Supported actions are "vent" and "close". Vent lowers the windows slightly to allow airflow; close raises them fully. Vehicle must be in Park. Regional restrictions or vehicle configuration may limit this feature.2 paramsControls the window positions on all four doors simultaneously. Supported actions are "vent" and "close". Vent lowers the windows slightly to allow airflow; close raises them fully. Vehicle must be in Park. Regional restrictions or vehicle configuration may limit this feature.
commandstringvent · closevehicle_idstringvehicle_navigation_gps_requestStarts navigation to a specific GPS coordinate. Requires latitude and longitude. An optional "order" field may define visit sequence when multiple destinations are used4 paramsStarts navigation to a specific GPS coordinate. Requires latitude and longitude. An optional "order" field may define visit sequence when multiple destinations are used
orderintegerlatitudenumberlongitudenumbervehicle_idstringvehicle_navigation_placeid_requestStarts navigation using one or more Google Maps Place IDs. The Place IDs must be provided as a comma-separated string in the format "refId:<PLACE_ID>". Multiple refIds may be included to provide alternative candidate locations. This is ideal when working with Google Places API...2 paramsStarts navigation using one or more Google Maps Place IDs. The Place IDs must be provided as a comma-separated string in the format "refId:<PLACE_ID>". Multiple refIds may be included to provide alternative candidate locations. This is ideal when working with Google Places API...
ref_idsstringvehicle_idstringvehicle_navigation_waypoints_requestSends multiple GPS waypoints to the vehicle's navigation system. Each waypoint must include latitude and longitude, and may include an "order" field to specify visit sequence. The waypoints define a multi-stop route, which the vehicle navigation system will follow in the provi...2 paramsSends multiple GPS waypoints to the vehicle's navigation system. Each waypoint must include latitude and longitude, and may include an "order" field to specify visit sequence. The waypoints define a multi-stop route, which the vehicle navigation system will follow in the provi...
waypointsarrayvehicle_idstringvehicle_remote_boomboxPlays an external sound through the vehicle's Boombox speaker (if equipped). The sound is selected using a numeric `sound_id`. Example values include: 0 for a random Boombox sound, and 2000 for a 'locate ping'. Regional restrictions may limit Boombox functionality, and the veh...2 paramsPlays an external sound through the vehicle's Boombox speaker (if equipped). The sound is selected using a numeric `sound_id`. Example values include: 0 for a random Boombox sound, and 2000 for a 'locate ping'. Regional restrictions may limit Boombox functionality, and the veh...
sound_idintegervehicle_idstringvehicle_auto_conditioning_startStarts the vehicle's climate control system (HVAC). This is the correct final action for 'warm up my car', 'warm up the car', 'turn on climate', or 'start HVAC' intents.1 paramsStarts the vehicle's climate control system (HVAC). This is the correct final action for 'warm up my car', 'warm up the car', 'turn on climate', or 'start HVAC' intents.
vehicle_idstringvehicle_auto_conditioning_stopStops the vehicle's climate control system (HVAC). Use for 'turn off climate', 'stop HVAC', or 'turn the climate off' intents.1 paramsStops the vehicle's climate control system (HVAC). Use for 'turn off climate', 'stop HVAC', or 'turn the climate off' intents.
vehicle_idstringThis repository provides a Model Context Protocol server that wraps both the Tesla Fleet API and the TeslaMate API. It includes vehicle endpoints, vehicle commands, energy endpoints (Powerwall/Solar), and charging endpoints. The implementation is modular and fully featured, exposing 98 MCP tools for the Tesla Fleet API and 9 MCP tools for the TeslaMate API.
This isn't just remote control — it's a conversational interface to your entire Tesla ecosystem. Express your use cases directly to your AI — describe what you want in plain language and let it figure out which tools to call, in what order, and with what parameters. No app to open, no menu to navigate.
"My Powerwall is at 40%. Should I charge my car now or wait for solar production this afternoon?"
"Analyze my last 30 days of energy data — am I losing money by exporting to the grid while paying to charge at night?"
"Set the Powerwall backup reserve to 20% and schedule the car to charge from 2am to 6am at 16A."
The AI can cross-reference your solar production, Powerwall state, grid rates, and vehicle battery level to give you a recommendation — and act on it immediately.
"I have a road trip to Lyon next Thursday. Based on my usual efficiency, will I need to stop for charging? Find the best Supercharger on the route."
"Compare my energy consumption this month vs last month. What changed?"
"Pre-condition the car at 7:45am every weekday and set the charge limit back to 80% — it's currently at 100% from the trip."
"What's my average km/kWh over the last 3 months? Is it getting worse?"
"Show me my most expensive charging sessions this year and where they happened."
"How many hours per week is the car sitting with climate running? What's the energy cost?"
"Is my car locked and is Sentry mode on? I forgot to check before my flight."
"My car is parked downtown. Turn on Sentry mode and send me the current location."
Beyond pre-built widgets, the server exposes a Generative UI capability so the AI can build interactive Prefab UI components on the fly to answer with charts, tables and metric cards — not just text.
"Show me a bar chart of my charging cost per location for last month."
"Build a dashboard for this car: current SoC, last 7 drives, and battery health degradation."
"Compare my efficiency this winter vs last summer with two side-by-side metric cards."
The AI uses generative_generate_prefab_ui to author Python code in a sandbox (Pyodide + Deno on the server); the resulting widget is rendered directly in your chat through a Skybridge-mime iframe — no template authoring on your side, no extra round-trip. The companion generative_search_prefab_components lookup tool keeps the LLM honest about component signatures.
It works equally well for Tesla Fleet API and TeslaMate users — the same generative tool is gated by either subscription.
The server also ships MCP Skills: markdown workflows the LLM reads on demand to chain tools into a coherent answer. The first one available is drive-efficiency-coach:
"Run the drive efficiency coach for the last 30 days and show it as a report."
The skill walks the AI through fetching your TeslaMate drives, computing Wh/km percentiles, identifying outliers, cross-referencing speed/temperature/trip-length, and rendering a Generative UI report (metric cards + outliers table + 1–3 actionable coaching insights anchored in your own numbers).
Skills are the easiest way to extend this server without touching Python. Pull requests welcome — drop a new directory under tesla_mcp/skills/ and SkillsDirectoryProvider picks it up automatically.
A good skill is:
teslamate_get_car_drives, energy_live_status, …) and the right arguments.generative_generate_prefab_ui render for analytics/reports; plain text for one-shot questions.Minimal layout:
tesla_mcp/skills/your-skill-name/
└── SKILL.md
SKILL.md starts with YAML frontmatter (name, description) followed by the workflow. See drive-efficiency-coach/SKILL.md as a reference.
Ideas waiting for an author:
charging-cost-breakdown — group last month's charges by location, surface cost-per-100kmweekly-tesla-digest — drives + charges + battery snapshot + software updates as a Monday-morning email-style reportrange-anxiety-checker — given a destination, cross-reference SoC, weather, elevation and recent efficiency to call out a stop or reassurehome-charging-window-finder — using TOU settings + recent charge sessions, find the cheapest 4-hour window to plug in tonightAvailable capabilities (98 tools for Tesla Fleet API + 9 for TeslaMate API + 2 Generative UI tools + skills):
drive-efficiency-coach) the AI reads on demand to chain tools into a coherent answerThe hosted server supports OAuth 2.0 Single Sign-On via Tesla's official authorization server. Compatible clients (ChatGPT, Claude.ai, VS Code…) trigger an automatic sign-in flow — no token copy-paste required.
MCP server URL: https://mcp.myteslamate.com/mcp
The server proxies the OAuth flow to
auth.tesla.com, then exchanges your Tesla token for a MyTeslaMate token transparently. Your Tesla credentials never touch this server.
ChatGPT supports native MCP connectors via Settings → Apps.
https://mcp.myteslamate.com/mcp
Tesla) and the MCP server URL:
https://mcp.myteslamate.com/mcp
Note: OAuth-based SSO requires a MyTeslaMate account. The server validates your Tesla token and links it to your MTM subscription automatically.
Ready-to-use Claude Code skills for this MCP server are available in myteslamate/tesla-skills.
Install the /tesla slash command in one step:
Then in Claude Code:
/tesla what is my battery level?
/tesla lock my car
/tesla how much did I charge last month?
No installation required! Use the hosted MCP server directly. Two authentication options:
Simply provide the server URL and let the client handle the OAuth flow automatically (see sections above).
For clients that don't support OAuth, use your MyTeslaMate API token directly in the Authorization header.
Add both endpoints to your .vscode/mcp.json configuration to choose your preferred integration:
{
"servers": {
"tesla": {
"type": "http",
"url": "https://mcp.myteslamate.com/mcp"
}
}
}
tesla_fleet_api for direct access to Tesla's official Fleet API.teslamate for integration via TeslaMate API.Add endpoints in the MCP Connector configuration with the same URLs and headers as above.:
claude mcp add --transport http tesla-api "https://mcp.myteslamate.com/mcp"
Select the server according to your authentication method and API preference.
If you prefer to run your own instance, this repository also support TeslaMate API and Tesla Fleet API (Requires Tesla Developer Account and proper Fleet API registration).
tesla_mcp with a reusable TeslaClient.GET /api/1/vehicles - List vehiclesGET /api/1/vehicles/{vehicle_tag} - Get vehicle metadataGET /api/1/vehicles/{vehicle_tag}/vehicle_data - Get live vehicle dataPOST /api/1/vehicles/{vehicle_tag}/wake_up - Wake sleeping vehiclePOST /api/1/vehicles/fleet_status - Fleet statusGET /api/1/vehicles/{vehicle_tag}/mobile_enabled - Check mobile accessGET /api/1/vehicles/{vehicle_tag}/nearby_charging_sites - Nearby chargingGET /api/1/vehicles/{vehicle_tag}/service_data - Service dataGET /api/1/vehicles/{vehicle_tag}/release_notes - Firmware release notesGET /api/1/vehicles/{vehicle_tag}/recent_alerts - Recent alertsGET /api/1/dx/vehicles/options?vin={vin} - Vehicle optionsGET /api/1/dx/vehicles/upgrades/eligibility?vin={vin} - Eligible upgradesGET /api/1/dx/vehicles/subscriptions/eligibility?vin={vin} - Eligible subscriptionsGET /api/1/vehicles/{vehicle_tag}/drivers - List allowed drivers (owner only)DELETE /api/1/vehicles/{vehicle_tag}/drivers - Remove driver accessGET /api/1/vehicles/{vehicle_tag}/invitations - List active share invites (paginated)POST /api/1/vehicles/{vehicle_tag}/invitations - Create share invite (24hr expiry, single-use)POST /api/1/invitations/redeem - Redeem share invitePOST /api/1/vehicles/{vehicle_tag}/invitations/{id}/revoke - Revoke share inviteGET /api/1/vehicles/{vehicle_tag}/fleet_telemetry_config - Get fleet telemetry configPOST /api/1/vehicles/fleet_telemetry_config - Configure self-hosted fleet-telemetry serverDELETE /api/1/vehicles/{vehicle_tag}/fleet_telemetry_config - Remove fleet telemetry configGET /api/1/vehicles/{vehicle_tag}/fleet_telemetry_errors - Recent fleet telemetry errorsGET /api/1/subscriptions - Get subscriptions for mobile devicePOST /api/1/subscriptions - Set subscriptions for mobile deviceGET /api/1/vehicle_subscriptions - Get vehicle subscriptionsPOST /api/1/vehicle_subscriptions - Set vehicle subscriptionsGET /api/1/dx/warranty/details?vin={vin} - Get warranty informationPOST /api/1/vehicles/{vehicle_tag}/signed_command - Execute signed command (Tesla Vehicle Command Protocol)Configure the Tesla API base URL using the TESLA_BASE_URL environment variable:
# No configuration needed - uses default
# Or explicitly set:
export TESLA_BASE_URL=https://api.myteslamate.com
Choose your regional endpoint:
# North America, Asia-Pacific (excluding China)
export TESLA_BASE_URL=https://fleet-api.prd.na.vn.cloud.tesla.com
# Europe, Middle East, Africa
export TESLA_BASE_URL=https://fleet-api.prd.eu.vn.cloud.tesla.com
# China
export TESLA_BASE_URL=https://fleet-api.prd.cn.vn.cloud.tesla.cn
Note: When using the official Tesla Fleet API, ensure you have:
Install the Python dependencies once:
pip install -r requirements.txt
You can start the server in multiple ways:
uvicorn tesla_mcp.app:app --host 0.0.0.0 --port 8000 --reload
make up
python server.py
The server will start using HTTP Streaming on http://0.0.0.0:8084. Connect your MCP-compatible
client (such as Cursor or VS Code with the MCP extension) and configure a server
entry that points to this endpoint.
# 1. Start the server (uses MyTeslaMate API by default)
uvicorn tesla_mcp.app:app --host 0.0.0.0 --port 8000
# 2. Configure your MCP client with:
# URL: http://localhost:8000/sse
# Authorization: Bearer YOUR_MYTESLAMATE_TOKEN
# 1. Set your regional endpoint
export TESLA_BASE_URL=https://fleet-api.prd.na.vn.cloud.tesla.com
# 2. Start the server
uvicorn tesla_mcp.app:app --host 0.0.0.0 --port 8000
# 3. Configure your MCP client with:
# URL: http://localhost:8000/sse
# Authorization: Bearer YOUR_TESLA_FLEET_TOKEN
# Build the image
docker build -t tesla-mcp .
# Run with MyTeslaMate (default)
docker run -p 8000:8000 tesla-mcp
# Run with Tesla Fleet API
docker run -p 8000:8000 -e TESLA_BASE_URL=https://fleet-api.prd.na.vn.cloud.tesla.com tesla-mcp
tesla_mcp/modules/ inheriting from TeslaModule.tesla_mcp/modules/__init__.py.server.py that delegate to the module methods.This structure keeps the MCP layer thin while centralising all Tesla Fleet API
and TeslaMate API logic in the tesla_mcp package.