CANExplorer MCP
The can-mcp MCP server opens a CAN bus to an agent: traffic, decoding, reverse engineering and OBD-II codes by tier.
- 150 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- On the `control` and `send` tiers an agent can reset ECUs, clear trouble codes and transmit arbitrary frames onto a live bus.
- Wrong frames on the bus of a real vehicle or machine can cause equipment faults; test only your own devices.
Install
- Works in
Manual install
git clone https://github.com/AKJ7/CANExplorer.git && cd CANExplorer && uv syncInstall from source; installers and a Linux snap also exist. Requires uv and Python 3.10 or newer.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- On the `control` and `send` tiers an agent can reset ECUs, clear trouble codes and transmit arbitrary frames onto a live bus.
- Wrong frames on the bus of a real vehicle or machine can cause equipment faults; test only your own devices.
This is third-party code. Review the repository files before installing.
What it does
CANExplorer is an application for monitoring, analysing, diagnosing and simulating CAN, CAN FD and LIN buses. The `can-mcp` command opens a bus to an AI agent over MCP: the agent inspects identifiers, decodes frames and protocols, runs reverse-engineering analysis, correlates fields, promotes findings to a DBC and reads trouble codes over OBD-II and UDS. Tools, resources and prompts sit behind permission tiers. The server comes in two forms: a standalone `can-mcp` process over stdio and an in-app server that shows the agent the same live bus you have open.
Who it is for. Automotive engineers and CAN bus researchers who want an agent to analyse traffic without letting it transmit frames.
Good fit when
- A bus dump holds hundreds of identifiers and the agent must find counters, checksums and signal fields.
- Found fields must be turned into a DBC file and checked against live traffic.
- An OBD-II vehicle needs its trouble codes read without manual work in the app.
- An agent attaches to a bus already open in the app and sees the same trace you do.
Not a fit when
- The bus is not yours and you have no permission to test it; ECU resets and frames can disable equipment.
- The agent will run on a bus where any write is unacceptable; stay in read-only mode and check the launch flags.
- You need log recording, replay or a signal database editor; that work belongs to the application itself.
Example request
Connect to the virtual bus, load `vehicle.dbc` and show which identifiers change bytes most often and where counter-like fields appear.MCP
- Transport
- stdio, http
- Authentication
- not required
Limitations
You need an adapter supported by python-can or a virtual bus with no hardware. Most USB and serial adapters can be opened by one process only, so a separate `can-mcp` cannot open a channel the app already holds; the in-app server covers that case. Read-only is the default, while `--allow-diagnostics`, `--allow-control` and `--allow-send` enable diagnostics, ECU resets with code clearing and arbitrary frames. The in-app server listens on `127.0.0.1` and requires a token; port and token change on every start. Install from the installers or from source with `uv sync`.
How to disable. Remove the `canexplorer` entry from the MCP client config. The in-app server stops with the Agent button on the Trace toolbar, and the application is uninstalled the usual way.
FAQ
How do I connect `can-mcp` to an MCP client?
Add `{"mcpServers":{"canexplorer":{"command":"can-mcp"}}}` to the config. The agent picks a bus itself with the `connect` and `disconnect` tools. To open one immediately pass `-i socketcan -c can0`, optionally with `-d vehicle.dbc`.
What can the agent do by default?
Read the bus only. `--allow-diagnostics` enables OBD-II and UDS diagnostics, `--allow-control` resets and code clearing, `--allow-send` frame transmission.
How do I attach an agent to the bus open in the app?
Press Agent… on the Trace toolbar, choose an access tier and Start. The app shows an address on `127.0.0.1` and a token for the `Authorization: Bearer` header over streamable HTTP.
Can I try it without hardware?
Yes. Connect to the `VirtualBus` virtual bus and load the `examples/simulation/vehicle.dbc` sample.
Which signal database formats does the application support?
DBC, DBF, ARXML, KCD, SYM and LDF. A database can be loaded into an agent session with the `load_database` tool.
Discussion
No questions or reviews yet.
Related
MCP serversThree Claude Code skills that decode CAN bus signals into DBC files from CANsub recordings, with verification and merging
Command-line inspector for HTTP MCP servers: lists tools, schemas, prompts and resources and calls any tool by hand.
An MCP server that lets an agent read files, search code and run commands in a workspace
The openmcp CLI and a VS Code extension for debugging MCP servers: tools, prompts and resources, chat with a model, test cases
MCP Server for WinDbg
MCP Server for WinDbg Crash Analysis
An MCP server that hands the agent the Windows debuggers: crash dump analysis, remote and kernel debugging in natural language
OpenROAD MCP: chip physical design from an agent
OpenROAD MCP Server
MCP server from the OpenROAD project: an agent opens OpenROAD sessions, runs commands, checks history, metrics and ORFS reports
README in short
The documentation lists the application features: monitoring, recording and replay, signal databases, UDS, OBD-II, DoIP, J1939 and CANopen diagnostics, ECU simulation and test automation. A separate documentation page covers the MCP server modes and permission tiers.