EasyEDA MCP
Provides tools for interacting with EasyEDA / JLCEDA Pro, including project and document inspection, schematic/PCB component and netlist reading, DRC checking, domain API calls, PCB auto-layout and auto-routing, and Gerber/BOM/pick-and-place manufacturing file export.
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., "@EasyEDA MCPRun easyeda_doctor, then inspect my current EasyEDA project read-only."
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.
EasyEDA MCP
当前主交付为 嘉立创 EDA 内部 .eext 扩展,源码和安装包位于 extension/。14 个领域接口通过客户端内置 MCP 与 external.easyedaMcp.* 使用,带 EDA 内部面板,默认只读。
已按用户授权安装 .eext 版本 0.1.0-dev.20261019.3,完成 14 个接口发现及原理图/PCB、引脚、网表只读检查;详见 本机验证。构建:在 extension 中执行 npm ci --ignore-scripts、npm test、npm run build。
已完成独立 LED 测试的原理图设计、PCB 同步、自动布局布线、严格 DRC、保存重开和制造文件导出;详见 全流程实测。输出保留在本地 artifacts/led-e2e-20261019,该目录已忽略,不随源码仓库提交。
以下保留前序 stdio 试作的说明,其工具发现结果不代表内部 .eext 的安装或验收。
EasyEDA MCP
在嘉立创 EDA / EasyEDA 专业版内置 MCP之上提供 11 个领域工具,版本 0.1.0-dev.20261019.1。原生客户端继续负责电路编辑、布局布线与制造文件生成。本包提供工程识别、参数适配、分页、错误判断与实际文件校验。
本地开发候选,未发布/安装到全局。默认只读;已有官方原生服务为 http://127.0.0.1:31637/mcp。不需要 Run API Gateway,也不启动第二个编辑器或桥接服务。
启动与配置
仅依赖 Python 3.10+ 标准库,无需 pip install:
python3 -B scripts/serve.py这是 MCP stdio 服务,会等待宿主输入 JSON-RPC;stdout 不能用于普通日志。可从任何 cwd 用 serve.py 的绝对路径启动。宿主配置样例见 examples/codex-mcp.toml 和 examples/mcp.json,修改为实际绝对路径后再加载。本次没有执行全局安装或改写全局配置。
首次任务:“只读检查当前工程,先执行 easyeda_doctor,再 easyeda_inspect_project”。多会话传入实际 session。工程为空返回 no_project,工具不会打开最近工程。
Related MCP server: a2n-easyeda-mcp
工具
工具 | 能力 |
| 连接、版本、桥接与结果通道 |
| 会话与实际 sessionId |
| 工程、活动文档、板子、原理图页、PCB |
| 当前客户端的 API 签名 |
| 器件 ID/位号/坐标分页 |
| 原理图网表文本分页 |
| 当前图页的严格 DRC 布尔结果 |
| 经实时 mount/方法校验的领域 API 调用,需写入模式 |
| 官方 PCB 自动布局,需写入模式 |
| 官方 PCB 自动布线,保留失败网络,需写入模式 |
| Gerber/BOM/贴片坐标,需输出根目录 |
写入、布线和导出
用户授权修改后,宿主可用 --allow-write 启动。easyeda_call_api 提供 DMT/SCH/PCB/LIB 的通用 JSON 参数入口,不能注入 JavaScript 或调用 SYS 文件/网络接口。先查 API 签名、枚举与单位;修改后的图元和复杂返回需要专门回读,不能把 returned 当成验证成功。通用工具不支持把跨次调用的原语对象当作参数。
每次操作要求明确 document_uuid,先匹配当前文档和类型,再在同次 invoke 内核对焦点。用户在调用执行期间应保持目标图页;这不构成编辑器级事务锁。不会自动保存、删除既有布线或下单付款。自动布局/布线耗时较长,需宿主允许相应超时;超时后先读结果,不自动重放。
文件导出单独配置 --output-root /授权输出目录,不要求开启工程修改模式。工具仅写入此根目录中的新文件,已有文件不覆盖。Gerber 使用当前客户端的一键默认层/对象,BOM 和贴片坐标使用 CSV,贴片坐标为 mm。实际字节数/SHA256 与 Gerber ZIP CRC 会检查;板框、铜层、钻孔、电气与坐标正确性仍须回读和预览。单文件上限 20MiB,失败时报告已生成文件。
验证
python3 -B scripts/validate_package.py
python3 -B -m unittest discover -s tests -v
python3 -B scripts/smoke_readonly.py离线测试覆盖只读模式、文档 UUID/焦点变化、错误 DRC 结果、失败网络保留、输出目录逃逸、禁止覆盖、实际字节与 stdio 协议。smoke_readonly.py 启动真实 MCP 子进程,调用 doctor、会话、工程和 API 帮助,并验证写入模式关闭。它不导出或修改工程。脚本使用 POSIX pipe/select,已在本机 macOS 执行;服务本身没有此平台依赖。
最近实测服务为 JLCEDA Pro 4.1.71.7a7261be,doctor connected=true/versionMatch=true/resultChannel=true;工程仍返回 null,因此工程内容、DRC、自动布局/布线和制造导出未做真实板卡验收。该早期只读回执仅保留在本地,不随源码提交;当前 .eext 的完整验收见前文全流程实测。协议测试通过不代表模型已经在宿主内完成任务。
本地传输实现限定于已实测官方 JSON 响应,不是全功能 MCP SDK;不提供 SSE 消息流、跨请求后台任务或取消/恢复。长调用返回前不能处理其他工具请求。后续需要这些能力时优先使用官方 SDK,不扩展成另一套 Agent Runtime。
协议依据:MCP stdio、MCP tools。来源与设计见 docs/design.md、docs/transport-source.json、NOTICE。
Codex app-server 在临时 -c 配置下已发现全部 11 个工具,toolsError=null;该机器回执仅保留在本地,不随源码提交。这是宿主工具发现验证,未创建新聊天或运行模型任务。
本地 ZIP:python3 -B scripts/build_package.py,产物位于 dist,包含独立运行所需代码与文档。
源码仓库:full-aigc-plugins/easyeda-mcp。Git 仅保留源码、锁文件、自动化测试、CI 与说明文档,不提交 node_modules、构建输出或临时测试工程;当前尚未创建正式 Release。
Available Tools
11 toolseasyeda_auto_layoutADestructive
调用官方 PCB 自动布局。需 --allow-write;保留原始结果,另行回读/DRC;不自动保存。
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation risk is known. The description adds non-obvious behavior beyond that: it requires a write flag, preserves original results, and crucially does not auto-save (so changes are not persisted). Those save/permission semantics are genuinely additive.
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?
Four compact clauses with the primary action front-loaded and no filler. Dense but every clause (permission, preservation, follow-up, save policy) carries information.
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. Combined with annotations covering the safety profile, the description supplies enough operational context (write flag, no auto-save, separate DRC) for an agent to invoke it correctly.
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 100%, so both parameters (document_uuid, session) are already documented in the schema, including the note about not auto-switching pages. The description adds no further parameter meaning, so baseline 3 applies.
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?
The description states a specific action (invoke official PCB auto-layout) on a specific resource, which clearly separates it from the sibling easyeda_auto_route. It doesn't explicitly name that sibling, so differentiation is inferable rather than spelled out.
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?
It gives a precondition ('需 --allow-write') and post-steps (read back/DRC separately), which is useful workflow context. However it never contrasts when to use auto-layout versus the auto_route sibling or when not to use it, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_auto_routeADestructive
调用官方 PCB 自动布线;可指定 RoutingNets,保留 failedNets。需 --allow-write;不自动保存。
| Name | Required | Description | Default |
|---|---|---|---|
| nets | No | 只布线这些网络;省略时按官方默认处理未布线网络 | |
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral facts: the write-permission requirement, that it does not auto-save (state persists only after a separate save), and that failed nets are preserved rather than rolled back. It does not say what exactly is overwritten on existing traces, which keeps it at 4.
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 compact line with the core action front-loaded, then constraints separated by semicolons. Every clause carries information (scope, permission, persistence). Slightly telegraphic for an agent unfamiliar with the CLI flag convention.
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 described, and the schema fully documents parameters including the document_uuid prerequisite. Combined with the destructive annotation and the description's note on permissions, non-persistence, and failed-net retention, an agent has everything needed to invoke it correctly.
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 100%, so the schema already documents all three parameters thoroughly, including the default behavior when nets is omitted. The description references 'RoutingNets' / 'failedNets' rather than the schema's parameter name 'nets', adding a slight naming mismatch instead of extra meaning. Baseline 3 applies.
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?
Names a specific verb and resource: invoking the official PCB auto-router (自动布线), which is clearly distinct from component placement (easyeda_auto_layout). It also states the two behavioral knobs (RoutingNets / failedNets). It stops short of naming sibling alternatives explicitly, so it lands at 4 rather than 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?
It gives a real prerequisite ('需 --allow-write') and a post-condition ('不自动保存'), which help an agent plan the call. However, there is no explicit when-to-use vs. when-not-to-use guidance, such as running easyeda_check_drc before or after, or choosing between this and easyeda_auto_layout. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_call_apiADestructive
高级写入入口:解析实时类 mount/方法,传递 JSON 参数调用 DMT/SCH/PCB/LIB API。必须以 --allow-write 启动且用户已授权。无任意 JavaScript、无系统文件/网络调用。超时后先回读,不重试。
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes | 按当前 API 签名排列的 JSON 参数;复杂原语/File 用专用工具回读 | |
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| class_name | Yes | 目标当前客户端类,例如 SCH_PrimitiveComponent | |
| method_name | Yes | 先 get_api 核实存在、参数和单位 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description earns credit by adding the launch-flag and authorization requirement, sandbox boundaries (no arbitrary JavaScript, no file/network access), and timeout/retry policy. It does not explain which primitives or document state actually get mutated, so it stops short of fully rich disclosure.
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?
Four tight sentences, front-loaded with the purpose before prerequisites and constraints; each sentence carries distinct information. The terse, jargon-heavy phrasing ('解析实时类 mount/方法') costs some readability but not efficiency.
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 complex, open-world destructive tool with a full output schema and 100% parameter coverage, the essentials are present: purpose, auth/launch prerequisites, sandbox limits, and timeout handling. Missing only explicit sibling routing and confirmation of what state is mutated.
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 100% and each parameter (args, session, class_name, method_name, document_uuid) is already documented in the schema. The description only restates 'pass JSON parameters' and adds no unit, ordering, or signature detail beyond what the schema provides, so the baseline of 3 applies.
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 and resource: an advanced write entry point that resolves live class/method mounts and invokes DMT/SCH/PCB/LIB APIs with JSON args. This positions it clearly as the low-level generic caller relative to specialized siblings like easyeda_auto_layout or easyeda_list_components, though it never names them 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?
Provides real prerequisites (must be launched with --allow-write and user authorization) and operational guidance (read back after timeout, do not retry). However it never says when to prefer this over the many specialized siblings, leaving the 'use the escape hatch only when no dedicated tool fits' decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_check_drcBRead-onlyIdempotent
对指定活动原理图/PCB 执行严格 DRC 布尔检查,无弹窗;passed=false 保留失败。
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds two traits beyond that: the check runs without any dialog/interaction ('无弹窗'), and on failure the failures are retained rather than auto-remediated ('passed=false 保留失败'), which tells the agent the result is advisory and non-destructive.
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, front-loaded with the action and target, with the non-interactive and failure-retention clauses appended. No filler, though it is arguably under-specified rather than optimally concise.
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?
The output schema exists, so return-value shape (including passed) need not be explained, and annotations cover the safety profile. What is missing is usage context — when in a workflow to invoke it and what to do with a failed result — leaving the definition adequate but not complete.
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 100%, so both session and document_uuid are already fully documented, including the inspect_project prerequisite and the no-auto-page-switch caveat. The phrase '指定活动' only loosely reinforces that the target must be the active document, adding little beyond the schema baseline.
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 and resource: runs a strict DRC boolean check against the specified active schematic/PCB. This is unambiguous and unique among the sibling tools (auto_layout, auto_route, export_manufacturing), though it never explicitly contrasts itself with them.
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?
There is no guidance on when to run DRC versus other verification or export steps, nor any prerequisite chain stated in the description (the 'get UUID via inspect_project first' instruction lives only in the schema). The agent must infer timing and ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_doctorARead-onlyIdempotent
检查官方原生 MCP 的版本、桥接与结果通道;不启动客户端、不打开工程。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: it explicitly states the tool will not launch the client or open a project, telling the agent the probe is non-intrusive to the running app — information the hints alone do not convey.
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 compact sentence with the purpose front-loaded and the non-intrusiveness constraint appended; nothing is redundant or padded.
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 no-argument diagnostic whose results are fully described by the existing output schema, the description covers what the tool inspects and what it avoids. It stops short of saying how to act on a failure result, but that is a minor gap given the rich structured output.
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 the baseline of 4 applies; there is no parameter semantics for the description to clarify or omit.
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?
Names a specific verb (检查/check) plus concrete resources (官方原生 MCP 的版本、桥接与结果通道), so an agent immediately reads this as a diagnostics/health-check tool. No sibling (list/inspect/read/call/auto/export) overlaps that role, though the description never explicitly contrasts itself with them.
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?
Usage is only implied: the name 'doctor' and the check-list of version/bridge/channel suggest troubleshooting, but there is no statement of when to reach for this versus easyeda_list_sessions or easyeda_get_api. The clause '不启动客户端、不打开工程' does give a useful negative scope (no side effects on the app), which nudges toward 'use this to probe without disturbing anything'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_manufacturingADestructive
导出 Gerber ZIP、BOM CSV、贴片坐标 CSV 到 --output-root 内新文件。不修改/保存工程,不下单;核对字节、SHA256 和 ZIP CRC,制造正确性仍需预览。
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | 文件名前缀,默认 Board | |
| formats | Yes | 请求的制造文件 | |
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| destination | Yes | 相对于 --output-root 的输出子目录 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses real behavioral traits: the project is not modified or saved, no order is placed, and the tool self-verifies bytes, SHA256 and ZIP CRC, while final manufacturing correctness still needs visual preview. That is meaningful extra context. Minor tension: annotations declare destructiveHint=true and readOnlyHint=false while the text emphasizes non-modification, though writing new files does explain the write hint.
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 dense sentence with the purpose front-loaded and the safety constraints appended, followed by the verification caveat. No filler, though the semicolon-heavy packing makes it slightly harder to scan.
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?
With an output schema present, return-value details are already covered, and the description supplies the essential framing: what it produces, where, and that it is non-destructive to the project. It omits overwrite behavior for existing files and failure modes, which would round it out.
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 100% and each parameter carries its own explanation (prefix default Board, document_uuid from inspect_project, session ID from session.list, destination relative to --output-root). The description adds nothing beyond echoing --output-root, so the baseline 3 is correct.
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?
The description names a specific verb (导出/export) and the exact artifacts produced (Gerber ZIP、BOM CSV、贴片坐标 CSV), plus the destination scope (--output-root 内新文件). This clearly distinguishes it from sibling inspect/drc/netlist tools that read rather than emit manufacturing files.
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?
It rules out two things explicitly (不修改/保存工程、不下单) and hints that preview is still required for correctness, which is useful context. However, it never says when to prefer this over, say, easyeda_check_drc or easyeda_inspect_project first, nor does it state the precondition that document_uuid must come from inspect_project (that detail lives only in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_apiARead-onlyIdempotent
查询目标客户端实时 API 文档;不会执行返回文档中的示例代码。
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | 例如 PCB_Document | |
| method_name | No | 例如 autoRouting |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds a non-obvious behavioral guarantee beyond the annotations: sample code in the returned documentation will not be executed, so the lookup has no side effects. It does not mention auth/session requirements.
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 short sentence with the core purpose front-loaded and the safety caveat trailing. No filler, no restating of the tool name.
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 carry the safety profile. What remains slightly under-specified is what 'target client' refers to relative to the session-related siblings, but for a two-parameter read-only lookup the definition is essentially complete.
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 100% with examples for both class_name and method_name, so the schema does the heavy lifting. The description adds nothing about parameter format or the class/method relationship, which is the correct baseline 3 when coverage is 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+resource: query the target client's live API documentation. This clearly contrasts with the write-oriented sibling easyeda_call_api, though the sibling is not named explicitly, so differentiation is left partly to inference.
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?
Usage is implied rather than stated: use this to look up API documentation instead of executing calls. The note that returned sample code is not executed hints at the boundary with easyeda_call_api, but there is no explicit when-to-use/when-not statement or naming of that alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_inspect_projectARead-onlyIdempotent
只读当前工程、活动文档、板子、原理图页和 PCB;空工程明确返回 no_project。
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds a genuinely useful edge-case disclosure not present in structured fields: an empty project explicitly returns no_project, telling the agent how to interpret a null-ish response.
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 compact sentence that front-loads the resource list and appends the empty-project behavior. Nothing is wasted, though the punctuation-separated list is slightly dense.
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?
With an output schema present, return-value detail needn't be explained, and the safety profile is carried by annotations. The description covers scope and the empty-project case, leaving only usage routing 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 100%, so the single session parameter is already fully documented in the schema. The description adds no additional parameter semantics, which is the expected baseline when the schema does the work.
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?
The description states a specific verb (只读/read-only inspect) and enumerates the resources covered: current project, active document, board, schematic page, and PCB. It is clearly distinguishable from data-fetching siblings like easyeda_list_components or easyeda_read_netlist, though it doesn't name an alternative directly.
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?
Usage is implied (use this to orient yourself in the current project context) but never stated explicitly, and no when-not-to-use or alternative is given. The mention of multi-session requirements lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_list_componentsARead-onlyIdempotent
分页读取活动原理图/PCB 的器件 ID、位号和坐标;原理图也可能包含旗标/端口。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | 文档类型 | |
| limit | No | 每页条数 | |
| offset | No | 分页起点 | |
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: results are paginated, the read is confined to the currently active document (no auto page switching), and schematic output may contain flags/ports in addition to components.
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?
One compact sentence with the action front-loaded, followed by the resource and then the content caveat. No filler or redundancy.
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?
With an output schema and rich annotations present, the description needs only to frame scope and behavior, which it does: paged reads of the active document's components with schematic extras noted. Only a brief nod to the sibling tools' division of labour is missing.
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 100%, so kind, limit, offset, session and document_uuid are all documented in the schema itself. The description only restates the pagination notion and the document type split; it adds no format or syntax detail beyond the schema, so the baseline 3 applies.
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?
The description gives a specific verb+resource: paged reading of component IDs, designators and coordinates from the active schematic/PCB. It scopes the resource clearly (schematic/PCB) and even notes the schematic-specific extras (flags/ports). It does not explicitly contrast with the nearest sibling (easyeda_read_netlist), so it falls short of 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?
Usage is implied by 'active schematic/PCB' and the schema's instruction to call inspect_project first, but the description never states when to choose this tool over read_netlist, inspect_project, or check_drc. No explicit when/when-not guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_list_sessionsARead-onlyIdempotent
列出官方原生 MCP 的编辑器会话;返回实际 sessionId。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered by structured data. The description contributes only the note that it returns the 实际 (actual/real) sessionId, hinting that stale or placeholder IDs may exist — a useful but thin addition, with no mention of empty-list behavior or session lifetime.
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 compact sentence that front-loads the action (列出) and then the key output detail. No filler, no redundancy with the schema.
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-value explanation is unnecessary, and with zero parameters the surface area is minimal. The description covers what is listed and what the payload contains; only the relationship to sibling session-consuming tools is left implicit.
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; the baseline for a no-parameter tool is 4. No parameter semantics are needed or missing.
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 and resource (列出…编辑器会话) and clarifies the source scope (官方原生 MCP). It also names the concrete payload (实际 sessionId), which distinguishes it from the other easyeda_list_* sibling. It stops short of explicitly contrasting with easyeda_list_components, but the resource noun makes the split obvious.
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?
There is no explicit when-to-use, when-not-to-use, or named alternative. Usage is only implied: an agent infers it should call this to discover a real sessionId before invoking session-scoped tools. Adequate but with a clear gap in routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_read_netlistBRead-onlyIdempotent
只读原理图网表文件文本并分页返回;使用现行 ManufactureData API,不在磁盘写文件。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 文本字符上限 | |
| offset | No | 分页起点 | |
| session | No | session.list 返回的实际会话 ID;多会话时必须指定 | |
| document_uuid | Yes | 先 inspect_project 获取当前文档 UUID;工具不会自动切换图页 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description does add real context beyond them: it explicitly states no files are written to disk and that the current ManufactureData API is used (a versioning caveat), plus pagination behavior.
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 compact sentence that front-loads the read-only nature and the pagination behavior, with no filler. It could still be slightly more explicit about scope, but 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?
An output schema exists, so return-value explanation is unnecessary. The description covers the read-only guarantee, the no-disk-write behavior, the API in use, and pagination, leaving little ambiguity for a four-parameter read tool.
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 100%, so all four parameters (limit, offset, session, document_uuid) are already documented in the schema, including that document_uuid comes from inspect_project. The description adds only the generic notion of pagination, so the baseline 3 is correct.
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?
Names a specific verb and resource (read the schematic netlist text, returned paginated) and pins the underlying API (ManufactureData). It is clearly distinguishable from siblings like easyeda_list_components or easyeda_export_manufacturing, though it does not explicitly contrast itself with any of them.
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?
There is no statement of when to use this tool versus alternatives such as easyeda_export_manufacturing or easyeda_list_components, and no prerequisites or exclusions are given. Usage is only inferable from the tool name and the mention of the ManufactureData API.
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.
11 tool updates
v0.1.0- First observed
easyeda_auto_layout - First observed
easyeda_auto_route - First observed
easyeda_call_api - First observed
easyeda_check_drc - First observed
easyeda_doctor - First observed
easyeda_export_manufacturing - First observed
easyeda_get_api - First observed
easyeda_inspect_project - First observed
easyeda_list_components - First observed
easyeda_list_sessions - First observed
easyeda_read_netlist
TDQS
Scored across 11 tools
Most tools target clearly distinct operations: list_components (read parts), read_netlist (file text), check_drc (validation), auto_layout/auto_route (PCB automation), export_manufacturing (output), and diagnostic tools (doctor, list_sessions, inspect_project). The main soft spot is easyeda_call_api, a generic write escape hatch that conceptually overlaps with auto_layout/auto_route/export since those could technically be invoked through it, though its description frames it as a distinct advanced path.
Every tool uses the same easyeda_ prefix followed by a consistent snake_case verb_noun pattern (list_components, inspect_project, check_drc, auto_route, export_manufacturing). No mixing of camelCase or alternative verb styles.
11 tools is well-scoped for an EDA bridge: read/introspect, validate, automate, export, plus a low-level API escape hatch. Each tool covers a concrete, non-redundant capability.
The surface covers the full lifecycle reasonably: project/session introspection, component and netlist reads, DRC validation, PCB auto-layout/auto-route, manufacturing export, and an arbitrary-write path via call_api. Explicit higher-level schematic edit or project save tools are absent, but call_api provides an escape hatch, so gaps are minor.
Maintenance
Related MCP Connectors
EasyGerber brings AI printed circuit board (PCB) design, layout, and routing to MCP-compatible assistants. Describe a circuit or start from firmware pin assignments, search published electronic components, and build schematics using catalog parts with their footprints and available 3D models. Create and revise boards, generate layouts with automatic component placement and routing, inspect previews, and check saved layouts for blocking design issues. Export manufacturing ZIPs containing Gerber and drill files, a bill of materials, and component placement data, or download an editable EasyGerber (.egb) file. Start without signing up. Your agent creates a private guest session for one board, including catalog access, edits, layout, checks, previews, and exports. Sign in through OAuth to work with saved account boards, access permitted organization boards, or save the guest design to your account. Guest support depends on your MCP client and installed integration.
Search and review real KiCad and Altium PCB designs: schematics, BOMs, netlists, DRC/ERC.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
Search real parts with datasheet-provenance specs, check compatibility and compose priced BOMs.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with 嘉立创 EDA for PCB design tasks including project management, component libraries, rule checking, and manufacturing constraints.17 npm-
- AlicenseBqualityCmaintenanceEnables MCP clients to control EasyEDA Pro for schematic and PCB design through natural language, bridging the EasyEDA API without external AI or API keys.49MIT
- FlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with JLCEDA EDA for schematic/PCB design operations like component placement, wiring, and circuit analysis through natural language.-
- AlicenseBqualityBmaintenanceEnables AI assistants to interact with KiCAD for PCB design automation, including schematic editing, component placement, routing, DRC/ERC, and export.10012 npm1MIT