Tessie MCP Extension
Access and analyze Tesla vehicle data through the Tessie API.
List all vehicles associated with the Tessie account
Retrieve current vehicle state including location, battery level, and odometer reading (with caching option)
Get driving history within specified date ranges with configurable limits
Find drives to specific locations with mileage information and date filtering
Calculate total miles driven during weekly or custom time periods
Provides access to Tesla vehicle data through the Tessie API, enabling queries about vehicle location, battery level, charging status, odometer readings, driving history, and mileage calculations using natural language.
Click on "Deploy 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., "@Tessie MCP Extensionhow much battery do I have left and when should I charge?"
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.
Tessie MCP
Personal, self-hosted MCP access to Tessie. It is a Streamable HTTP server at /mcp, designed for one owner and protected by a static bearer token.
Setup
Generate a Tessie access token at https://dash.tessie.com/settings/api.
Create
.envfrom.env.exampleand generateMCP_AUTH_TOKENwithopenssl rand -base64 48.Start the service:
docker compose up -d --build.Configure an MCP client with URL
http://127.0.0.1:3000/mcpand headerAuthorization: Bearer <MCP_AUTH_TOKEN>.
TESSIE_API_KEY never leaves the server. Passing vin to get_vehicle selects and persists the default vehicle; later calls can omit it.
Related MCP server: Tesla MCP Server
Tools
list_vehicles, get_vehicle, analyze_history, get_driving_path, and vehicle_command. History analysis defaults to 90 days. Autopilot/FSD values are Tessie's native autopilot_distance and historical autopilot telemetry; they do not uniquely prove FSD usage.
Remote access
For a temporary URL without a tunnel token, run the app locally then execute cloudflared tunnel --url http://127.0.0.1:3000. For a stable named tunnel, set TUNNEL_TOKEN in .env and run docker compose -f docker-compose.yml -f docker-compose.tunnel.yml up -d.
The app bearer token remains required even behind Cloudflare.
Nginx
Use examples/nginx.conf; preserve the Authorization header, disable buffering, and use long timeouts.
Caddy
Use examples/Caddyfile; it forwards headers and supports streaming by default.
Smoke check
curl http://127.0.0.1:3000/healthz verifies liveness. The server has no command-line operation that invokes vehicle commands.
Available Tools
5 toolsget_driving_historyCInspect
Get driving history for a vehicle within a date range
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ) | |
| limit | No | Maximum number of drives to return | |
| start_date | No | Start date in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ) | |
| vin | Yes | Vehicle identification number (VIN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, pagination (beyond the 'limit' parameter), error handling, or what 'driving history' includes (e.g., trips, distances).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It front-loads the core purpose ('Get driving history for a vehicle') and adds essential scope ('within a date range'), making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (historical data retrieval with 4 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'driving history' entails, how results are structured, or behavioral aspects like data freshness or access permissions, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters (vin, start_date, end_date, limit). The description adds minimal value beyond the schema by implying date-range filtering, but doesn't provide additional context like format examples or constraints beyond what's in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get driving history') and resource ('for a vehicle'), specifying the scope ('within a date range'). It distinguishes from siblings like 'get_vehicles' (list vehicles) and 'get_vehicle_current_state' (current status), but doesn't explicitly differentiate from 'get_weekly_mileage' (which might overlap in purpose).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_weekly_mileage' or 'get_mileage_at_location'. The description implies usage for historical driving data, but lacks explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mileage_at_locationCInspect
Find drives to a specific location and return mileage information
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date to search until (ISO format) | |
| location | Yes | Location name or address to search for | |
| start_date | No | Start date to search from (ISO format) | |
| vin | Yes | Vehicle identification number (VIN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Find drives' and 'return mileage information', implying a read-only query, but doesn't specify whether this is a search or filter operation, what happens if no matches are found, or any rate limits or authentication requirements. The description is too vague for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words and gets straight to the point, though it could be slightly more structured by separating the action from the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a 4-parameter tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error handling, output format, and differentiation from siblings, making it incomplete for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'specific location' and 'mileage information', which loosely relates to the 'location' parameter and the tool's output, but adds no meaningful details beyond what the schema already provides. With 100% schema description coverage, the baseline is 3, as the schema adequately documents all parameters without needing extra explanation in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Find') and resource ('drives to a specific location'), and specifies the return value ('mileage information'). However, it doesn't explicitly differentiate from sibling tools like 'get_driving_history' or 'get_weekly_mileage', which might also involve mileage or location data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or comparisons to sibling tools like 'get_driving_history' or 'get_weekly_mileage', leaving the agent with no context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehicle_current_stateCInspect
Get the current state of a vehicle including location, battery level, odometer reading
| Name | Required | Description | Default |
|---|---|---|---|
| use_cache | No | Whether to use cached data to avoid waking the vehicle | |
| vin | Yes | Vehicle identification number (VIN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what data is returned without behavioral details. It doesn't mention latency, rate limits, authentication needs, or whether this operation wakes the vehicle (though the schema hints at caching). This is a significant gap for a tool that likely interacts with physical assets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core purpose, and lists specific data attributes efficiently. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain return format, error conditions, or important behavioral aspects like whether it wakes the vehicle. Given the complexity of vehicle state retrieval, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional parameter semantics beyond implying the VIN identifies the vehicle, which is already clear from the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current state of a vehicle') with specific attributes (location, battery level, odometer reading). It distinguishes from siblings like get_driving_history or get_vehicles by focusing on real-time state rather than historical data or lists, but doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_vehicles (for listing vehicles) or get_driving_history (for historical data). The description implies usage for current state retrieval but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vehiclesBInspect
List all vehicles in the Tessie account
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't address potential constraints like pagination, rate limits, authentication needs, or what happens if no vehicles exist. This leaves significant gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the return value includes (e.g., vehicle IDs, models, status) or behavioral aspects like error handling. For a tool with zero structured metadata, more contextual information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for this scenario is 4, as the description appropriately avoids redundant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all vehicles in the Tessie account'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_vehicle_current_state' or 'get_driving_history', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_vehicle_current_state' for real-time data or 'get_driving_history' for historical information. It lacks context about use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weekly_mileageCInspect
Calculate total miles driven in a specific week or time period
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | End date of the period (ISO format) | |
| start_date | Yes | Start date of the period (ISO format) | |
| vin | Yes | Vehicle identification number (VIN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the calculation action but doesn't reveal whether this is a read-only operation, requires authentication, has rate limits, or what the output format might be. For a tool with three required parameters and no annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a calculation tool with three required parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the calculation returns (e.g., numeric value, structured data), error conditions, or behavioral traits, leaving significant gaps for the agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear documentation for all three parameters (vin, start_date, end_date). The description adds minimal value beyond the schema, as it only implies date-range filtering without providing additional syntax or format details. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('calculate') and resource ('total miles driven'), and specifies the scope ('in a specific week or time period'). However, it doesn't explicitly differentiate from sibling tools like 'get_driving_history' or 'get_mileage_at_location', which might also involve mileage calculations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_driving_history' or 'get_vehicles', nor does it specify prerequisites or exclusions, leaving the agent to infer usage context from the tool name alone.
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.
5 tool updates
v1.0.0- First observed
get_driving_history - First observed
get_mileage_at_location - First observed
get_vehicle_current_state - First observed
get_vehicles - First observed
get_weekly_mileage
TDQS
Scored across 5 tools
The tools have mostly distinct purposes, but 'get_driving_history' and 'get_weekly_mileage' could be confused as both involve retrieving mileage data over time periods. However, their descriptions clarify that one is for general history and the other specifically for weekly totals, reducing ambiguity.
All tool names follow a consistent 'get_*' verb_noun pattern, making them predictable and easy to understand. The naming is uniform across all five tools, with no deviations in style or convention.
Five tools is reasonable for a vehicle management server, though it feels slightly thin for comprehensive coverage. The tools cover key read operations but may benefit from additional actions like vehicle control or settings management to be fully scoped.
The server provides good read-only coverage for vehicle data, including state, history, and mileage. However, there are notable gaps such as missing update/control operations (e.g., lock/unlock, climate control) and administrative functions, which limits agent workflows to retrieval only.
Maintenance
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides intelligent Tesla vehicle analytics and control through the Tessie API, including real-time status monitoring, charging cost optimization, efficiency trend analysis, trip planning, and predictive insights for Tesla owners.MIT
- FlicenseNot gradedqualityCmaintenanceEnables control and monitoring of Tesla vehicles through the Tessie API, providing access to vehicle state (battery, location, climate) and commands (lock/unlock, climate control, navigation) with support for both local and Cloudflare Worker deployment.11-
- FlicenseNot gradedqualityDmaintenanceProvides access to Tesla vehicle telemetry data via the Tessie API, enabling real-time monitoring of battery status, charging state, climate controls, location, and other vehicle metrics through 30+ tools with intelligent caching.-
- 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.98 npm2MIT