关于 Easyeda Mcp Pro
Easyeda Mcp Pro 是用于 EasyEDA Pro AI 辅助硬件设计工作流的 MCP 服务。它通过 WebSocket 桥接扩展连接,并按配置档提供原理图与电路板检查、BOM 管理、规则检查和制造文件导出工具。
主要功能
- 01检查和编辑原理图元素
- 02生成、验证并采购 BOM
- 03运行设计规则和电气规则检查
- 04分析 PCB 层与尺寸
- 05导出制造文件
- 06诊断桥接与服务状态
适用场景
- 01借助 AI 助手审阅原理图
- 02采购并验证物料清单
- 03制造前检查 PCB
- 04导出 Gerber 和贴装文件
MCP 相关
该 MCP 服务提供最多 120 个按配置档启用的工具,用于处理 EasyEDA Pro 设计数据和工作流。它通过 WebSocket 桥接扩展连接应用程序。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y easyeda-mcp-proNODE_ENVEnvironment modeLOG_LEVELPino log levelTOOL_PROFILEActive tool profile (core, pro, full, dev, experimental)TOOL_SCOPESOptional comma- or space-separated capability scope allowlist; empty enables all scopes allowed by the active tool profile.MCP_PROTOCOL_VERSIONMCP protocol version stringMCP_BRIDGE_BACKENDBridge backend: local_bridge or experimental remote_relayMCP_REMOTE_SESSION_IDOptional fixed Remote Relay session id for the remote_relay backendTRANSPORTServer transport mode (stdio or http)HTTP_HOSTHTTP bind addressHTTP_PORTHTTP portHTTP_AUTH_DISABLED密钥Disable HTTP transport authenticationHTTP_RATE_LIMIT_MAXMax requests per minute per IPCORS_ORIGINAllowed CORS origin for HTTP transportALLOWED_ORIGINSComma-separated list of allowed origins for HTTP transport (use * for wildcard)MCP_TASKS_ENABLEDReserved; currently non-functional: parsed for compatibility, but the server does not advertise or execute MCP Tasks.MCP_APPS_ENABLEDExperimental; enables sandboxed read-only MCP Apps project review UI; off by default.MCP_SKILLS_ENABLEDExperimental; serves packaged read-oriented Skills over MCP; off by default.MCP_V2_EXPERIMENTALExperimental; enables opt-in dual-era HTTP and stdio support for MCP 2026-07-28 while legacy behavior remains the default.MCP_RAW_EXEC_EXPERIMENTALExperimental second gate for raw EasyEDA runtime execution; requires BRIDGE_RAW_EXEC_ENABLED.BRIDGE_HOSTBridge WebSocket host for EasyEDA Pro connectionBRIDGE_PORTBridge primary portBRIDGE_PORT_SCANPort scan specification (comma-separated ports or ranges)BRIDGE_TIMEOUT_MSBridge call timeout in msBRIDGE_HEARTBEAT_MSBridge heartbeat interval in msBRIDGE_WAIT_FOR_EDA_MSHow long to wait for EasyEDA Pro to become available on startup (ms)BRIDGE_MAX_PAYLOAD_SIZEMax bridge payload size in bytesBRIDGE_TOKEN密钥Session token for extension authEASYEDA_DEV_BRIDGEEnable EasyEDA dev bridge modeBRIDGE_RAW_EXEC_ENABLEDExperimental first gate for raw EasyEDA runtime execution; requires MCP_RAW_EXEC_EXPERIMENTAL.DATA_DIRBase directory for writable local state; defaults beneath the operating-system user home directory.SQLITE_PATHSQLite database path; derived from DATA_DIR unless explicitly configured.ARTIFACT_DIRArtifact export directory; derived from DATA_DIR unless explicitly configured.CACHE_DIRCache directory; derived from DATA_DIR unless explicitly configured.AI_PROVIDERReserved; currently non-functional: no in-process AI provider client is invoked.AI_MODELReserved; currently non-functional: no model is selected or invoked.AI_API_KEY密钥Reserved; currently non-functional: do not supply credentials because no provider client consumes them.AI_MAX_TOKENS密钥Reserved; currently non-functional: retained only for future provider compatibility.AI_TIMEOUT_MSReserved; currently non-functional: retained only for future provider compatibility.AI_ALLOW_DESIGN_MUTATIONSReserved; currently non-functional: cannot enable AI-originated design mutation.JLCPCB_MODEJLCPCB API mode (disabled, mock, approved_api)JLCPCB_CLIENT_IDJLCPCB API client identifier.JLCPCB_CLIENT_SECRET密钥JLCPCB API client secretJLCPCB_API_BASE_URLJLCPCB API base URLJLCPCB_ENABLE_ORDERINGEnable JLCPCB orderingJLCSEARCH_ENABLEDEnable LCSC component searchJLCSEARCH_BASE_URLLCSC search API base URLLCSC_API_KEY密钥LCSC API keyKEYLESS_SOURCING_ENABLED密钥Allow supported public keyless component-sourcing fallbacks when vendor credentials are unavailable.SOURCING_CACHE_TTL_SECONDSComponent-sourcing cache lifetime in seconds (0 disables cache reuse).VENDOR_MIN_REQUEST_INTERVAL_MSMinimum delay in milliseconds between outbound requests to the same sourcing vendor.MOUSER_ENABLEDEnable Mouser integrationMOUSER_API_KEY密钥Mouser API keyMOUSER_API_BASE_URLMouser API base URLDIGIKEY_ENABLED密钥Enable DigiKey integrationDIGIKEY_CLIENT_ID密钥DigiKey OAuth2 client identifier.DIGIKEY_CLIENT_SECRET密钥DigiKey OAuth2 client secretDIGIKEY_SANDBOX密钥Use DigiKey sandbox environmentDIGIKEY_LOCALE密钥DigiKey localeDIGIKEY_CURRENCY密钥DigiKey pricing currencyOAUTH_ENABLED密钥Enable OAuth for HTTP modeOAUTH_ISSUER密钥Expected OAuth token issuerOAUTH_AUDIENCE密钥Expected OAuth token audienceOAUTH_JWKS_URI密钥JWKS endpoint for token signature validationOAUTH_REQUIRED_SCOPES密钥Required OAuth token scopeOTEL_ENABLEDReserved; currently non-functional: no OTLP exporter is started.OTEL_SERVICE_NAMEReserved; currently non-functional: retained for a future OTLP exporter.OTEL_EXPORTER_OTLP_ENDPOINTReserved; currently non-functional: retained for a future OTLP exporter.TRACE_SAMPLE_RATEReserved; currently non-functional: no OTLP traces are emitted.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
easyeda-mcp-pro
面向 EasyEDA Pro 的生产级 MCP 服务:安全地检查 PCB 设计、采购 BOM、导出制造文件,并借助 AI 审查硬件。
路线图 · OpenSSF 证明材料 · 安全保障论证
合规文档: 第三方声明 · 供应商条款与不支持的工作流 · 远程 MCP 模式
信任与供应链
easyeda-mcp-pro 在 docs/OPENSSF_BEST_PRACTICES.md 中保留了历史 OpenSSF 最佳实践证明材料,并在 docs/SECURITY_ASSURANCE_CASE.md 中记录了安全保障论证。页眉徽章仅链接到由当前工作流支持的信号:CI、生成的文档部署、项目安全策略和 OpenSSF 评分卡。发布完整性证明(npm 来源信息、签名发布状态)记录在 docs/RELEASE_VERIFICATION.md 中。覆盖率、测试分析和扩展包监控记录在 docs/CODECOV_ANALYTICS.md 中。
**许可说明:**该仓库目前依据 PolyForm Noncommercial 1.0.0 许可提供源代码,而非采用 OSI 批准的开源许可证。历史 OpenSSF 证明材料仅用于审计历史,不得视为当前采用 FLOSS 许可证的声明。
快速开始
为你常用的 AI 助手或 IDE 安装并配置 easyeda-mcp-pro 的最快方法:
-
自动配置 MCP 客户端:
npx easyeda-mcp-pro setup all此命令会检测并配置 Claude Desktop、Cursor、VS Code、Windsurf、Cline、Gemini、Zed 等客户端,以自动运行 MCP 服务。 (也可以针对特定客户端运行,例如:
npx easyeda-mcp-pro setup claude) -
定位并安装 EasyEDA Pro 桥接扩展:
npx easyeda-mcp-pro extension --open此命令会打开包含扩展包
easyeda-bridge-extension.eext的文件夹。通过 EasyEDA Pro → Settings → Extensions → Extension Manager 导入该扩展。 -
连接桥接: 在 EasyEDA Pro 中,点击菜单栏里的 MCP Bridge → Connect。
如需高级配置、手动说明以及特定客户端的配置,请参阅安装与客户端配置。
概览
easyeda-mcp-pro 是一个 Model Context Protocol (MCP) 服务,可将 AI 助手与 EasyEDA Pro 中的硬件设计工作流连接起来。它最多提供 120 个受配置文件控制的 MCP 工具,用于原理图检查与编辑、受控的 EasyEDA Pro API 调用、个人器件元数据、BOM 管理、设计规则检查、PCB 板分析、制造文件导出、诊断和供应商集成。
该服务通过 WebSocket 桥接扩展连接 EasyEDA Pro,从而实时访问已打开的项目数据。它集成了 JLCPCB、LCSC、Mouser 和 DigiKey,可用于 BOM 采购与定价。
主要功能
| 领域 | 可执行的操作 |
|---|---|
| 原理图 | 列出网络和元件、搜索并放置器件、编辑导线和图元 |
| BOM | 生成、验证、导出物料清单并为其采购 |
| DRC/ERC | 运行设计规则和电气规则检查 |
| 电路板 | 检查图层、叠层、尺寸和特征 |
| 导出 | 导出 Gerber、贴片文件、PDF、网表 |
| 诊断 | 健康检查、桥接状态、API 清单、功能、自动测试 |
前置条件
- Node.js:需要 Node.js 24.x;仓库自动化固定使用 24.22.1。
- pnpm:本地开发和自动化必须使用 11.28.8。
安装依赖前,请准备好受支持的运行环境:
nvm install 24.22.1
nvm use 24.22.1
corepack enable
corepack prepare [email protected] --activate
node scripts/check-runtime.mjs --require-pnpm
- EasyEDA Pro,并已安装和运行随附的桥接扩展
- 如需集成供应商:准备 JLCPCB、LCSC、Mouser 或 DigiKey 的 API 凭据
安装与客户端配置
稳定版 v1 已发布。如果你要从 v1 之前的版本升级,请参阅迁移到 v1。
你可以自动或手动配置 easyeda-mcp-pro。
1. 自动配置(CLI)
CLI 设置会自动编辑客户端的配置文件:
# Configure all detected clients automatically
npx easyeda-mcp-pro setup all
# Or configure a specific client
npx easyeda-mcp-pro setup <client>
支持的客户端键:
claude(Claude Desktop)cursor(Cursor IDE)vscode(VS Code Copilot)windsurf(Windsurf)cline(Cline)gemini(Gemini CLI / Antigravity)zed(Zed Editor)amazonq(Amazon Q Developer)continue(Continue.dev)
选项:
--profile <name>:指定工具配置文件。可选项:core(默认)、pro、full、dev。 示例:npx easyeda-mcp-pro setup cursor --profile full
2. 扩展安装
要将 MCP 服务与 EasyEDA Pro 对接:
# Open the directory containing the .eext extension package in your file manager
npx easyeda-mcp-pro extension --open
# Or copy it to a specific directory
npx easyeda-mcp-pro extension --copy /path/to/destination
在 EasyEDA Pro 中的安装步骤:
- 打开 EasyEDA Pro。
- 前往 Settings → Extensions → Extension Manager。
- 点击 Import Extension,并选择
easyeda-bridge-extension.eext文件。 - 确保已为该扩展启用 Allow External Interaction。
- 每次导入或升级后,都要完全退出并重新打开 EasyEDA Pro。Extension Manager 的成功消息仅确认软件包已安装,不表示内存中已运行的调度器已被替换。
- 点击 MCP Bridge → Connect,然后点击 MCP Bridge → Status,查看正在运行的调度器构建 ID。仅重新连接或禁用再启用扩展都不会激活导入的更新。对于依赖版本的操作,请先将当前活动构建与预期的软件包进行核对,再使用新行为。
3. 手动配置客户端
如果希望手动配置客户端,请将以下配置添加到相应的设置文件中:
🟣 Claude Desktop
配置路径:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "core"
}
}
}
}
🔵 Cursor IDE
配置路径: 项目专属的 .cursor/mcp.json 或全局的 ~/.cursor/mcp.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
🟢 VS Code(GitHub Copilot)
配置路径: %APPDATA%\Code\User\mcp.json(Windows)、~/Library/Application Support/Code/User/mcp.json(macOS)或 ~/.config/Code/User/mcp.json(Linux)
{
"servers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
🏄 Windsurf(Codeium)
配置路径: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
🤖 Cline
配置路径: Cline VS Code 扩展的全局存储目录(cline_mcp_settings.json)
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
},
"disabled": false,
"autoApprove": []
}
}
}
✨ Gemini CLI / Antigravity
配置路径: ~/.gemini/settings.json 或 ~/.gemini/config/mcp_config.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
⚡ Zed Editor
配置路径: ~/.config/zed/settings.json
{
"context_servers": {
"easyeda-mcp-pro": {
"command": {
"path": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"]
},
"settings": {}
}
}
}
🔄 Continue.dev
配置路径: ~/.continue/config.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
👑 Amazon Q Developer
配置路径: ~/.aws/amazonq/mcp.json
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": ["-y", "easyeda-mcp-pro@latest"],
"env": {
"TOOL_PROFILE": "pro"
}
}
}
}
4. 从源代码运行(开发)
如果你正在开发或运行修改过的本地构建:
git clone https://github.com/oaslananka/easyeda-mcp-pro.git
cd easyeda-mcp-pro
cp .env.example .env
pnpm install
# Build the server and the bridge extension package
pnpm build
pnpm build:extension
要将客户端配置为使用本地开发构建:
# Print instructions and local config block pointing to dist/index.js
node dist/index.js --setup-local
本地诊断与健康检查
你可以随时诊断环境和桥接连接情况:
pnpm doctor
此检查包括:
- Node.js 版本兼容性。
- 运行时模式:源代码检出、已安装的软件包或生产运行时。
- CLI 入口 shebang 和
.eext扩展软件包校验和。 - 桥接端口可用性。注意:在 MCP 客户端启动服务并连接到 EasyEDA Pro 扩展之前,桥接状态会显示为离线。
仅检出源代码时才需要 pnpm,且版本必须与仓库锁定的版本一致。已安装的软件包或生产运行时(包括加固版 Docker 镜像)不需要 pnpm。
对于不受支持的必需运行时、无效配置或缺失/损坏的运行时构件,Doctor 会以状态码 1 退出;仅桥接处于离线状态仍仅作信息提示。
配置
将 .env.example 复制为 .env 并进行编辑。所有变量都有安全的默认值,只需配置所需的变量。
布尔型环境变量使用严格的字面值:true / 1 启用设置,false / 0 禁用设置。匹配时不区分大小写,并忽略首尾空白。其他值(包括 yes、no、on、off、enabled、disabled、空字符串和拼写错误)都会导致启动验证失败,并报告有问题的变量。留空未设置的变量即可使用其文档中说明的默认值。
必要配置
| 变量 | 默认值 | 描述 |
|---|---|---|
NODE_ENV | development | 在生产环境中设置为 production |
LOG_LEVEL | info | Pino 日志级别:trace、debug、info、warn、error、fatal、silent |
TOOL_PROFILE | core | 工具集:core、pro、full、dev、experimental |
TOOL_SCOPES | empty | 可选的能力允许列表,例如 schematic:read,bom:read |
MCP_PROTOCOL_VERSION | 2025-11-25 | MCP 协议版本字符串 |
MCP_BRIDGE_BACKEND | local_bridge | 桥接后端:local_bridge 或实验性的 remote_relay |
MCP_REMOTE_SESSION_ID | empty | remote_relay 后端的可选固定 Remote Relay 会话 ID |
TRANSPORT | stdio | 服务传输方式:stdio(默认)或 http |
如需进行 Remote Relay 实验,请设置 MCP_BRIDGE_BACKEND=remote_relay 后运行 npx easyeda-mcp-pro doctor --fix;doctor 输出会验证 HTTP 传输、会话选择、OAuth 和仅限回环地址的开发身份验证设置。
桥接(EasyEDA Pro 连接)
| 变量 | 默认值 | 描述 |
|---|---|---|
BRIDGE_HOST | 127.0.0.1 | 桥接 WebSocket 主机 |
BRIDGE_PORT | 49620 | 主桥接端口 |
BRIDGE_PORT_SCAN | 49620-49629 | 端口扫描规格(逗号分隔/范围) |
BRIDGE_TIMEOUT_MS | 15000 | 桥接调用超时(毫秒) |
BRIDGE_HEARTBEAT_MS | 10000 | 心跳间隔(毫秒) |
BRIDGE_WAIT_FOR_EDA_MS | 30000 | 启动时等待 EasyEDA Pro(毫秒) |
BRIDGE_MAX_PAYLOAD_SIZE | 1048576 | 最大桥接负载(字节,默认 1 MiB) |
BRIDGE_TOKEN | '' | 用于扩展身份验证的会话令牌 |
BRIDGE_RAW_EXEC_ENABLED | false | 启用原始 EasyEDA 运行时 JavaScript 执行的第一个显式开关 |
MCP_RAW_EXEC_EXPERIMENTAL | false | 注册 easyeda_execute 前所需的第二个实验性开关 |
存储
| 变量 | 默认值 | 说明 |
|---|---|---|
DATA_DIR | ~/.easyeda-mcp-pro | 可写本地状态的基础目录 |
SQLITE_PATH | <DATA_DIR>/easyeda-mcp-pro.sqlite | SQLite 数据库路径 |
ARTIFACT_DIR | <DATA_DIR>/artifacts | 工件导出目录 |
CACHE_DIR | <DATA_DIR>/cache | 缓存目录 |
存储路径分两个阶段解析。首先解析 DATA_DIR;然后使用当前操作系统的原生路径分隔符,从中派生各个子路径,除非显式提供了相应变量。因此,只设置 DATA_DIR 即可同时更改默认数据库、工件和缓存路径的位置。显式覆盖的设置分别应用,并保留所提供的绝对或相对路径语义;相对路径仍相对于 MCP 进程的工作目录。更改这些设置不会自动迁移现有数据。
供应商集成
设置凭据即可启用供应商。默认情况下,所有供应商均处于禁用状态。
- JLCPCB:
JLCPCB_MODE=approved_api+ 客户端 ID/密钥 - LCSC:
JLCSEARCH_ENABLED=true(默认启用,基本搜索无需密钥) - Mouser:
MOUSER_ENABLED=true+ API 密钥 - DigiKey:
DIGIKEY_ENABLED=true+ OAuth2 客户端 ID/密钥
共享的寻源行为可独立于任何单个供应商进行控制:
| 变量 | 默认值 | 说明 |
|---|---|---|
KEYLESS_SOURCING_ENABLED | true | 在缺少凭据时允许使用受支持的公开免密回退方案 |
SOURCING_CACHE_TTL_SECONDS | 21600 | 将寻源响应缓存六小时(0 表示禁用缓存复用) |
VENDOR_MIN_REQUEST_INTERVAL_MS | 150 | 向同一寻源供应商发送出站请求的最小间隔 |
保留的 AI 配置
目前尚未实现进程内 AI 提供商客户端。为保持配置兼容性,仍接受 AI_* 变量,但会将其报告为 reserved,这些变量始终无效,不得据此推断服务器会向 AI 提供商发送设计数据。请勿提供 API 密钥。
| 变量 | 默认值 | 当前行为 |
|---|---|---|
AI_PROVIDER | none | 保留;不会调用任何提供商客户端 |
AI_MODEL | '' | 保留;不会选择任何模型 |
AI_API_KEY | '' | 保留;不存在使用凭据的组件 |
AI_MAX_TOKENS | 8000 | 保留的兼容性设置 |
AI_TIMEOUT_MS | 60000 | 保留的兼容性设置 |
AI_ALLOW_DESIGN_MUTATIONS | false | 保留;无法启用由 AI 发起的设计修改 |
使用 easyeda_get_feature_flags 或 easyeda_get_capabilities 检查可选设置的 configured、effective 和 maturity 值。
HTTP 传输
使用 TRANSPORT=http 时:
| 变量 | 默认值 | 说明 |
|---|---|---|
HTTP_HOST | 127.0.0.1 | 绑定地址;非环回地址需要 OAuth |
HTTP_PORT | 3000 | 端口 |
HTTP_AUTH_DISABLED | false | 仅在非生产环境的环回地址中禁用 HTTP 身份验证 |
HTTP_RATE_LIMIT_MAX | 100 | 每个 IP 每分钟的最大请求数 |
CORS_ORIGIN | '' | 允许的来源(旧配置),适用于环回地址上的浏览器客户端 |
ALLOWED_ORIGINS | '' | 明确列出的远程来源允许列表;不接受 * |
远程 HTTP 安全
无论 NODE_ENV 为何,所有非环回 HTTP 部署都需要 OAuth 2.0 / OpenID Connect 身份验证:
| 变量 | 默认值 | 说明 |
|---|---|---|
OAUTH_ENABLED | false | 启用 Bearer 令牌验证 |
OAUTH_ISSUER | '' | 预期的令牌颁发者(iss 声明) |
OAUTH_AUDIENCE | easyeda-mcp-pro | 预期的令牌受众(aud 声明) |
OAUTH_JWKS_URI | '' | 用于验证令牌签名的 JWKS 端点 |
OAUTH_REQUIRED_SCOPES | easyeda:read | 必需的令牌范围 |
当 OAUTH_ENABLED=true 时,除非明确为非生产环境的环回开发设置 HTTP_AUTH_DISABLED=true,否则对 /mcp 的每个请求都必须包含 Authorization: Bearer <token> 标头。系统会根据 OAUTH_JWKS_URI 验证令牌,校验 iss/aud 声明,并根据 scope、scp、permissions 或 roles 声明强制执行 OAUTH_REQUIRED_SCOPES。
服务器会在所有环境中执行启动安全检查:不允许未配置 OAuth 的非环回 HTTP_HOST;必须配置 OAUTH_JWKS_URI / OAUTH_ISSUER / OAUTH_AUDIENCE;不允许通配符 ALLOWED_ORIGINS=*;HTTP_AUTH_DISABLED=true 仅限非生产环境的环回开发。经过身份验证的部署中,即使请求没有 Origin 标头,也仍需提供有效的 bearer 令牌;CORS 不能作为身份验证边界。
Docker 默认值
Docker 镜像以 HTTP 模式启动,并设置 HTTP_HOST=127.0.0.1,确保默认容器启动方式安全,且通过与本地 HTTP 模式相同的启动安全检查。若容器需要从外部访问,请覆盖绑定地址,并配置 OAuth 以及明确列出的非通配符来源允许列表:
docker run --rm \
-e HTTP_HOST=0.0.0.0 \
-e ALLOWED_ORIGINS=https://your-client.example.com \
-e OAUTH_ENABLED=true \
-e OAUTH_ISSUER=https://issuer.example.com/ \
-e OAUTH_JWKS_URI=https://issuer.example.com/.well-known/jwks.json \
-e OAUTH_AUDIENCE=easyeda-mcp-pro \
-p 127.0.0.1:3000:3000 \
ghcr.io/oaslananka/easyeda-mcp-pro:latest
不要在未配置 OAuth 的情况下公开非环回 HTTP。ALLOWED_ORIGINS 可限制浏览器访问,但不能替代身份验证。使用反向代理或平台网关来终止 TLS 并提供外部访问。
HTTP 安全功能
- 速率限制:按 IP 使用滑动窗口(通过
HTTP_RATE_LIMIT_MAX配置);超出限制时返回429 Too Many Requests,并附带 retry-after 标头 - 安全标头:
X-Content-Type-Options: nosniff、X-Frame-Options: DENY、X-XSS-Protection: 0、Referrer-Policy: strict-origin-when-cross-origin - 健康检查端点:
/healthz(存活状态)和/readyz(就绪状态)返回 JSON 状态
完整的配置变量列表请参阅 .env.example。
MCP 工具
服务器会根据当前的 TOOL_PROFILE 注册受配置文件限制的工具。下表由运行时使用的同一注册表生成:
| 配置文件 | 已注册的工具 |
|---|---|
core | 74 |
pro | 101 |
full | 116 |
dev | 121 |
experimental | 121 |
core 提供标准工作流工具,pro 增加制造导出功能,full 增加受控且有文档说明的 EasyEDA API 调用,dev 则增加用于调试的运行时探测工具。
设置 TOOL_SCOPES 后,能力范围会增加第二层授权。留空可使用默认的本地全能力模式,也可以通过逗号或空格分隔的范围进行限制,例如 diagnostics:read、schematic:read、schematic:write、bom:read、bom:source、checks:read、pcb:read、pcb:write、export:write、api:read、api:write 和 bridge:execute。
原始 JavaScript 执行不会作为默认的 dev 工具集的一部分。只有同时设置 BRIDGE_RAW_EXEC_ENABLED=true 和 MCP_RAW_EXEC_EXPERIMENTAL=true 时,才会注册 easyeda_execute;设置了 TOOL_SCOPES 时,还必须包含 bridge:execute。
L0 — 诊断(core)
| 工具 | 描述 |
|---|---|
easyeda_health_check | 服务器健康状况、运行时版本、配置文件、桥接状态 |
easyeda_bridge_status | 桥接连接状态、版本、能力 |
easyeda_get_capabilities | 可用配置文件、功能、支持的操作 |
easyeda_get_server_config | 安全/已脱敏的服务器配置 |
easyeda_get_tool_profiles | 可用工具配置文件 |
easyeda_get_feature_flags | 当前功能标志 |
easyeda_run_self_test | 内部自检 |
easyeda_api_inventory | 实时 EasyEDA API 类、运行时路径和方法 |
L0 — 全控制与 dev 探测
| 工具 | 配置文件 | 描述 |
|---|---|---|
easyeda_api_call | full | 通过桥接调用有文档说明的 EasyEDA Class.method 路径 |
easyeda_bridge_probe_methods | dev | 探测桥接方法是否可用 |
easyeda_component_probe | dev | 检查实时原理图元件运行时对象及其状态获取器 |
easyeda_api_call 不会执行原始 JavaScript。它只接受有文档说明的 EasyEDA Pro API 类前缀(DMT_、SCH_、PCB_、LIB_),以及 SCH_PrimitiveWire.getAll 这样的直接方法名。可能会更改项目状态的方法,例如 create、delete、modify、openProject、save、import 或 export,必须设置 confirmWrite=true。
要在 MCP 客户端中启用受控的全控制 API 工具,请设置:
TOOL_PROFILE=full
L1 — 原理图(核心)
| 工具 | 描述 |
|---|---|
easyeda_schematic_nets | 列出所有网络及节点连接 |
easyeda_schematic_components | 列出元件及其位号、值、封装、LCSC 编号和数据手册 |
easyeda_schematic_net_detail | 查看特定网络的完整详情 |
easyeda_schematic_search_device | 搜索 EasyEDA 库中的器件 |
easyeda_schematic_place_component | 在当前原理图页上放置库元件 |
easyeda_schematic_add_wire | 添加原理图导线段 |
easyeda_schematic_delete_primitive | 按图元 ID 删除原理图元件或导线 |
easyeda_schematic_modify_primitive | 修改原理图元件或导线的属性 |
原理图写入 API 使用 EasyEDA Pro 扩展 API,目前 EasyEDA 将其标记为 Beta 版。桥接程序会在运行时检查文档中所列的 API 类名;如果已安装的 EasyEDA Pro 版本未提供所需方法,则会返回明确的错误。
L1 — BOM(核心)
| 工具 | 描述 |
|---|---|
easyeda_bom_generate | 生成物料清单 |
easyeda_bom_validate | 根据 LCSC 库存验证 BOM |
easyeda_bom_export | 将 BOM 导出到文件 |
easyeda_bom_sourcing | 获取供应商的价格和供货情况 |
L1 — DRC/ERC(核心)
| 工具 | 描述 |
|---|---|
easyeda_drc_run | 对 PCB 执行设计规则检查 |
easyeda_erc_run | 对原理图执行电气规则检查 |
easyeda_rule_check_summary | DRC + ERC 综合摘要 |
L1 — 电路板(核心)
| 工具 | 描述 |
|---|---|
easyeda_board_layers | 列出 PCB 图层及其类型、颜色和可见性 |
easyeda_board_stackup | 查看图层叠层及其厚度、材料 |
easyeda_board_dimensions | 查看电路板外形、形状和安装孔 |
easyeda_board_features | 统计过孔、走线、覆铜区域、焊盘和元件数量 |
L1 — 导出(核心/专业版)
| 工具 | 配置文件 | 描述 |
|---|---|---|
easyeda_export_gerbers | core | 导出用于制造的 Gerber 文件 |
easyeda_export_pick_place | pro | 导出贴片坐标文件 |
easyeda_export_pdf | pro | 将原理图/电路板导出为 PDF |
easyeda_export_netlist | pro | 导出网络表 |
架构
┌─────────────────┐ WebSocket ┌─────────────────────┐
│ AI Assistant │ ◄──── MCP ──────► │ easyeda-mcp-pro │
│ (Claude, etc.) │ Protocol │ (MCP Server) │
└─────────────────┘ │ │
│ ┌───────────────┐ │
┌─────────────────┐ WebSocket │ │ BridgeManager │──┼──► EasyEDA Pro
│ EasyEDA Pro │ ◄── Bridge ──────►│ │ (WS Client) │ │ (Plugin)
│ (via Plugin) │ Protocol │ └───────────────┘ │
└─────────────────┘ │ ┌───────────────┐ │
│ │ ToolRegistry │ │
│ │ (up to 120 tools) │ │
│ └───────────────┘ │
│ ┌───────────────┐ │
│ │ Storage │──┼──► SQLite
│ │ (Cache/DB) │ │
│ └───────────────┘ │
│ ┌───────────────┐ │
│ │ Vendors │──┼──► JLCPCB/LCSC/
│ │ (API Clients) │ │ Mouser/DigiKey
│ └───────────────┘ │
└─────────────────────┘
传输方式
- stdio(默认):标准 MCP 传输方式,可与 Claude Desktop、Cursor 和大多数 MCP 客户端配合使用
- HTTP:支持流式传输的 HTTP 传输方式,提供
/healthz、/readyz、/mcp端点、CORS 和可选 OAuth,适用于远程部署
部署模式
除了本地 stdio/HTTP 外,此服务还支持托管式远程运行时(位于 src/remote/ 下的网关、会话路由器和按审批范围授权的中继),用于 Claude Web 或 ChatGPT 应用集成等托管连接器部署;还支持由用户管理端点的可自托管远程模式。各模式的完整对照以及网络和安全边界,请参阅 远程 MCP 模式。
Bridge 扩展
pnpm build:extension
pnpm verify:extension
扩展构建会在仓库根目录生成 easyeda-bridge-extension.eext。
其中包含 extension.json、打包后的浏览器脚本,以及 EasyEDA Pro 所需的图像资源。
安装:打开 EasyEDA Pro → Settings → Extensions → Extension Manager... → Import Extension,然后选择 .eext 文件。确保已为该扩展启用 Allow External Interaction。
对于本地 Bridge 开发,CDP Bridge 指南介绍了一种实验性的、仅限环回连接的 CDP 传输方式。常规使用仍推荐采用扩展传输。公开交付目标和里程碑生命周期规则见路线图。
Agent 插件和技能
本仓库负责 EasyEDA MCP Pro 的产品级 Agent 插件和 EasyEDA 专用技能。中央 agent-tools
仓库应收录此插件,但清单和工作流说明保留在此处,以便与实际的 MCP 服务、Bridge 扩展、工具配置文件和 EasyEDA 运行时行为保持同步。
| 文件 | 用途 |
|---|---|
.claude-plugin/plugin.json | 适用于兼容 Agent 运行时和市场目录的 Claude Code 有效插件清单。 |
.mcp.json | 项目本地的 Claude Code MCP 服务配置。 |
.codex/config.example.toml | Codex CLI MCP 配置示例。 |
.vscode/mcp.example.json | VS Code / GitHub Copilot 工作区 MCP 配置示例。 |
opencode.example.jsonc | OpenCode 项目 MCP 配置示例。 |
.opencode/skills/ | OpenCode 原生的镜像技能定义。 |
docs/agent-runtime-config.md | Agent 运行时设置和验证矩阵。 |
skills/easyeda-workflow/SKILL.md | EasyEDA 端到端设置、检查、受控写入、导出和报告工作流。 |
skills/component-search/SKILL.md | 元件搜索、BOM 审查、采购、定价、供应情况和零件风险工作流。 |
skills/design-validation/SKILL.md | DRC/ERC、语义 ERC、PCB 约束、生产 QA、导出和发布验证工作流。 |
skills/easyeda-component-review/SKILL.md | 数据手册、实际封装和绑定的 3D 模型审查,并将结构化证据保存在 Personal Device 中。 |
Agent 设置
EasyEDA MCP Pro 可通过已发布的 npm 包启动,也可从源代码检出目录启动:
npx easyeda-mcp-pro
TRANSPORT=http HTTP_HOST=127.0.0.1 HTTP_PORT=3000 npx easyeda-mcp-pro
pnpm build && node dist/index.js
对于实时 EasyEDA Pro 工作流,请安装 EasyEDA bridge 扩展,并使用 easyeda_health_check 和 easyeda_bridge_status 确认 bridge 可访问。工具是否可用取决于 TOOL_PROFILE 和可选的 TOOL_SCOPES 限制。
对于源代码检出目录,发布插件更改前,请运行常规验证流程:
python3 -m json.tool .claude-plugin/plugin.json >/dev/null
claude plugin validate .
pnpm format:check
pnpm typecheck
pnpm test
pnpm build
pnpm check:metadata
验证工作流
在将此插件列为 agent-tools 中的活跃插件之前,请至少验证一个兼容的 Agent 运行时能够:
- 发现
.claude-plugin/plugin.json。 - 通过
stdio或 HTTP 启动或连接到easyeda-mcp-pro。 - 调用
easyeda_health_check、easyeda_bridge_status或easyeda_get_capabilities。 - 从
skills/加载技能,并按工作流操作,且不引用缺失的工具。 - 分别报告 bridge 状态、工具配置、ERC、DRC、BOM、导出产物、假设条件和人工审核要求。
EasyEDA MCP Pro 是工程助手,不是可自主批准制造的权威机构。生成的设计、元件选型和制造输出在采购、制造或组装前都需要由合格人员审核。
开发
先决条件
- Node.js:需要 Node.js 24.x;仓库自动化固定使用 24.22.1。
- pnpm:本地开发和自动化要求使用确切版本 11.28.8。
安装依赖前,请准备好受支持的运行时:
nvm install 24.22.1
nvm use 24.22.1
corepack enable
corepack prepare [email protected] --activate
node scripts/check-runtime.mjs --require-pnpm
- Go Task(可选,用于 Taskfile 命令)
快速开始
# Setup
pnpm install
cp .env.example .env
# All quality gates (lint + format + typecheck + test + build)
pnpm verify
# Or, if you use Go Task:
task verify
# Use focused checks while iterating:
pnpm format:check # Prettier
pnpm typecheck # TypeScript
pnpm lint # ESLint
# Test
pnpm test # Vitest suite
pnpm test:coverage # With coverage report
# Golden E2E fixture smoke tests are included in `pnpm test`
# See docs/golden-fixtures.md for fixture architecture
# Build & run
pnpm build # tsc -> dist/
pnpm build:extension # Bundle EasyEDA Pro extension
pnpm verify:extension # Verify extension package contents
pnpm dev # Hot-reload dev mode
pnpm start # Run compiled build
# MCP Inspector (debug UI)
pnpm inspector
可用的 Taskfile 命令
此项目包含一个 Taskfile.yml,提供以下命令:
| 命令 | 说明 |
|---|---|
task install | 安装依赖 |
task lint | 运行 ESLint |
task format | 使用 Prettier 检查格式 |
task typecheck | 运行 TypeScript 类型检查 |
task test | 运行测试 |
task build | 构建项目 |
task verify | 通过 Taskfile 运行所有质量检查 |
该软件包还提供 pnpm verify,它运行与 CI 等效的本地检查,无需 Go Task。
安装 Go Task 以使用这些命令。
项目结构
src/
├── index.ts # Entry point (stdio or HTTP)
├── bridge/ # EasyEDA Pro WebSocket bridge protocol
│ ├── manager.ts, protocol.ts, types.ts
├── cli/ # Client auto-setup (setup/extension CLI commands)
├── config/ # Environment, tool profiles, feature flags
│ ├── env.ts, profiles.ts, feature-flags.ts, version.ts
├── remote/ # Hosted/self-hosted remote MCP gateway, session router, scopes
├── schemas/ # Shared Zod schemas
├── server/ # MCP server core
│ ├── factory.ts, resources-prompts.ts
│ └── transports/
│ ├── http.ts # HTTP/Streamable HTTP transport
│ └── oauth-resource-metadata.ts
├── storage/ # Node.js sqlite storage (cache, artifacts)
├── tools/ # Up to 115 profile-gated MCP tool definitions
│ ├── register.ts, registry.ts, types.ts, transaction.ts
│ ├── L0_diagnostics_core.ts, L0_diagnostics_api.ts
│ ├── L1_schematic_read.ts, L1_schematic_write.ts
│ ├── L1_bom_core.ts, L1_bom_sourcing.ts
│ └── L1_drc_erc.ts, L1_board.ts, L1_export.ts, L1_pcb_constraints.ts, L1_pcb_write.ts
├── vendors/ # Supplier API clients (lcsc/, jlcpcb/, mouser/, digikey/)
└── ... # circuit, pcb-layout, net-validation, power-tree, production-qa,
# quote-gating, safety, observability, catalog, bom-quality,
# export-manifest, live, easyeda-runtime
easyeda-bridge-extension/ # EasyEDA Pro bridge extension workspace package
安全
完整的安全参考(包括部署模式、身份验证、工具安全控制、机密管理、安全默认设置、供应商 API 安全、威胁场景和部署检查清单),请参阅 安全架构与威胁模型。
- 网络安全:在所有环境中启动时验证配置——拒绝非环回 HTTP,除非配置完整的 OAuth 和明确的非通配符源允许列表
- OAuth/JWKS:HTTP 传输通过 JWKS 端点验证持有者令牌(参见 OAuth 部分)
- 速率限制:HTTP 传输按 IP 实施滑动窗口速率限制器(默认每分钟 100 个请求)
- 路径遍历防护:根据
ARTIFACT_DIR验证所有文件导出路径 - 机密信息脱敏:从日志和诊断输出中脱敏 API 密钥、令牌和密码
- 分支保护:治理政策要求对
main分支进行代码审查和状态检查(参见 仓库治理) - 代码扫描:每次推送和 PR 都会运行 CodeQL 分析(security-extended 和 security-and-quality 查询)
- 依赖管理:仓库内配置了 Renovate 政策;通过 Renovate Dependency Dashboard 或 Renovate 创建的更新活动确认托管服务提供方已启用。Dependency Audit、Dependency Review、Socket 和 CodeQL 提供独立的安全信号。
- 供应链卫生:pnpm 工作区构建、固定版本的 GitHub Actions,且不依赖原生 SQLite 插件
- 漏洞报告:漏洞披露方式请参阅 SECURITY.md
发布与依赖自动化
此仓库使用自动化工作流管理依赖和发布:
- Renovate:.github/renovate.json 定义了仓库的依赖更新政策。托管版 Renovate 是账户级前提条件;Dependency Dashboard 或由 Renovate 创建的更新活动可作为服务提供方已启用的证明。参见 仓库治理。
- Release Please:自动处理稳定版版本号更新、发布元数据和
CHANGELOG.md。编号为rc.N的候选版本使用隔离的预发布流程。参见发布政策和发布流程。 - 安全发布:发布工作流会重新构建并验证所有资源,将 npm 发布到与渠道匹配的
latest或nextdist-tag,并将扩展和 SBOM 上传到对应的 GitHub Release,同时确保 GHCR/MCP Registry 的推广与所选渠道保持一致。
支持项目
如果此项目能帮助你在使用 EasyEDA Pro、BOM 工作流或 MCP 集成时节省时间,可以通过本 README 顶部的 请我喝杯咖啡 按钮支持持续开发。
许可证
当前由项目编写的源代码采用 PolyForm Noncommercial 1.0.0 许可证。商业用途需要单独的书面许可;参见商业授权。早期的 MIT 版本保留发布时适用的 MIT 权利。参见许可说明。
相关链接
- Model Context Protocol — AI 工具集成的标准协议
- EasyEDA Pro — 专业 PCB 设计工具
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。