Car_Diagnostic_AI
Majster-AI — MCP 経由の自動車 UDS 診断エージェント
Car_Diagnostic_AI — 別名 CDA および Majster-AI — は、大規模言語モデルを UDS/CAN 経由で車両の制御モジュールに接続し、整備マニュアルのローカルインデックスやライブの Web 検索にも接続する診断エージェントです。この 3 つの機能は、それぞれ独立した Model Context Protocol サーバーとして公開され、LangGraph エージェントによって統括されます。車両への書き込みを伴う操作には、厳格なヒューマン・イン・ザ・ループのゲートが設けられています。
Land Rover Freelander 2(2010年式、2.2 TD4) で開発・テスト済みです。
Cyber-HUD Web インターフェース が同梱されています。実車の座標に配置されたモジュールピンを持つインタラクティブな 3D シャシー、ライブのテレメトリゲージ、そして車両への書き込み操作のためのドラッグ承認ゲートを備えています。

⚠️ デフォルトはシミュレーター、かつ READ_ONLY
クローンした直後の状態では、実際のバスへの送信も車両への書き込みもできません。どちらも意図的な設定変更が必要です。大切な車両に接続する前に docs/SAFETY.md をお読みください。
実際にできること
you> The car goes into limp mode on the motorway. What's wrong with it?
[agent.plan] Calling: read_dtc
[car.read_dtc] Reading DTCs from ECM
[agent.plan] Calling: read_live_data
[agent.plan] Calling: search_manual
majster> Three codes stored in the ECM, and I think two of them are one fault:
P0299 (confirmed) — turbocharger underboost
P2015 (confirmed) — intake manifold runner position sensor
P0401 (pending) — EGR flow insufficient
Live data backs up the underboost: manifold pressure reads 101 kPa at idle
against 100 kPa barometric, so the turbo isn't building any boost at all.
P0299 and P2015 together on a DW12 is a familiar pattern — both are air-path
faults and the swirl-flap linkage sits right next to the actuator. The
manual (fl2_engine.pdf, page 412) says actuator vacuum should reach 0.6 bar
at idle; that's the measurement that would separate a seized actuator rod
from a boost leak, and it's a five-minute check before anyone buys a turbo.
The pending EGR code I'd leave alone for now — it hasn't confirmed, and a
fouled EGR is a plausible consequence of running underboost rather than a
separate fault.なお、推測してコードを消去する提案をすることはありません。
Related MCP server: Codex MCP Server
アーキテクチャ
+--------------------------------------------------+
| Cyber-HUD (React · Three.js · Framer Motion) |
+---------------------------+----------------------+
| WS /ws/diagnostics
+---------------------------+----------------------+
| FastAPI (telemetry · agent · HITL) |
+---------------------------+----------------------+
|
+--------------+------------+
| LangGraph agent |
| Claude Opus 5 / Ollama |
+-------------+-------------+
|
+-----------------+-----------------+
| | |
+---------v------+ +--------v-------+ +-------v--------+
| Car_Interface | | RAG_Workshop | | Web_Search |
| MCP | | MCP | | MCP |
+---------+------+ +--------+-------+ +-------+--------+
| | |
UDS over CAN local manuals Tavily / DuckDuckGoCar_Interface_MCP —
python-can+udsoncan。任意のモジュールから DTC、ライブデータ、生の DID を読み取ります。コードの消去は承認ハンドシェイクを経た場合のみ可能です。5 つの交換可能なバックエンドと内蔵 ECU シミュレーターを備えています。RAG_Workshop_MCP — お手持ちの整備マニュアル PDF を対象とした ChromaDB。完全にオンデバイスで動作し、すべての回答にファイル名とページ番号の引用が付きます。
Web_Search_MCP — Tavily と、キー不要の DuckDuckGo フォールバック。Land Rover フォーラムを重視した重み付けがされています。
オーケストレーター — デフォルトは READ_ONLY。書き込み操作はすべてグラフを一時停止し、人間の承認を待ちます。
詳細は docs/ARCHITECTURE.md を参照してください。
インストール
git clone https://github.com/Mati83mon/Car_Diagnostic_Ai.git
cd Car_Diagnostic_Ai
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[all,dev]" # or: pip install -r requirements.txt
cp .env.example .env # then edit itTermux や、重い追加パッケージがビルドできない ARM デバイスでは、それらをスキップしてください。このプロジェクトはそれらなしでも動作するように設計されています:
pip install -e ".[car,mcp,agent,web]"動作確認
majster-ai doctorcda や car-diagnostic-ai、または python main.py <command> としても利用できます。
設定
すべて .env に格納されています。デフォルトは安全な値なので、空のファイルでも有効なファイルです。最も重要な設定は次のとおりです:
# --- safety -----------------------------------------------------------
MAJSTER_WRITE_ENABLED=false # master switch. Leave false.
MAJSTER_REQUIRE_APPROVAL=true # human-in-the-loop. Leave true.
# --- vehicle interface -------------------------------------------------
MAJSTER_CAN_BACKEND=virtual # virtual|socketcan|slcan|serial|j2534|rfcomm
MAJSTER_CAN_CHANNEL=can0
MAJSTER_CAN_BITRATE=500000
# --- LLM ----------------------------------------------------------------
ANTHROPIC_API_KEY=sk-ant-... # Claude Opus 5; falls back to Ollama if unset
MAJSTER_OLLAMA_MODEL=qwen2.5:7b-instruct
# --- web search ---------------------------------------------------------
TAVILY_API_KEY=tvly-... # optional; DuckDuckGo is used without itすべてのオプションと注釈は .env.example を参照してください。
使い方
対話モード
majster-ai chatワンショット
majster-ai ask "why is the DPF light on?"LLM なしでツールを直接使用
majster-ai dtc --module ECM # read fault codes
majster-ai dtc --all # scan every module
majster-ai live RPM COOLANT_TEMP MAF # read live data
majster-ai scan # discover which ECUs answer
majster-ai clear --module ECM # write: prompts for approval整備マニュアル
cp ~/manuals/*.pdf data/manuals/
majster-ai ingest
majster-ai search "swirl flap removal procedure"マニュアルはローカルでインデックス化・検索されます。アップロードされることはありません。
Web インターフェース
cd frontend && npm install && npm run build # once
majster-ai web # http://127.0.0.1:8000フロントエンド開発の場合は、Vite 開発サーバーを併用して実行します:
majster-ai web # terminal 1 — API on :8000
cd frontend && npm run dev # terminal 2 — UI on :5173, proxying to :8000UI はライブのテレメトリをストリーミング表示し、3D シャシー上でモジュールの健全性を示し、書き込み操作の前にはドラッグ承認ジェスチャーで一時停止します。故障コードをクリックすると、カメラがそのコードが示すコンポーネントに飛びます。たとえば C0034 のようなシャシーコードは、エンジンルームの ABS モジュールではなく、右前輪のセンサーに移動します。
majster-ai web はデフォルトで 127.0.0.1 にバインドされます。ポートに到達できるものはどれでも、エージェントに書き込みの提案を依頼できます。承認ゲートは依然として有効ですが、プロンプトにはそこにいる誰かが答えることになります。--host 0.0.0.0 は、管理下にあるネットワークでのみ使用してください。
別のクライアント用の MCP サーバーとして
majster-ai serve car_interface # stdio transportClaude Desktop などの設定は docs/ARCHITECTURE.md にあります。
安全モデル
モデルと車両の間には、4 つの独立した層があります。書き込み操作は、そのすべてを通過する必要があります。
層 | 保証 |
1. マスタースイッチ |
|
2. トークンハンドシェイク | 最初の呼び出しは常に失敗し、影響の要約と、正確な引数のハッシュに紐付けられ 5 分で失効する使い捨てトークンを返します。ECM の承認で ABS モジュールの消去が許可されることはありません。 |
3. 人間による一時停止 | グラフは |
4. システムプロンプト | 他の 3 つの層が何を行うかをモデルに伝えます。最も弱い層として扱われます。実際にそうだからです。 |
ブラウザは単なる承認者の 1 つにすぎません。スライダーは 1 つのブール値を送信するだけで、確認トークンはサーバープロセス内で作成・使用され、WebSocket フレームに現れることはありません。クライアントはサーバーが選択して尋ねた質問に答えることはできますが、質問を発することはできず、書き込みを実行する資格情報を作成することもできません。

層 2 は MCP サーバーの背後にあるサービス内に存在するため、このエージェント以外のものが操作している場合でも車両を保護します。
========================================================================
WRITE OPERATION - HUMAN APPROVAL REQUIRED
========================================================================
Operation : clear_dtc
Module : ECM (Engine Control Module - 2.2 TD4)
Scope : ALL stored DTCs in this module
Risk : MEDIUM Reversible: NO
Will erase 3 code(s):
- P0299-00 Turbocharger/Supercharger A Underboost Condition
- P2015-00 Intake Manifold Runner Position Sensor/Switch Circuit
- P0401-00 Exhaust Gas Recirculation Flow Insufficient Detected
Consequences:
! Freeze-frame data captured when the fault occurred will be lost.
! Readiness monitors reset; the vehicle may fail an emissions test.
! Clearing does not repair anything. If the fault is still present
the code will return.
========================================================================
Type 'yes' to authorise, anything else to decline:詳細は docs/SAFETY.md を参照してください。
ハードウェア
バックエンド | インターフェース | プラットフォーム |
| なし — 内蔵シミュレーター | どこでも |
| Tactrix Openport 2.0 | Linux、Windows |
| USB2CAN、CANable、PiCAN | Linux |
| CANable/CANtact(slcan ファームウェア) | Linux、macOS、Windows |
| ELM327 / OBDLink(Bluetooth 経由) | Linux、Termux |
Freelander 2 は、OBD-II のピン 6(CAN-H)とピン 14(CAN-L)で、11 ビット識別子、500 kbit/s の ISO 15765-4 CAN を使用します。
各バックエンドのセットアップ、Termux、Raspberry Pi、実際に動作する ELM327 アダプターについては、docs/HARDWARE.md を参照してください。
このリポジトリ内のデータについて
どの車両でも、法的に定められていて確実な診断アドレスは 2 つだけです。パワートレインのアドレス 0x7E0/0x7E8 と 0x7E1/0x7E9 です。内蔵モジュールマップのその他すべてはコミュニティ由来であり、verified: false とマークされて配布されます。
ライブデータのスケーリングも同様です。SAE J1979 の PID は標準であり、検証済みとマークされています。メーカー独自の DID はプロプライエタリであり、一切同梱されていません。自信を持って間違った数値を出すことは、診断ツールとして最悪の出力だからです。
お使いの車 について真実を調べるには:
majster-ai scanそして、応答したものを data/modules.json に記録してください。docs/FREELANDER2.md を参照してください。
開発
make install-dev
make check # black --check, flake8, pytest
make test-cov # coverage reportスイート全体はプロセス内の ECU シミュレーターに対して実行されます。ハードウェアも API キーもネットワークも不要です:
736 passed, 1 skippedシミュレーターはモックではなく本物の UDS 実装であるため、リトライロジック、DTC コーデック、MCP ツール、HITL ゲートはすべて、実際のバスで遭遇するのと同じバイトストリームに対して実行されます。フォールトインジェクションにより、不安定なバスの経路を決定的にテストできます:
ecm.inject_faults(drop_next=2) # two silent timeouts, then fine
ecm.inject_faults(pending_next=3) # three NRC 0x78, then the answer
ecm.inject_faults(busy_next=1) # one NRC 0x21 busyRepeatRequestCI は、lint、Python 3.10/3.11/3.12 でのスイート、安全不変条件を独自のジョブとして、さらに MCP サーバーを実際のサブプロセスとして起動する統合ジョブを実行します。
プロジェクト構成
majster_ai/
├── agent/ LangGraph orchestrator, HITL, LLM providers
├── mcp_servers/
│ ├── car_interface/ UDS/CAN — the safety gate lives in service.py
│ ├── rag_workshop/ local manual retrieval
│ └── web_search/ Tavily / DuckDuckGo
├── web/ FastAPI + /ws/diagnostics, WebSocketApprover
├── config.py settings and the two safety gates
└── cli.py
frontend/ React + Three.js Cyber-HUD (see frontend/README.md)
tests/ 736 tests, all hardware-free
docs/ ARCHITECTURE, SAFETY, HARDWARE, FREELANDER2免責事項
このプロジェクトは教育および研究目的のものです。 認定された診断ツールではなく、メーカーの機器や資格のある技術者の代わりになるものではありません。
著者は、本ソフトウェアの使用に起因する車両の損傷、制御モジュールの損傷、修理の失敗、保証の無効化、または負傷について一切の責任を負いません。コマンドが車両のバスに到達する前に、そのコマンドが何を行うかを理解する責任はあなたにあります。確信が持てない場合は、送信しないでください。
Zrzeczenie się odpowiedzialności
Projekt służy wyłącznie do celów edukacyjnych i badawczych. Autor nie ponosi odpowiedzialności za jakiekolwiek uszkodzenia pojazdu, uszkodzenia sterowników (ECU) lub obrażenia ciała wynikające z użytkowania tego oprogramowania.
Zawsze upewnij się, że wiesz, jakie komendy — zwłaszcza polecenia ZAPISU — są wysyłane na magistralę CAN Twojego samochodu.
ライセンス
MIT — LICENSE を参照してください。
整備マニュアルは著作権で保護されており、このプロジェクトには同梱されていません。data/manuals/ は gitignore されています。合法的に入手してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to interact with vehicle CAN bus and OBD-II data through a simulated ECU environment. Provides tools for reading frames, decoding messages via DBC files, monitoring signals, and querying automotive diagnostics without requiring physical hardware.13MIT
- FlicenseBqualityDmaintenanceConnects AI assistants to a local Codex engine for performing deep, project-level code reviews and automated refactoring. It enables context-aware bug fixes and multi-file analysis through a standardized bridge between modern AI clients and local development environments.42
- FlicenseAqualityDmaintenanceEnables LLMs to automatically diagnose coding errors through codebase search, test execution, and live debugger integration (DAP/V8 CDP). Provides a secure, policy-gated environment for investigating failures while preventing destructive operations.9
- FlicenseAqualityBmaintenanceAn MCP server that exposes vehicle-diagnostic and CAN-bus domain logic as agent tools, with a LangGraph orchestration layer and a human-in-the-loop eval harness.4
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Sovereign Agent OS — Persistent Memory, Governance & Compliance for AI Agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mati83mon/Car_Diagnostic_Ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server