ecuworkbench
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ecuworkbenchinspect baseline.msq, compare it to proposed.msq, then summarize run.csv"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ECUWorkbench
Public repository · Verified CI
Local ECU artifact tools and an engineering skill for Claude Code and Codex. This v0.1 starter inspects exported files; it does not connect to an ECU, flash firmware, burn tunes or generate engine calibration targets.
Implemented
MCP tool | Result |
| Executable format support, limits and unsupported operations |
| TunerStudio-style MSQ page/constant values, original units, firmware metadata and SHA256 |
| Raw changes between matching nonempty firmware signatures and compatible declared units |
| Exported comma-CSV statistics, missing/text/nonfinite counts and unit provenance |
MSQ parsing is generic format support verified with synthetic fixtures, not a
certification for every firmware/board. firmwareInfo display text is preserved
separately from actual firmware signature. Missing identity remains unknown.
Related MCP server: DataPilot MCP Server
Direction
MSExtra source visibility is not a blanket open-source license. MaxxECU provides downloads, documented exports and CAN definitions; its firmware open-source license was not established. rusEFI already has substantial ECU/CAN MCP tools. We do not claim the first or only AI ECU tool.
Our scope: a cross-vendor artifact workbench, file provenance, version checks, explicit units, and later reviewable change proposals. Vendor-native transports can be integrated rather than cloned.
Read primary-source research, Claude-authored roadmap and acceptance evidence. Native MaxxECU XML/TSV, INI/DBC semantics, simulator and hardware adapters are planned. Engine calibration correctness is unmeasured.
Install and test
Python 3.12+, a separate environment, no model or API key required.
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytest -q
New-Item -ItemType Directory -Path workspace -ForceOn Linux/macOS use python3 and .venv/bin/python. requirements.lock.txt
records the tested Windows environment; pyproject.toml defines portable
dependency ranges. All four tools use official MCP SDK stdio transport.
Claude Code / Codex
.\.venv\Scripts\python.exe scripts\install_skill.py --host claude
.\.venv\Scripts\python.exe scripts\install_skill.py --host codexRegister the MCP using your actual paths. Example local Windows installation:
claude mcp add --transport stdio --scope local ecuworkbench --env ECU_WORKBENCH_ROOT=C:/MyCodes/ECUWorkbench/workspace -- C:/MyCodes/ECUWorkbench/.venv/Scripts/python.exe -m ecuworkbench.server
codex mcp add ecuworkbench --env ECU_WORKBENCH_ROOT=C:/MyCodes/ECUWorkbench/workspace -- C:/MyCodes/ECUWorkbench/.venv/Scripts/python.exe -m ecuworkbench.serverStart a new coding session to discover the installed capabilities. Try: “Use ecu-workbench to inspect baseline.msq and proposed.msq, explain firmware/unit compatibility, then summarize run.csv without changing files.”
Put artifacts inside the configured directory. Tool paths are relative to
ECU_WORKBENCH_ROOT. Reads reject traversal, resolved symlink escapes, invalid
XML, DTD/entities, incompatible comparisons and oversized artifacts.
Portable Agent Plugins manifests and Claude/Codex compatibility manifests are
included. Plugin loading requires the installed Python package; generic
python must resolve to that environment. Local CLI registration was tested;
public plugin directory/account submission was not performed.
License and storage
Authored code/skill: MIT. Third-party boundaries keep vendor
firmware, manuals, definitions and private tunes out of this package.
workspace/, .work/, environments and native captures are Git-ignored.
The shared company template created this project. Owner T-0063 explicitly authorizes this new public repository; all other local-only projects stay local. Read AGENTS.md, constitution.md and HANDOVER.md before working.
Company documentation standard
Read PROJECT_STANDARDS.md for shared file formats and new-project templates. Existing project requirements, storage contracts and model policies remain authoritative; this reference does not migrate domain data or change those requirements. Read AGENTS.md, constitution.md and HANDOVER.md before working. Record handovers with evidence and UTC timestamps. Do not publish or create a remote for a local-only project.
Available Tools
4 toolscapabilitiesARead-onlyIdempotent
List supported formats, file limits and unavailable ECU operations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only what the response covers, and even that is largely redundant with the existing output schema. With the annotation bar met, a middle score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb front-loaded and the three return categories enumerated. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only discovery tool with an output schema and full annotation coverage, the description is sufficient to call it correctly. The only missing piece is guidance on when the agent should reach for it, which is a usage rather than completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. Schema coverage is 100% and requires no compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List") and enumerates the three things returned: supported formats, file limits, and unavailable ECU operations. This is clearly a capability-discovery tool, distinct in subject matter from the tune/log tools in the sibling set. It stops short of explicitly contrasting itself with those siblings, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The phrase "unavailable ECU operations" faintly implies a pre-flight check role, but the description never says to call this before attempting an operation or in what situation an agent should prefer it over inspecting a tune. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_tunesBRead-onlyIdempotent
Compare raw MSQ constants with matching firmware signatures and shared units; never write a tune.
| Name | Required | Description | Default |
|---|---|---|---|
| left | Yes | ||
| right | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so "never write a tune" largely restates structured data. The clause about matching firmware signatures and shared units does add useful scope context, but nothing is said about what happens on mismatched signatures or how errors surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the core action and ends with the key safety constraint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. However, for a tool whose only inputs are two undocumented required strings, the description leaves the most call-critical detail — what left and right actually are — entirely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the two required parameters are bare strings named "left" and "right" with no titles or descriptions. The description never explains what a left/right argument should contain (a tune ID? an MSQ file path?), so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Compare") and a specific resource ("raw MSQ constants with matching firmware signatures and shared units"), which is enough to distinguish it from siblings like inspect_tune and summarize_log. The jargon is dense but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but never states when to choose it over inspect_tune, capabilities, or summarize_log. There is no exclusion or prerequisite guidance; the agent must infer that comparison implies this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_tuneARead-onlyIdempotent
Read MSQ metadata and raw constants inside ECU_WORKBENCH_ROOT; do not validate calibration.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, non-open-world behavior, so the safety profile is covered. The description adds scope (ECU_WORKBENCH_ROOT) and a negative constraint (no validation), which is useful context beyond annotations, but doesn't discuss return format or errors. With annotations carrying the load, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single tight sentence with no filler; the scope and exclusion are front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and annotations cover the safety profile. Description supplies scope and the no-validation constraint. Minor gap: no guidance on the 'path' parameter semantics relative to ECU_WORKBENCH_ROOT.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'path' parameter has no description in either schema or description text. The description mentions ECU_WORKBENCH_ROOT which hints at a path domain but doesn't explain the parameter's format or relationship. Baseline 3 given only one parameter with no details added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('MSQ metadata and raw constants') with a scope qualifier (inside ECU_WORKBENCH_ROOT) and an exclusion ('do not validate calibration'). This differentiates it from compare_tunes and summarize_log, though it doesn't name siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies an inspection use case and explicitly excludes validation, but does not state when to choose this over the sibling tools like compare_tunes or capabilities. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_logCRead-onlyIdempotent
Summarize exported plain CSV channels with optional explicit caller-supplied units.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| units | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that: it does not say where the file is read from, what happens with malformed CSV, how units are applied, or any limits. It essentially restates the operation type the annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the optional nature of units is stated up front. It is slightly awkward and jargon-heavy ('plain CSV channels') rather than maximally clear, which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with the required 'path' parameter undocumented and 'channels' undefined, the definition leaves real gaps for a two-parameter tool. It also omits any indication of what a 'summary' contains or how the result relates to the siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden, but it only partially addresses 'units' ('explicit caller-supplied units') and says nothing about the required 'path' argument (file location, format, expected extension). The units hint that units override inference from the CSV is useful but far from complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) and resource (exported plain CSV channels), so an agent knows it produces a summary of a CSV log. It is clear on its own but does nothing to distinguish it from siblings like capabilities, inspect_tune, or compare_tunes, and terms such as 'channels' are domain jargon left unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no mention of the sibling tools it could be confused with. An agent must guess whether this applies to any CSV or only 'exported' one, and what the relationship to inspect_tune/compare_tunes is.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
capabilities - First observed
compare_tunes - First observed
inspect_tune - First observed
summarize_log
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: capabilities reports limits, inspect_tune reads metadata/constants, compare_tunes compares two tunes, and summarize_log summarizes CSV logs. There is no meaningful overlap among the actions or resource targets.
All names use snake_case, and three follow a verb_noun pattern. The only deviation is 'capabilities', which is a noun rather than a verb, but it remains readable and predictable as a discovery tool.
Four tools is well scoped for a read-only ECU analysis workbench. Each tool covers a distinct operation, and there are no redundant or filler tools.
The set covers inspection, comparison, log summarization, and capability discovery for a deliberately read-only workflow. A tune/file listing tool might help agents discover available MSQ files, but the explicit no-write/no-validation scope keeps the surface mostly complete.
Maintenance
Related MCP Connectors
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Validate JSON, YAML, XML and CSV with exact line/column errors and silent-corruption warnings.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConverts ECU Master EMU Black binary logs to MegaLogViewer HD format. Allows AI assistants to inspect channel summaries and perform analysis.2MIT
- FlicenseNot gradedqualityCmaintenanceProvides tools to inspect dataset schema, profile, preview, and execute read-only SQL queries on uploaded CSV/Excel files.-
- FlicenseNot gradedqualityAmaintenanceProvides tools to analyze local PDFs and CSVs (page count, text search, scoring, column stats) with strict refusal to guess ambiguous data. Requires a paid license.-
- FlicenseNot gradedqualityBmaintenanceEnables users to inspect local Hyper files by listing files, schemas, and tables, previewing up to 100 rows, and generating sample sales Hyper data.-