Skip to main content
Glama

Majster-AI — MCP 経由の自動車 UDS 診断エージェント

Python Protocol AI MCP UI Safety License

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 シャシー、ライブのテレメトリゲージ、そして車両への書き込み操作のためのドラッグ承認ゲートを備えています。

Majster-AI Cyber-HUD

⚠️ デフォルトはシミュレーター、かつ 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 / DuckDuckGo
  • Car_Interface_MCPpython-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 it

Termux や、重い追加パッケージがビルドできない ARM デバイスでは、それらをスキップしてください。このプロジェクトはそれらなしでも動作するように設計されています:

pip install -e ".[car,mcp,agent,web]"

動作確認

majster-ai doctor

cdacar-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 :8000

UI はライブのテレメトリをストリーミング表示し、3D シャシー上でモジュールの健全性を示し、書き込み操作の前にはドラッグ承認ジェスチャーで一時停止します。故障コードをクリックすると、カメラがそのコードが示すコンポーネントに飛びます。たとえば C0034 のようなシャシーコードは、エンジンルームの ABS モジュールではなく、右前輪のセンサーに移動します。

majster-ai web はデフォルトで 127.0.0.1 にバインドされます。ポートに到達できるものはどれでも、エージェントに書き込みの提案を依頼できます。承認ゲートは依然として有効ですが、プロンプトにはそこにいる誰かが答えることになります。--host 0.0.0.0 は、管理下にあるネットワークでのみ使用してください。

別のクライアント用の MCP サーバーとして

majster-ai serve car_interface           # stdio transport

Claude Desktop などの設定は docs/ARCHITECTURE.md にあります。


安全モデル

モデルと車両の間には、4 つの独立した層があります。書き込み操作は、そのすべてを通過する必要があります。

保証

1. マスタースイッチ

MAJSTER_WRITE_ENABLED=false がデフォルト。書き込みは即座に拒否され、トークンも発行されず、プロンプトも表示されません。エージェントはこれを変更できません。

2. トークンハンドシェイク

最初の呼び出しは常に失敗し、影響の要約と、正確な引数のハッシュに紐付けられ 5 分で失効する使い捨てトークンを返します。ECM の承認で ABS モジュールの消去が許可されることはありません。

3. 人間による一時停止

グラフは interrupt() で一時停止します。拒否、空の回答、閉じられた stdin、クラッシュした UI、非対話セッション — すべて いいえ を意味します。

4. システムプロンプト

他の 3 つの層が何を行うかをモデルに伝えます。最も弱い層として扱われます。実際にそうだからです。

ブラウザは単なる承認者の 1 つにすぎません。スライダーは 1 つのブール値を送信するだけで、確認トークンはサーバープロセス内で作成・使用され、WebSocket フレームに現れることはありません。クライアントはサーバーが選択して尋ねた質問に答えることはできますが、質問を発することはできず、書き込みを実行する資格情報を作成することもできません。

Approval gate

層 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 を参照してください。


ハードウェア

バックエンド

インターフェース

プラットフォーム

virtual

なし — 内蔵シミュレーター

どこでも

j2534

Tactrix Openport 2.0

Linux、Windows

socketcan

USB2CAN、CANable、PiCAN

Linux

slcan

CANable/CANtact(slcan ファームウェア)

Linux、macOS、Windows

rfcomm

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/0x7E80x7E1/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 busyRepeatRequest

CI は、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 されています。合法的に入手してください。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    13
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Connects 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.
    4
    2
  • F
    license
    A
    quality
    D
    maintenance
    Enables 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
  • F
    license
    A
    quality
    B
    maintenance
    An 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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