USB LIN Converter — Claude Code MCP server: sniff a LIN bus
Wires an AI agent to the USB LIN dongle so it can capture bus traffic, find the speed and decode signals from an LDF file.
claude mcp add lin-usb-converter -- uvx ucan-lin-mcpWhat USB LIN Converter does
The ucan-lin-mcp server ships inside the ucanlintools package and talks to the USB LIN Converter (uLC) dongle. An agent gets tools such as device_info, monitor_bus, detect_bus, load_ldf, decode_frame and encode_frame. With them it records frames with their per-id periods, tracks which bits flip when you press a button, figures out the bus speed and checksum flavour, then decodes or builds signals against an LDF.
Read-only is the default. Sending frames, running as master or acting as a slave stay locked until you pass --allow-transmit; without it send_frame, run_master and run_slave are not available. That is the right default for a live vehicle bus, where a stray write costs more than an extra flag.
The server runs as a stdio process, needs Python 3.10+ and a dongle on a port like COM3 or /dev/ttyACM0. Pass --mock to work against a simulated bus with no hardware attached. The dongle itself is a separate purchase at around $27 on Tindie; firmware and the Python library are open under GPL-3.0.
What it helps with
- capture LIN traffic and list frame periods per id
- log which bits change while a button is pressed
- detect bus speed and checksum type without manual setup
- turn signals from an LDF file into readable values
- build and send a frame from inside the agent
Example prompts for the agent
- Capture traffic on the LIN bus and show me the period of each id
- Find the bus speed and checksum type
- Load
signals.ldfand decode the frame with id 0x0A
How to install USB LIN Converter
Platform CLI
claude mcp add lin-usb-converter -- uvx ucan-lin-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ucan-lin-mcp <command>
Platform CLI
codex mcp add usb-lin-converter -- uvx ucan-lin-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ucan-lin-mcp <command>
Config file
{
"mcpServers": {
"usb-lin-converter": {
"command": "uvx",
"args": [
"ucan-lin-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from ucan-lin-mcp <command>
Config file
{
"servers": {
"usb-lin-converter": {
"type": "stdio",
"command": "uvx",
"args": [
"ucan-lin-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from ucan-lin-mcp <command>
Platform CLI
gemini mcp add usb-lin-converter uvx ucan-lin-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ucan-lin-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about USB LIN Converter
How do I install USB LIN Converter in Claude Code?
Run claude mcp add lin-usb-converter -- uvx ucan-lin-mcp. The server starts through uvx from PyPI, so there is no separate install step.
What does USB LIN Converter do?
It gives an agent tools to sniff and reverse-engineer a LIN bus: frame capture, speed detection, LDF decoding. By default it only reads the bus.
Do I need the dongle for the server to work?
For a real bus, yes — the server talks to the USB adapter over a virtual COM port. With --mock it runs against a simulated bus instead.