mcpField
T
Toyota & Lexus

Toyota & Lexus

本地服务
github.com地图与出行16 周前更新

关于 Toyota & Lexus

面向 MyToyota 和 MyLexus 欧洲账户的 MCP 服务,可向 AI 客户端提供车辆数据和远程控制。支持行程、车况、能源与空调信息,并可选择只读模式或通过 stdio、HTTP 运行。

主要功能

  1. 01车辆能源、状态与位置
  2. 02行程记录和能耗汇总
  3. 03车况与空调信息
  4. 04远程锁车、空调和充电
  5. 05只读模式与 HTTP 接入

适用场景

  1. 01查看剩余燃油、电量或续航
  2. 02回顾近期行程和纯电占比
  3. 03查找车辆或检查车辆状态
  4. 04预热车辆或开始充电

MCP 相关

向 MCP 客户端提供车辆数据工具、远程命令和提示词。支持 stdio,也可作为带 OAuth 2.1 的远程 HTTP 服务运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zepgram-toyota": {
"command": "uvx",
"args": [
"toyota-mcp"
],
"env": {
"TOYOTA_USERNAME": "<TOYOTA_USERNAME>",
"TOYOTA_PASSWORD": "<TOYOTA_PASSWORD>",
"TOYOTA_VIN": "<TOYOTA_VIN>",
"TOYOTA_BRAND": "<TOYOTA_BRAND>",
"TOYOTA_USE_METRIC": "<TOYOTA_USE_METRIC>"
}
}
}
}
启动命令uvx toyota-mcp
需要配置的环境变量
TOYOTA_USERNAMEMyToyota account email — only for the headless password sign-in; prefer `toyota-mcp login`
TOYOTA_PASSWORD密钥MyToyota account password — only for the headless password sign-in; prefer `toyota-mcp login`
TOYOTA_VINVIN selector when several vehicles share the account
TOYOTA_BRANDT for Toyota (default), L for Lexus
TOYOTA_USE_METRICtrue (default) for km/L, false for miles/gallons

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypitoyota-mcp0.3.5

工具

26

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

丰田

toyota-mcp — 面向 Claude 和其他 AI 助手的 Toyota 和 Lexus MCP 服务

PyPI CI Python 许可证:MIT

随时询问你的 Toyota。 toyota-mcp 是一个 Model Context Protocol (MCP)服务,可将 MyToyota 或 MyLexus 欧洲账户连接到 Claude、 Claude Code、Cursor、VS Code 或任何 MCP 客户端,让你用通俗语言查看汽车的燃油量、 续航里程、位置、行程和车况,并发送远程指令(锁车、空调、充电)。

“还剩多少续航里程?” · “车在哪里?” · “车锁好了吗?” · “上次行程消耗了多少?” · “我这个月的电动车占比是多少?” · “早上 8 点预热汽车。” · “车附近哪里有最便宜的汽油?”

车辆Toyota 和 Lexus,仅限欧洲(Toyota Connected Services / ctpa-oneapi)
动力系统汽油、柴油、全混合动力、插电式混合动力、纯电动
工具13 项读取工具 + 11 项远程指令 + 1 个提示词(完整列表)
安装uvx toyota-mcp — 无需克隆,无需构建
要求MyToyota/MyLexus 账户不得启用 MFA,Python 3.11+
构建基础pytoyoda,面向 Toyota 欧洲的社区客户端

要求

  • MyToyota Europe 账户(API 仅覆盖欧洲——北美和日本使用完全不同的系统)。
  • 使用 toyota-mcp login 登录,或在环境中提供账户凭据(这种方式无法处理 MFA/2FA)。
  • 车辆必须显示在 MyToyota 移动应用中。
  • Python 3.11+ 和 uv,用于零安装的 uvx 启动器 (uvx 会自行获取合适的 Python)。

非官方 API。 Toyota 随时可能更改或中断此 API,恕不另行通知。所有 API 访问 都通过 pytoyoda 隔离;过去遇到此类中断时,它通常能在几天内完成适配。

快速入门

登录一次
uvx toyota-mcp login

浏览器会打开 Toyota 官方登录页面。随后 Toyota 会将浏览器重定向到一个浏览器无法打开的 地址(com.toyota.oneapp:/…),并显示错误——这是预期情况:请从地址栏复制该地址, 然后粘贴回去。会话将保存在操作系统的凭据存储中,并自动刷新。此程序不会接触你的 密码,也不会将其写入配置文件。 uvx toyota-mcp logout 可清除保存的凭据。

Claude Desktop

添加到 claude_desktop_config.json(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "toyota": {
      "command": "uvx",
      "args": ["toyota-mcp"]
    }
  }
}

在 args 中的 toyota-mcp 后添加选项——例如,用于邮寄地址的 ["toyota-mcp", "--addresses", "osm"],或用于禁用所有远程指令的 ["toyota-mcp", "--read-only"]。

Claude Code
claude mcp add --transport stdio toyota -- uvx toyota-mcp
Cursor、VS Code 和其他 MCP 客户端

任何支持 stdio 的客户端都可使用相同配置——命令为 uvx, 参数为 ["toyota-mcp"]。在 VS Code 中,将其添加到 .vscode/mcp.json;在 Cursor 中, 添加到 ~/.cursor/mcp.json。

首次连接:doctor

在将任何内容接入 MCP 宿主之前,请先在终端检查配置:

uvx toyota-mcp doctor

此命令会验证凭据、列出你的车辆,并显示你的具体车型支持哪些工具。退出代码:0 正常 · 2 配置错误 · 3 身份验证错误 · 4 无车辆 · 5 API 错误 · 6 指令被拒绝(probe)。

远程访问 — “Connect” 按钮

默认情况下,服务与 MCP 客户端一起通过 stdio 运行。将其指向一个 URL,它就会变成一个拥有独立 OAuth 2.1 授权服务器的远程 MCP 服务,客户端的连接方式与连接 Gmail 或 GitHub 相同:粘贴 URL,按下 Connect,然后在浏览器中批准。

toyota-mcp --http https://toyota.example.com

无需进行其他配置 — 连接即是登录 Toyota:

  1. 将 https://toyota.example.com/mcp 粘贴到客户端中,然后按下 Connect。
  2. 客户端会注册自身,并将你带到此服务的登录页面。
  3. 输入 MyToyota 邮箱和密码;如果账户下有多辆车,再选择要使用的车辆。
  4. 客户端会获取令牌;服务只保留 Toyota 的刷新令牌。

登录 Toyota 账户就是你拥有此部署的证明 — 不需要共享代码,也没有用户数据库。已经连接到一个账户的服务会拒绝使用其他账户登录。

Toyota 自己的网页登录会跳转到移动设备深层链接(com.toyota.oneapp:/…),浏览器无法打开该链接 — 在手机上,它会改为打开 MyToyota 应用 — 因此,登录凭据由你运行的服务发送给 Toyota。凭据绝不会被写入:服务只保留 Toyota 返回的刷新令牌。无法使用启用了双重身份验证的账户,因为 Toyota 的车辆 API 不支持双重身份验证。

在你自己的设备(家用服务器、Raspberry Pi)上运行,并置于终止 TLS 的代理之后:服务会拒绝非 https:// 的公开 URL(localhost 除外),因为承载令牌不得以明文传输。已注册的客户端和已签发的令牌保存在 ~/.local/state/toyota-mcp/oauth.json(权限为 600)中,因此重启不会导致任何人断开连接;访问令牌有效期为一小时,并会静默刷新。

使用 Docker
docker build -t toyota-mcp --build-arg VERSION=0.3.0 .
docker run -d --name toyota-mcp -v toyota-mcp:/data -p 127.0.0.1:8787:8787 \
  toyota-mcp --http https://toyota.example.com --host 0.0.0.0

容器没有凭据存储,因此会话和授权都保存在 /data 中 — 请将其保留为卷,否则重启后就得重新登录。TOYOTA_SESSION_FILE 可将会话文件移至其他位置。

身份验证

首次使用前无需进行任何配置。尚未连接任何账户的服务仍会启动并告知你该怎么做:通过 HTTP 时,Connect 流程会为你登录;否则,可使用 toyota-mcp login。随后,toyota_list_vehicles 和 toyota_select_vehicle 会在对话中选择车辆。

Toyota 没有面向第三方的 API 计划:没有开发者门户,也没有应用专用令牌,而且移动应用使用你的账户密码登录。因此,此服务提供两种登录方式,并优先选择不会持有该密码的方式。

toyota-mcp login。 提示输入 MyToyota 邮箱和密码,登录 Toyota,并只保留刷新令牌 — 存储在操作系统的凭据存储中(Keychain、Windows Credential Locker、Secret Service),没有凭据存储时则保存在文件中。密码绝不会被写入,也不会出现在 MCP 宿主的配置文件中。

在环境变量中设置密码。 TOYOTA_USERNAME 和 TOYOTA_PASSWORD 仍可用于无人值守配置,但大多数 MCP 宿主会将其 env 块以纯文本形式存储在磁盘上,因此建议优先使用 toyota-mcp login。

配置

变量必填默认值说明
TOYOTA_USERNAME否—MyToyota 账户邮箱——仅用于密码登录
TOYOTA_PASSWORD否—MyToyota 账户密码——仅用于密码登录
TOYOTA_VIN否—固定一辆车,覆盖登录时的选择
TOYOTA_BRAND否TT 表示 Toyota,L 表示 Lexus
TOYOTA_USE_METRIC否truefalse 切换为英里/加仑

功能通过命令行选项启用,可在 toyota-mcp --help 和主机的 args 中查看:

选项默认值说明
--read-only关闭仅注册读取工具——不包含锁车、后备箱、灯光、空调或充电命令
--addresses osm|fr关闭将坐标转换为地址:osm 适用于全球(OpenStreetMap),fr 适用于法国(也会启用燃油价格)。默认关闭,因为这会将车辆位置发送给该服务
--places SPEC—命名地点,"home=43.6045,1.4440;work=43.6290,1.3630":200 米内的位置会显示相应标签
"toyota": {
  "command": "uvx",
  "args": ["toyota-mcp", "--addresses", "osm", "--places", "home=43.6045,1.4440"]
}

也可以使用本地 .env 文件(参见 .env.example)。凭据不会以其他方式写入磁盘; 令牌仅保存在内存中。

可用工具

读取工具的 readOnlyHint: true。除非服务以 --read-only 运行, 否则会注册以下远程命令。

工具示例问题关键字段
toyota_list_vehicles / toyota_select_vehicle有哪些车?使用 Yaris。账户中的所有车辆,以及工具操作的车辆
toyota_get_vehicle_info这是什么车?订阅是否有效?车型、年份、车牌、颜色、首次使用时间、订阅、声明的远程功能
toyota_get_energy还剩多少续航?燃油百分比、续航(km/mi)、电池信息或明确的“不适用”说明
toyota_get_charging正在充电吗?下次计划充电是什么时候?插电式电池百分比、充电状态、EV 续航、充满所需时间、计划(仅 PHEV / EV)
toyota_get_status车锁好了吗?我有没有忘记关灯?车门/车窗/后备箱/引擎盖、锁止状态、灯光、后排座椅提醒、总体状态
toyota_get_location车在哪里?纬度/经度、地址(使用开放数据)、Google 地图链接
toyota_get_odometer里程表上有多少公里?带单位的里程表读数
toyota_get_last_trip上次行程消耗了多少?距离、时长、能耗、EV 占比、混动模式占比、起点/终点位置
toyota_get_trips这周的行程有哪些?单次行程,按时间从新到旧排列(≤ 92 天前)
toyota_get_trip_summary过去 7 天的平均能耗是多少?本月的 EV 占比是多少?滚动时间窗口或日历周期(today、this_week、this_month、this_year)、重新计算的 L/100km、EV 行驶距离和时间占比
toyota_get_health车上有警报吗?上次保养是什么时候?警告灯、机油指示、通知、完整保养记录
toyota_get_climate预热正在运行吗?预设是什么?远程空调状态、目标温度、预设(持续时间、除霜器、加热座椅)
toyota_find_fuel_stations车附近最便宜的加油站在哪里?车附近某种燃油价格最低的加油站(法国,开放数据)
toyota_refresh_data我刚停车——刷新。限定范围的云端重新获取(绝不会唤醒车辆)

远程命令

默认注册;使用 --read-only 启动可将其排除:

工具效果注释
toyota_lock_doors / toyota_unlock_doors锁定 / 解锁车门可逆 / 有破坏性
toyota_lock_trunk / toyota_unlock_trunk仅锁定 / 解锁后备箱可逆 / 有破坏性
toyota_find_car短暂闪烁危险警告灯(静音)可逆
toyota_sound_horn短促鸣笛可逆
toyota_close_windows关闭电动车窗(因车型而异)可逆
toyota_start_climate使用已保存的预设(或指定温度,15–30 °C,步进为 0.5)开始预先调节车内温度——混合动力车型会启动发动机有破坏性
toyota_charge_now立即开始充电(插电式混合动力 / 电动汽车,且已接入电源)可逆
toyota_stop_climate停止预先调节车内温度可逆
toyota_wake_vehicle请求车辆立即报告状态(会消耗少量 12 V 电池电量)可逆

并非每辆车都接受每条命令:Toyota 会回复“vehicle not supported”(不支持此车辆)或“unknown command”(未知命令),工具会据此告知——不会向车辆发送任何内容。有关目前观察到的术语,请参阅 docs/architecture.md。

安全模型:

  • 每条命令都需要 confirm 参数。confirm=false(默认值)会返回预览,不会发送任何内容;Agent 会收到指示:先预览,征得用户同意后,再使用 confirm=true 调用。
  • MCP 主机仍会对非只读工具应用自己的权限提示。
  • 会检查 Toyota 的确认信息:如果 Toyota 拒绝命令(返回码不是 000000),命令会以 failed 状态返回,且不会轮询。
  • 结果会经过验证:发送命令后,服务会请求车辆报告状态(与 MyToyota 应用发出的唤醒请求相同),并轮询报告的状态,最长等待 40 s。verified 表示车辆报告了新状态或一份新的状态报告;accepted 表示 Toyota 已接收命令,但尚未报告状态变化——请在一分钟后再次检查;toyota_get_health 会显示 Toyota 发送的相关消息(例如车辆正在行驶)。
  • 命令频率限制为每 10 s 一次。

提示词

vehicle_briefing(可选的 language 参数)会请求模型根据上述工具生成简短的状态简报,内容包括续航、车门和车灯、位置、最近一次行程、警报,以及油箱油量较低时最便宜的燃油价格。

地址和燃油价格(可选)

--addresses 会将停放位置的坐标以及行程起点 / 终点的坐标转换为地址——无需账户或密钥:

选项地址燃油价格
(默认)——
osm全球范围,使用 OpenStreetMap Nominatim(根据其使用政策限制为每秒 1 次请求,并缓存结果)—
fr法国,国家地址数据库(api-adresse.data.gouv.fr)toyota_find_fuel_stations,价格由加油站自行上报至 data.economie.gouv.fr

启用此选项会将车辆坐标发送至该服务;否则不会向任何地方发送坐标。地址查询失败时会安全回退(答案中只是不包含地址)。

面向 AI Agent

如果你是 AI 助手,正在阅读本文以决定是否使用此服务,以及如何使用,以下是你需要了解的信息:

它是什么。 一个通过 stdio 暴露一辆欧洲地区 MyToyota/MyLexus 车辆的 MCP 服务。 每个工具都会返回符合其输出架构的 structuredContent。

如何选择工具。 对任何动力系统的燃油量和续航里程,使用 toyota_get_energy; toyota_get_charging 仅适用于插电式混合动力车和 EV(其他车辆使用时会明确报错,指出「不适用」)。对于车门、车窗、车锁和车灯,使用 toyota_get_status;对于警告灯、机油指示灯、通知和保养历史,使用 toyota_get_health。toyota_get_trips 会列出单次行程,toyota_get_trip_summary 会汇总一段时间或一个日历周期的数据——计算平均值时优先使用汇总工具,并传入 period,以匹配 MyToyota 应用中显示的数据。

默认情况下,数据不是实时的。 汽车会在熄火时上传遥测数据,并在停车时上传位置信息,因此每个响应都包含一个 freshness 区块:fetched_at、age_seconds、source(live / cache / stale_cache),以及 Toyota 提供车辆端时间戳时的 vehicle_reported_at。用户询问当前状态时,请注明数据的时效,而不要暗示数据是实时的。如果用户需要获取此刻的状态,toyota_wake_vehicle 会请求汽车上报(这会消耗少量 12 V 电池电量,因此不要例行调用)。

命令。 每个命令工具都需要传入 confirm。先传入 confirm=false 进行预览:不会发送任何内容,报告会显示当前状态。只有在用户明确同意后才传入 confirm=true,绝不要自行决定执行——toyota_unlock_doors、toyota_unlock_trunk 和 toyota_start_climate 都带有 destructiveHint(最后一项会启动混合动力车的发动机,在室内使用很危险)。结果会准确告知发生了什么:verified(汽车已报告新状态)、accepted(Toyota 已接受命令,但汽车尚未在超时时间内确认——请如实说明,不要声称成功),或 failed(并附上 Toyota 给出的原因)。收到 accepted 后不要重新发送;命令的速率限制为每 10 秒一次。

值得告知用户的限制。 仅支持欧洲地区。非插电式全混合动力车不会提供驱动电池电量——工具会明确说明这一点,而不会猜测。Toyota 会保留约 12 个月的行程历史。并非所有汽车都支持所有命令;Toyota 会回复「车辆不受支持」,且不会向汽车发送任何内容。

数据有多新?

Toyota 云采用事件推送机制:汽车会在熄火时上传遥测数据,并在停车时上传位置信息。更频繁地轮询只会返回相同的数据,因此此服务会将快照缓存 5 分钟(健康和保养数据缓存 15 分钟),并串行处理所有上游调用 (网关会严格限制突发请求)。

每个响应都包含一个 freshness 区块:

  • fetched_at / age_seconds — 此服务上次读取 Toyota 云的时间;
  • source — live、cache 或 stale_cache(Toyota 暂时不可用时,返回最后已知的数据,而不是报错);
  • vehicle_reported_at — Toyota 提供时的车辆端时间戳。

toyota_refresh_data 用于处理一个实际的数据空档(你刚停车,想获取最新位置),调用频率限制为每分钟一次。它会重新读取云端数据——不会唤醒汽车,因此不会消耗 12 V 电池电量。

动力系统支持范围

数据全混合动力(非插电式)PHEV / EV汽油/柴油
燃油量和续航里程✅✅✅
车门/车窗/车锁✅✅✅
位置、里程表、健康状况✅✅✅
行程,包括 EV 占比✅✅✅(不含 EV 占比)
插电式电池电量百分比、充电状态、EV 续航里程、充电计划、立即充电— 明确说明「不适用」✅(作者尚未测试——详见文档)—

Toyota 不会为非插电式混合动力车提供驱动电池电量——只能在车载显示屏上查看。工具会明确说明这一点,而不会返回容易造成误解的 null 值。

限制

  • 仅限欧洲(ctpa-oneapi — Toyota Connected Europe)。
  • 启用了 MFA/2FA 的账户无法通过身份验证。
  • Toyota 会在服务器端保留约 12 个月的行程历史记录。
  • 车锁/车门状态可能存在延迟;每条回答都会注明数据的时效。
  • --read-only 会移除所有远程命令。

故障排查

消息含义
MyToyota sign-in failed…凭据错误,或账户启用了 MFA。每次尝试之间会暂停 60 秒。运行 uvx toyota-mcp doctor。
No saved session and no credentials…运行 uvx toyota-mcp login,或设置 TOYOTA_USERNAME / TOYOTA_PASSWORD。
已保存的会话停止工作Toyota 可能会使其失效(例如更改密码、撤销会话)。再次运行 uvx toyota-mcp login。
…rate-limiting or temporarily unavailable…暂时性问题,与身份验证无关。网关经常返回 429;一分钟后重试。
Toyota appears to have changed this API endpoint…Toyota 迁移了路由。更新 toyota-mcp / pytoyoda。
No parked location has been reported…汽车从未上传过位置(或不具备此功能)。
No vehicles are attached to this MyToyota account.先在 MyToyota 移动应用中配对汽车。
…does not know that remote command (CTP-REMOTE-40006)该命令字符串不在 Toyota 当前支持的命令中(已观察到的情况包括 find-vehicle、engine-start、engine-stop、hazard-off、headlight-off)。没有任何指令发送到汽车。
…does not support that remote command (CTP-REMOTE-40041)Toyota 识别该命令,但这辆汽车不具备相应功能(已观察到的情况:2026 款 Corolla 不支持 headlight-on)。没有任何指令发送到汽车。

安全与隐私

  • 使用 toyota-mcp login 时,密码不会传给本程序:系统凭据存储中只会保存刷新令牌。使用环境变量时,密码会作为 SecretStr 保存,且不会写入日志。
  • GPS 坐标、VIN 和负载绝不会写入日志;pytoyoda 的调试日志(会转储完整的 HTTP 交互)已禁用,只有警告会输出到 stderr。
  • 令牌和快照都不会持久化到磁盘。
  • doctor --dump 的输出会递归脱敏,但分享前请手动检查。

贡献

docs/architecture.md 介绍了各层、约定(时效性、验证、隐私),以及添加工具、命令或提供程序时需要修改的内容。变更记录见 CHANGELOG.md。

开发

git clone https://github.com/zepgram/toyota-mcp && cd toyota-mcp
uv sync                             # version derives from the git tag (hatch-vcs)
uv run pytest                       # 127 tests, no network
uv run ruff check && uv run ruff format --check
uv run mypy src tests

测试会在 pytoyoda 自身的 controller_class 接口处模拟 Toyota,并使用匿名化负载对真实解析流程进行测试——CI 不会连接 Toyota。发布预览版本前,请使用真实凭据运行实时冒烟测试:

uv run pytest -m live

检查汽车后端接受哪些原始命令字符串——Toyota 的命令集与文档所述不同(pytoyoda#274),只有实时探测才能确认。每条命令都会对汽车执行实际操作,因此请在汽车旁运行:

uvx toyota-mcp probe headlight-on --watch lights
uvx toyota-mcp probe find-vehicle --beeps 2
发布

版本号就是 git 标签——无需修改任何内容。创建标签会发布软件包(通过 PyPI 可信发布,使用 pypi 环境),并根据对应的 CHANGELOG.md 部分创建 GitHub 发布版本:

git tag v0.1.0 && git push origin v0.1.0

使用 MCP Inspector 进行交互式调试:

npx @modelcontextprotocol/inspector uvx toyota-mcp

给贡献者(及其编码 Agent)的说明:本项目使用 MCP Python SDK v2——MCPServer、mcp.server.mcpserver.Context、ToolError。大多数教程仍展示 v1 的 FastMCP 导入方式,但这些导入已不存在。

相关项目

  • pytoyoda — 本 MCP 服务基于此 Python 客户端构建;请在此报告 API 变更问题。
  • ha_toyota — 基于同一库构建的 Home Assistant 集成。
  • tyta — 为同一 API 提供命令行工具和 MCP 服务,并使用自有的 HTTP 客户端。

关键词

Toyota MCP 服务、Lexus MCP 服务、MyToyota MCP、Toyota Connected Services API、Toyota Claude 集成、联网汽车 MCP、车辆遥测 MCP、远程锁定解锁 MCP、电动汽车充电 MCP、Model Context Protocol 汽车、Toyota Corolla RAV4 Yaris C-HR bZ4X、Claude Desktop 汽车集成、pytoyoda MCP。

商标

上方所示的 Toyota 徽标,以及 Toyota、Lexus、MyToyota 和 MyLexus 及其所有相关徽标和标志,均为 Toyota Motor Corporation 及其关联公司的专有财产。保留所有权利。此处仅为标识此工具所连接的服务而使用。这是一个独立的非官方 项目:与 Toyota 无关联,也未获其认可、赞助或支持。你的账户和车辆均受 Toyota 自身条款约束。

许可证

MIT © Benjamin Calef

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。