Toyota & Lexus について
MyToyotaおよびMyLexusの欧州アカウント向けMCPサーバーで、AIクライアントに車両データとリモート操作を提供します。走行履歴、車両状態、エネルギー、空調に対応し、読み取り専用モードとstdio・HTTPでの実行を選べます。
主な機能
- 01エネルギー、状態、位置情報
- 02走行履歴と消費量の集計
- 03車両状態と空調情報
- 04ロック、空調、充電のリモート操作
- 05読み取り専用モードとHTTP接続
活用シーン
- 01燃料、充電量、航続距離の確認
- 02最近の走行とEV比率の確認
- 03車両の検索や状態の確認
- 04車内の事前空調や充電の開始
MCP 対応
車両データのツール、リモート操作、プロンプトをMCPクライアントに公開します。stdioのほか、OAuth 2.1対応のリモートHTTPサーバーとしても動作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx toyota-mcpTOYOTA_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 accountTOYOTA_BRANDT for Toyota (default), L for LexusTOYOTA_USE_METRICtrue (default) for km/L, false for miles/gallonsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
26掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
toyota-mcp — Claude やその他の AI アシスタント向け Toyota および Lexus の MCP サーバー
Toyota のことなら何でも聞いてください。 toyota-mcp は、Model Context Protocol
(MCP)サーバーです。MyToyota または MyLexus の欧州アカウントを Claude、
Claude Code、Cursor、VS Code、その他の MCP クライアントに接続し、車の燃料残量、
航続距離、位置、走行履歴、車両の状態を確認したり、平易な言葉でリモート操作(施錠、空調、
充電)を実行したりできます。
「あとどれくらい走れますか?」 · 「車はどこにありますか?」 · 「施錠されていますか?」 · 「直近の走行でどれくらい消費しましたか?」 · 「今月の EV 比率は?」 · 「午前 8 時に車内を暖めてください。」 · 「車の近くで最も安いガソリンは?」
| 車両 | Toyota および Lexus、欧州のみ(Toyota Connected Services/ctpa-oneapi) |
| パワートレイン | ガソリン、ディーゼル、フルハイブリッド、プラグインハイブリッド、電気自動車 |
| ツール | 読み取り 13 個 + リモート操作 11 個 + プロンプト 1 個(一覧) |
| インストール | uvx toyota-mcp — クローンもビルドも不要 |
| 必要条件 | MFA を使用していない MyToyota/MyLexus アカウント、Python 3.11 以降 |
| ベース | pytoyoda、Toyota Europe 向けコミュニティクライアント |
必要条件
- MyToyota Europe アカウント(API は欧州のみを対象とします。北米と日本ではまったく異なるシステムが使われています)。
toyota-mcp loginでサインインするか、環境内のアカウント認証情報を使用してください(後者の方法では MFA/2FA に対応できません)。- 車両が MyToyota モバイルアプリに表示されている必要があります。
- Python 3.11 以降と、インストール不要の
uvxランチャーを使うためのuv(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)。
リモートアクセス —「接続」ボタン
デフォルトでは、サーバーは MCP クライアントの隣で stdio 経由で実行されます。代わりに URL を指定すると、独自の OAuth 2.1 認可サーバーを備えたリモート MCP サーバーになります。そのため、クライアントは Gmail や GitHub に接続するのと同じように接続できます。URL を貼り付けて 接続 を押し、ブラウザーで承認します。
toyota-mcp --http https://toyota.example.com
ほかに設定することはありません。接続することが Toyota へのサインインです。
- クライアントに
https://toyota.example.com/mcpを貼り付けて、「接続」を押します。 - クライアントが自身を登録し、このサーバーのサインインページに移動します。
- MyToyota のメールアドレスとパスワードを入力し、アカウントに複数の車両がある場合は使用する車両を選びます。
- クライアントがトークンを取得し、サーバーは Toyota のリフレッシュトークンのみを保持します。
Toyota アカウントへのサインインが、デプロイメントを所有していることの証明になります。共有コードもユーザーデータベースもありません。すでに 1 つのアカウントに接続されているサーバーは、別のアカウントでのサインインを拒否します。
Toyota のウェブログインはモバイルのディープリンク(com.toyota.oneapp:/…)で終了します。このリンクはブラウザーでは開けず、スマートフォンでは代わりに MyToyota アプリが開きます。そのため、実行するサーバーから Toyota に認証情報が送信されます。認証情報が書き込まれることはなく、保持されるのは Toyota が返すリフレッシュトークンのみです。Toyota の車両 API が二要素認証に対応していないため、二要素認証が有効なアカウントは使用できません。
TLS 終端プロキシの背後にある自分のマシン(ホームサーバーや Raspberry Pi など)で実行してください。Bearer トークンを平文で送信してはならないため、サーバーは localhost 以外の https:// ではない公開 URL を拒否します。登録済みのクライアントと発行済みトークンは ~/.local/state/toyota-mcp/oauth.json(モード 600)に保存されるため、再起動しても接続は維持されます。アクセストークンの有効期間は 1 時間で、サイレントに更新されます。
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 プログラムがありません。開発者ポータルもアプリケーションごとのトークンもなく、モバイルアプリはアカウントのパスワードでサインインします。そのため、このサーバーは 2 つの認証方法を提供し、パスワードを保持しない方法を優先します。
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 | いいえ | — | 1 台の車両を固定し、サインイン時の選択を上書きします |
TOYOTA_BRAND | いいえ | T | T は Toyota、L は Lexus |
TOYOTA_USE_METRIC | いいえ | true | false にすると、マイル/ガロンに切り替わります |
機能はコマンドラインオプションとして指定します。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 m 以内の位置にラベルを付けます |
"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 | 走行距離計は何 km ですか? | 単位付きの走行距離計の値 |
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 | ただちに充電を開始します(PHEV/EV、プラグ接続時) | 可逆 |
toyota_stop_climate | 事前空調を停止します | 可逆 |
toyota_wake_vehicle | 車に現在の状態を報告するよう要求します(12 V バッテリーを少し消費します) | 可逆 |
すべての車がすべてのコマンドを受け付けるわけではありません。Toyota が「vehicle not supported」(車両はサポートされていません)または「unknown command」(不明なコマンド)と応答した場合、ツールがその旨を示し、車には何も送信されません。これまでに確認された用語については、docs/architecture.md を参照してください。
安全性の仕組み:
- すべてのコマンドには
confirmパラメーターがあります。デフォルトのconfirm=falseではプレビューが返され、何も送信されません。エージェントには、プレビューを表示し、ユーザーの同意を得てからconfirm=trueを指定して呼び出すよう指示されています。 - MCP ホストは、読み取り専用ではないツールに対して、引き続き独自の許可確認を行います。
- Toyota からの応答が確認されます。コマンドが拒否された場合(戻りコードが
000000以外)、結果はfailedとなり、ポーリングは行われません。 - 結果は検証されます。送信後、サーバーは車にレポートを要求し(MyToyota アプリと同じウェイク要求)、報告された状態を最大 40 s ポーリングします。
verifiedは、車が新しい状態または新しいレポートを報告したことを意味します。acceptedは、Toyota がコマンドを受け付けたものの、まだ変更が報告されていないことを意味します。1 分後にもう一度確認してください。toyota_get_healthには、Toyota からのメッセージ(例:車が動いていた)が表示されます。 - コマンドは 10 s に 1 回までに制限されています。
プロンプト
vehicle_briefing(language 引数は任意)は、上記のツールを使って、航続距離、ドアとライト、位置、直近の走行、警告、タンク残量が少ない場合の最安燃料などを含む短い状況報告をモデルに作成させます。
住所と燃料価格(任意)
--addresses を指定すると、駐車位置および走行開始/終了地点の座標を住所に変換します。アカウントもキーも不要です。
| オプション | 住所 | 燃料価格 |
|---|---|---|
| (デフォルト) | — | — |
osm | 世界中に対応、OpenStreetMap Nominatim(利用ポリシーに従い 1 秒あたり 1 リクエストに制限、結果はキャッシュされます) | — |
fr | フランス、全国住所データベース(api-adresse.data.gouv.fr) | toyota_find_fuel_stations、data.economie.gouv.fr に各スタンドが自己申告した価格 |
この機能を有効にすると、車の座標がそのサービスに送信されます。それ以外では、座標がどこかに送信されることはありません。住所の検索に失敗しても処理は続行されます(回答に住所が含まれないだけです)。
AI エージェント向け
この MCP サーバーを利用するかどうか、また利用方法を判断するために読んでいる AI アシスタントの方へ、必要な情報を以下に示します。
概要。 MyToyota/MyLexus Europe の車両 1 台を公開する stdio MCP サーバーです。各ツールは、出力スキーマに一致する structuredContent を返します。
ツールの選び方。 すべてのパワートレインで燃料と航続距離を確認するには toyota_get_energy を使います。toyota_get_charging はプラグインハイブリッド車と EV 専用です。それ以外では、適用対象外であることを明示してエラーになります。ドア、窓、ロック、ライトには toyota_get_status、警告灯、オイル表示、通知、整備履歴には toyota_get_health を使います。toyota_get_trips は個々の走行を一覧表示し、toyota_get_trip_summary は期間または暦期間ごとに集計します。平均値には集計を優先し、MyToyota アプリに表示される数値と合わせるには period を渡してください。
データは、標準ではリアルタイムではありません。 車両はイグニッションを切ったときにテレメトリーをアップロードし、駐車時に位置情報をアップロードします。そのため、すべてのレスポンスには freshness ブロックが含まれます。そこには fetched_at、age_seconds、source(live/cache/stale_cache)、およびトヨタが車両側のタイムスタンプを提供する場合は 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 はトヨタがコマンドを受け付けたものの、タイムアウトまでに車両が確認できなかったことを意味します。その場合はその旨を伝え、成功したと主張しないでください。failed の場合はトヨタからの理由が示されます。accepted の場合は再送信しないでください。コマンドの送信は 10 秒に 1 回までに制限されています。
ユーザーに伝えておくべき制限事項。 対応地域は欧州のみです。セルフチャージ式フルハイブリッド車では駆動用バッテリーの残量を取得できません。ツールは推測せず、その旨を明示します。トヨタが保持する走行履歴はおよそ 12 か月分です。すべての車両がすべてのコマンドに対応しているわけではありません。トヨタから「vehicle not supported」と応答された場合、車両には何も送信されません。
データの鮮度について
トヨタのクラウドはイベント発生時にプッシュされます。車両はイグニッションを切ったときにテレメトリーをアップロードし、駐車時に位置情報をアップロードします。より頻繁にポーリングしても同じデータが返されるため、このサーバーはスナップショットを 5 分間(健康状態と整備データについては 15 分間)キャッシュし、すべての上流呼び出しを直列化します (ゲートウェイは短時間の大量リクエストを厳しく制限します)。
すべてのレスポンスには freshness ブロックが含まれます。
fetched_at/age_seconds— このサーバーが最後にトヨタのクラウドからデータを読み取った時刻と、その経過時間です。source—live、cache、stale_cacheのいずれかです(トヨタが一時的に利用できない場合、エラーにせず最後に取得したデータを返します)。vehicle_reported_at— トヨタが提供する場合の、車両側のタイムスタンプです。
toyota_refresh_data は、実際に必要となる唯一のケース(駐車したばかりで最新の位置情報を確認したい場合)のために用意されています。呼び出しは 1 分に 1 回までです。クラウドからデータを再取得するだけで、車両を起動することはないため、12 V バッテリーを消費しません。
パワートレイン別の対応状況
| データ | フルハイブリッド(セルフチャージ式) | PHEV/EV | ガソリン/ディーゼル |
|---|---|---|---|
| 燃料残量と航続距離 | ✅ | ✅ | ✅ |
| ドア/窓/ロック | ✅ | ✅ | ✅ |
| 位置情報、オドメーター、健康状態 | ✅ | ✅ | ✅ |
| 走行履歴(EV 比率を含む) | ✅ | ✅ | ✅(EV 比率なし) |
| プラグインバッテリー残量(%)、充電状態、EV 航続距離、スケジュール、今すぐ充電 | — 「適用対象外」と明示 | ✅(作者によるテスト未実施 — ドキュメントを参照) | — |
トヨタはセルフチャージ式ハイブリッド車の駆動用バッテリー残量を公開していません。車内ディスプレイでのみ確認できます。ツールは、誤解を招く 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 を返します。1 分後に再試行してください。 |
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 通信全体を出力する機能)は無効になっており、標準エラー出力に表示されるのは警告のみです。
- トークンやスナップショットがディスクに保存されることはありません。
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
貢献者(およびそのコーディングエージェント)への注意:このプロジェクトでは MCP Python SDK v2(MCPServer、mcp.server.mcpserver.Context、ToolError)を使用しています。多くのチュートリアルでは、現在は存在しない v1 の FastMCP インポートが引き続き紹介されています。
関連プロジェクト
- pytoyoda — このサーバーの基盤となっている Python クライアントです。API の破損はそちらに報告してください。
- ha_toyota — 同じライブラリを使った Home Assistant 統合です。
- tyta — 同じ API 用の CLI および MCP サーバーです。独自の HTTP クライアントを備えています。
キーワード
Toyota MCP サーバー、Lexus MCP サーバー、MyToyota MCP、Toyota Connected Services API、Toyota と Claude の連携、コネクテッドカー MCP、車両テレメトリー MCP、リモート ロック・解除 MCP、EV 充電 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 による承認、後援、サポートを受けていません。また、お客様のアカウントと車両には Toyota 独自の利用規約が適用されます。
ライセンス
MIT © Benjamin Calef
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。