Toyota & Lexus vehicles: fuel, range, location, trips, health, climate, charging, commands
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Ask your Toyota anything. toyota-mcp is a Model Context Protocol
(MCP) server that connects a MyToyota or MyLexus Europe account to Claude,
Claude Code, Cursor, VS Code or any MCP client β read your car's fuel level,
range, location, trips and health, and send remote commands (lock, climate,
charging) in plain language.
"How much range is left?" Β· "Where is the car?" Β· "Is it locked?" Β· "What did the last trip consume?" Β· "What's my EV share this month?" Β· "Pre-heat the car for 8 am." Β· "Cheapest petrol near the car?"
| Vehicles | Toyota and Lexus, Europe only (Toyota Connected Services / ctpa-oneapi) |
| Powertrains | petrol, diesel, full hybrid, plug-in hybrid, electric |
| Tools | 13 read + 11 remote commands + 1 prompt (full list) |
| Install | uvx toyota-mcp β no clone, no build |
| Requires | a MyToyota/MyLexus account without MFA, Python 3.11+ |
| Built on | pytoyoda, the community client for Toyota Europe |
toyota-mcp login, or with account credentials in the
environment (that path cannot handle MFA/2FA).uv for the zero-install uvx launcher
(uvx fetches a suitable Python by itself).Unofficial API. Toyota can change or break this API at any time without notice. All API access is isolated behind pytoyoda, which historically absorbs such breakage within days.
Your browser opens Toyota's own sign-in page. Toyota then redirects to an
address the browser cannot follow (com.toyota.oneapp:/β¦) and shows an error β
that is expected: copy that address from the address bar and paste it back. The
session is saved in your operating system's credential store and refreshed
automatically. Your password is never seen by this program and never written
to a configuration file. uvx toyota-mcp logout forgets it.
Add to claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json):
Add options after toyota-mcp in args β for example
["toyota-mcp", "--addresses", "osm"] for postal addresses, or
["toyota-mcp", "--read-only"] to leave every remote command out.
Any client that speaks stdio works with the same shape β command uvx,
arguments ["toyota-mcp"]. In VS Code, add it to .vscode/mcp.json; in Cursor,
to ~/.cursor/mcp.json.
Before wiring anything into an MCP host, check your setup from a terminal:
It validates credentials, lists your vehicles, and prints which tools your
specific car supports. Exit codes: 0 ok Β· 2 config Β· 3 auth Β·
4 no vehicle Β· 5 API error Β· 6 command rejected (probe).
By default the server runs on stdio, next to the MCP client. Point it at a URL instead and it becomes a remote MCP server with its own OAuth 2.1 authorization server, so a client connects the way it connects to Gmail or GitHub: paste the URL, press Connect, approve in the browser.
Nothing else to configure β connecting is signing in to Toyota:
https://toyota.example.com/mcp into your client and press Connect.Signing in to the Toyota account is the proof that you own the deployment β there is no shared code and no user database. A server already connected to one account refuses a sign-in with a different one.
Toyota's own web login ends on a mobile deep link (com.toyota.oneapp:/β¦) that
a browser cannot follow β on a phone it opens the MyToyota app instead β so the
credentials are posted to Toyota by the server you run. They are never written
down: only the refresh token Toyota returns is kept. Accounts with two-factor
authentication cannot be used, as Toyota's vehicle API does not support them.
Run it on a machine of yours (a home server, a Raspberry Pi), behind a
TLS-terminating proxy: the server refuses a non-https:// public URL other
than localhost, because bearer tokens must not travel in clear. Registered
clients and issued tokens are kept in ~/.local/state/toyota-mcp/oauth.json
(mode 600) so a restart does not disconnect anyone; access tokens last an hour
and refresh silently.
A container has no credential store, so the session and the grants live in
/data β keep it as a volume or signing in again is the price of a restart.
TOYOTA_SESSION_FILE moves the session file elsewhere.
Nothing has to be configured before the first use. A server with no account
connected still starts and says what to do: over HTTP the Connect flow signs you
in, otherwise toyota-mcp login does. toyota_list_vehicles and
toyota_select_vehicle then choose the car from the conversation.
Toyota has no third-party API programme: there is no developer portal, no per-application token, and the mobile app signs in with your account password. This server therefore offers two ways in, and prefers the one where it never holds that password.
toyota-mcp login. Asks for the MyToyota email and password, signs in to
Toyota, and keeps only the refresh token β in your operating system's
credential store (Keychain, Windows Credential Locker, Secret Service), or in a
file when there is none. The password is never written down, and never lands in
an MCP host's configuration file.
Password in the environment. TOYOTA_USERNAME and TOYOTA_PASSWORD still
work for unattended setups, but most MCP hosts store their env block as plain
text on disk, so prefer toyota-mcp login.
| Variable | Required | Default | Description |
|---|---|---|---|
TOYOTA_USERNAME | no | β | MyToyota account email β only for the password sign-in |
TOYOTA_PASSWORD | no | β | MyToyota account password β only for the password sign-in |
TOYOTA_VIN | no | β | Pins one vehicle, overriding the choice made at sign-in |
TOYOTA_BRAND | no | T | T Toyota, L Lexus |
TOYOTA_USE_METRIC | no | true | false switches to miles/gallons |
Features are command-line options, visible in toyota-mcp --help and in your
host's args:
| Option | Default | Description |
|---|---|---|
--read-only | off | register only the read tools β no lock, trunk, lights, climate or charging commands |
--addresses osm|fr | off | turn coordinates into addresses: osm worldwide (OpenStreetMap), fr France (also enables fuel prices). Off by default because it sends the car's position to that service |
--places SPEC | β | named places, "home=43.6045,1.4440;work=43.6290,1.3630": positions within 200 m are labelled |
A local .env file works too (see .env.example). Credentials never touch disk
otherwise; tokens live in memory only.
Read tools are readOnlyHint: true. The remote commands below are registered
unless the server runs with --read-only.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/toyota-lexus)<a href="https://allmcps.com/mcp/toyota-lexus"><img src="https://allmcps.com/api/badge/toyota-lexus?style=directory" alt="Toyota & Lexus on AllMCPs" /></a>