Skip to main content
Glama
keithah

Tessie MCP Extension

by keithah

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

  1. Generate a Tessie access token at https://dash.tessie.com/settings/api.

  2. Create .env from .env.example and generate MCP_AUTH_TOKEN with openssl rand -base64 48.

  3. Start the service: docker compose up -d --build.

  4. Configure an MCP client with URL http://127.0.0.1:3000/mcp and header Authorization: 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 tools
get_driving_historyCInspect

Get driving history for a vehicle within a date range

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ)
limitNoMaximum number of drives to return
start_dateNoStart date in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ssZ)
vinYesVehicle identification number (VIN)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date to search until (ISO format)
locationYesLocation name or address to search for
start_dateNoStart date to search from (ISO format)
vinYesVehicle identification number (VIN)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data to avoid waking the vehicle
vinYesVehicle identification number (VIN)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date of the period (ISO format)
start_dateYesStart date of the period (ISO format)
vinYesVehicle identification number (VIN)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 5 tool updatesv1.0.0
    • First observedget_driving_history
    • First observedget_mileage_at_location
    • First observedget_vehicle_current_state
    • First observedget_vehicles
    • First observedget_weekly_mileage

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    9
    8 npm
    2
    MIT