UDS Toolbox
Find why a UDS flash failed from a CAN trace; decode UDS, ISO-TP and DTCs. No hardware.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"uds-toolbox": {
"url": "https://mcp.udslib.com/mcp"
}
}
}원격 엔드포인트
https://mcp.udslib.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢analyze_trace(trace, file, format)
Analyze a whole CAN trace of a UDS diagnostic or flash session and say what went wrong. Accepts candump logs, Vector ASC, PEAK TRC (1.x/2.x), SavvyCAN or python-can CSV pasted as text, and those plus Vector BLF, Wireshark pcap/pcapng (SocketCAN) and ASAM MF4 bus logging uploaded as a file. Reassembles ISO-TP, pairs requests with responses (including 0x78 responsePending), measures P2/P2*, follows sessions and security access, reconstructs RequestDownload/TransferData into an image with CRC32, extracts identification DIDs, and returns a root-cause finding with the frames that show it. Shows an interactive timeline.
입력 스키마
{
"type": "object",
"properties": {
"trace": {
"type": "string",
"description": "Trace text (candump, ASC, TRC or CSV). Use this or file."
},
"file": {
"type": "object",
"description": "An uploaded trace file: text formats above, or binary BLF, pcap, pcapng, MF4.",
"properties": {
"download_url": {
"type": "string"
},
"file_id": {
"type": "string"
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
}
},
"required": [
"download_url",
"file_id"
]
},
"format": {
"type": "string",
"enum": [
"auto",
"candump",
"asc",
"trc",
"csv"
],
"description": "Default auto-detect."
}
}
}🟢decode_uds(hex, direction)
Decode a UDS (ISO 14229-1) PDU from hex: request, positive or negative response. Names the service, sub-function (and suppressPosRsp bit), DID/RID/address fields, and for negative responses the NRC with meaning and typical cause. Unknown SIDs and NRCs are labelled, not rejected.
입력 스키마
{
"type": "object",
"properties": {
"hex": {
"type": "string",
"description": "PDU bytes, e.g. \"7F 34 78\" or \"0x22 0xF1 0x90\" (no ISO-TP header)."
},
"direction": {
"type": "string",
"enum": [
"request",
"response"
],
"description": "Optional hint to disambiguate."
}
},
"required": [
"hex"
]
}🟢build_uds_request(service, type, dids, did, data, ...)
Build a UDS request as hex with an annotated breakdown. Services: session, ecu_reset, read_did, write_did, security_seed, security_key, tester_present, routine, request_download, transfer_data, transfer_exit, clear_dtc, read_dtc, control_dtc, comm_control, raw. Numeric strings are hex.
입력 스키마
{
"type": "object",
"properties": {
"service": {
"type": "string",
"enum": [
"session",
"ecu_reset",
"read_did",
"write_did",
"security_seed",
"security_key",
"tester_present",
"routine",
"request_download",
"transfer_data",
"transfer_exit",
"clear_dtc",
"read_dtc",
"control_dtc",
"comm_control",
"raw"
]
},
"type": {
"description": "session/ecu_reset sub-function (number, hex string or name)."
},
"dids": {
"type": "array",
"items": {
"type": "string"
},
"description": "read_did: e.g. [\"F190\",\"F18C\"]."
},
"did": {
"type": "string"
},
"data": {
"type": "string",
"description": "Hex payload (write_did, transfer_data, routine option record)."
},
"level": {
"type": "integer",
"description": "security_seed/security_key: odd seed-request level; the key is sent with level+1."
},
"key": {
"type": "string",
"description": "security_key: key bytes in hex."
},
"suppress": {
"type": "boolean",
"description": "tester_present: set suppressPosRspMsgIndicationBit."
},
"action": {
"type": "string",
"enum": [
"start",
"stop",
"results"
]
},
"rid": {
"type": "string",
"description": "routine: e.g. \"FF00\"."
},
"address": {
"type": "string",
"description": "request_download: e.g. \"0x08000000\"."
},
"size": {
"type": "string",
"description": "request_download: e.g. \"0x10000\"."
},
"addressBytes": {
"type": "integer",
"description": "Default 4."
},
"sizeBytes": {
"type": "integer",
"description": "Default 4."
},
"dfi": {
"type": "integer",
"description": "dataFormatIdentifier, default 0."
},
"counter": {
"type": "integer",
"description": "transfer_data block sequence counter."
},
"group": {
"type": "string",
"description": "clear_dtc group, default FFFFFF."
},
"subfunction": {
"description": "read_dtc sub-function (e.g. 2 = reportDTCByStatusMask)."
},
"mask": {
"description": "read_dtc status mask, default FF."
},
"on": {
"type": "boolean",
"description": "control_dtc: true = DTC setting on."
},
"control": {
"description": "comm_control control type."
},
"commType": {
"description": "comm_control communicationType, default 01."
},
"hex": {
"type": "string",
"description": "raw: bytes to pass through."
}
},
"required": [
"service"
]
}🟢decode_isotp(frames, padding, decodeUds)
Reassemble ISO-TP (ISO 15765-2) messages from CAN frames, per CAN id, and decode each as UDS. Reports frame types (SF/FF/CF/FC), flow-control BS/STmin, sequence-number errors, interrupted messages, padding, and N_Bs/N_Cr/STmin timing warnings when timestamps (ms) are given. Accepts a frame list or a candump text dump.
입력 스키마
{
"type": "object",
"properties": {
"frames": {
"description": "Array of {id, data, t?} (id hex string or number, data hex string or byte array, t in ms), or a candump-style multiline string.",
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"integer"
]
},
"data": {
"type": [
"string",
"array"
]
},
"t": {
"type": "number"
}
},
"required": [
"data"
]
}
},
{
"type": "string"
}
]
},
"padding": {
"type": "boolean",
"description": "true: warn on unpadded short frames; false: warn when padding bytes appear."
},
"decodeUds": {
"type": "boolean",
"description": "Decode each reassembled message as UDS (default true)."
}
},
"required": [
"frames"
]
}🟢decode_dtc(dtc, status)
Convert a 3-byte UDS DTC to the SAE J2012 style code (P/C/B/U + digits) plus failure type byte, or the reverse ("U0073-00" to hex). With a status byte, explains each of the 8 DTC status bits.
입력 스키마
{
"type": "object",
"properties": {
"dtc": {
"type": "string",
"description": "Three bytes hex (\"01 23 45\") or a code (\"P0123-45\")."
},
"status": {
"type": [
"string",
"integer"
],
"description": "Optional status byte, e.g. \"0x09\"."
}
},
"required": [
"dtc"
]
}🟢uds_reference(topic)
Short UDS reference with ISO 14229-1 clause pointers (paraphrased). Topics: a service ID (0x27) or name, an NRC (0x78 or "nrc 78"), a DID (F190) or RID (FF00), timing (p2, p2*, s3), sessions, security (0x27 vs 0x29), reprogramming_sequence. Unknown topics return a topic list.
입력 스키마
{
"type": "object",
"properties": {
"topic": {
"type": "string"
}
},
"required": [
"topic"
]
}🟢udslib_integration(target, rtos, transport, features, role)
Plan how to integrate the UDSLib C stack (ISO 14229 UDS server/client for embedded ECUs): which repo files to take, Kconfig/config hints, an init skeleton, the closest example, and the license terms (free noncommercial / commercial). UDSLib speaks ISO-TP over CAN/CAN-FD; DoIP is not supported.
입력 스키마
{
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "MCU or board, e.g. \"STM32F103\", \"H563\"."
},
"rtos": {
"type": "string",
"enum": [
"baremetal",
"freertos",
"zephyr",
"linux"
]
},
"transport": {
"type": "string",
"enum": [
"can",
"canfd",
"udp-sim"
]
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "dtc, dtc_persist, security, authentication, bootloader, flash_tool, custom_service, periodic, roe"
},
"role": {
"type": "string",
"enum": [
"server",
"client"
]
}
}
}커뮤니티
증거