mcpField
E
Easyeda Mcp Pro

Easyeda Mcp Pro

本地服务
oaslananka.github.ioAI 与智能体63今天更新

关于 Easyeda Mcp Pro

Easyeda Mcp Pro 是用于 EasyEDA Pro AI 辅助硬件设计工作流的 MCP 服务。它通过 WebSocket 桥接扩展连接,并按配置档提供原理图与电路板检查、BOM 管理、规则检查和制造文件导出工具。

主要功能

  1. 01检查和编辑原理图元素
  2. 02生成、验证并采购 BOM
  3. 03运行设计规则和电气规则检查
  4. 04分析 PCB 层与尺寸
  5. 05导出制造文件
  6. 06诊断桥接与服务状态

适用场景

  1. 01借助 AI 助手审阅原理图
  2. 02采购并验证物料清单
  3. 03制造前检查 PCB
  4. 04导出 Gerber 和贴装文件

MCP 相关

该 MCP 服务提供最多 120 个按配置档启用的工具,用于处理 EasyEDA Pro 设计数据和工作流。它通过 WebSocket 桥接扩展连接应用程序。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"easyeda-mcp-pro": {
"command": "npx",
"args": [
"-y",
"easyeda-mcp-pro"
],
"env": {
"NODE_ENV": "<NODE_ENV>",
"LOG_LEVEL": "<LOG_LEVEL>",
"TOOL_PROFILE": "<TOOL_PROFILE>",
"TOOL_SCOPES": "<TOOL_SCOPES>",
"MCP_PROTOCOL_VERSION": "<MCP_PROTOCOL_VERSION>",
"MCP_BRIDGE_BACKEND": "<MCP_BRIDGE_BACKEND>",
"MCP_REMOTE_SESSION_ID": "<MCP_REMOTE_SESSION_ID>",
"TRANSPORT": "<TRANSPORT>",
"HTTP_HOST": "<HTTP_HOST>",
"HTTP_PORT": "<HTTP_PORT>",
"HTTP_AUTH_DISABLED": "<HTTP_AUTH_DISABLED>",
"HTTP_RATE_LIMIT_MAX": "<HTTP_RATE_LIMIT_MAX>",
"CORS_ORIGIN": "<CORS_ORIGIN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"MCP_TASKS_ENABLED": "<MCP_TASKS_ENABLED>",
"MCP_APPS_ENABLED": "<MCP_APPS_ENABLED>",
"MCP_SKILLS_ENABLED": "<MCP_SKILLS_ENABLED>",
"MCP_V2_EXPERIMENTAL": "<MCP_V2_EXPERIMENTAL>",
"MCP_RAW_EXEC_EXPERIMENTAL": "<MCP_RAW_EXEC_EXPERIMENTAL>",
"BRIDGE_HOST": "<BRIDGE_HOST>",
"BRIDGE_PORT": "<BRIDGE_PORT>",
"BRIDGE_PORT_SCAN": "<BRIDGE_PORT_SCAN>",
"BRIDGE_TIMEOUT_MS": "<BRIDGE_TIMEOUT_MS>",
"BRIDGE_HEARTBEAT_MS": "<BRIDGE_HEARTBEAT_MS>",
"BRIDGE_WAIT_FOR_EDA_MS": "<BRIDGE_WAIT_FOR_EDA_MS>",
"BRIDGE_MAX_PAYLOAD_SIZE": "<BRIDGE_MAX_PAYLOAD_SIZE>",
"BRIDGE_TOKEN": "<BRIDGE_TOKEN>",
"EASYEDA_DEV_BRIDGE": "<EASYEDA_DEV_BRIDGE>",
"BRIDGE_RAW_EXEC_ENABLED": "<BRIDGE_RAW_EXEC_ENABLED>",
"DATA_DIR": "<DATA_DIR>",
"SQLITE_PATH": "<SQLITE_PATH>",
"ARTIFACT_DIR": "<ARTIFACT_DIR>",
"CACHE_DIR": "<CACHE_DIR>",
"AI_PROVIDER": "<AI_PROVIDER>",
"AI_MODEL": "<AI_MODEL>",
"AI_API_KEY": "<AI_API_KEY>",
"AI_MAX_TOKENS": "<AI_MAX_TOKENS>",
"AI_TIMEOUT_MS": "<AI_TIMEOUT_MS>",
"AI_ALLOW_DESIGN_MUTATIONS": "<AI_ALLOW_DESIGN_MUTATIONS>",
"JLCPCB_MODE": "<JLCPCB_MODE>",
"JLCPCB_CLIENT_ID": "<JLCPCB_CLIENT_ID>",
"JLCPCB_CLIENT_SECRET": "<JLCPCB_CLIENT_SECRET>",
"JLCPCB_API_BASE_URL": "<JLCPCB_API_BASE_URL>",
"JLCPCB_ENABLE_ORDERING": "<JLCPCB_ENABLE_ORDERING>",
"JLCSEARCH_ENABLED": "<JLCSEARCH_ENABLED>",
"JLCSEARCH_BASE_URL": "<JLCSEARCH_BASE_URL>",
"LCSC_API_KEY": "<LCSC_API_KEY>",
"KEYLESS_SOURCING_ENABLED": "<KEYLESS_SOURCING_ENABLED>",
"SOURCING_CACHE_TTL_SECONDS": "<SOURCING_CACHE_TTL_SECONDS>",
"VENDOR_MIN_REQUEST_INTERVAL_MS": "<VENDOR_MIN_REQUEST_INTERVAL_MS>",
"MOUSER_ENABLED": "<MOUSER_ENABLED>",
"MOUSER_API_KEY": "<MOUSER_API_KEY>",
"MOUSER_API_BASE_URL": "<MOUSER_API_BASE_URL>",
"DIGIKEY_ENABLED": "<DIGIKEY_ENABLED>",
"DIGIKEY_CLIENT_ID": "<DIGIKEY_CLIENT_ID>",
"DIGIKEY_CLIENT_SECRET": "<DIGIKEY_CLIENT_SECRET>",
"DIGIKEY_SANDBOX": "<DIGIKEY_SANDBOX>",
"DIGIKEY_LOCALE": "<DIGIKEY_LOCALE>",
"DIGIKEY_CURRENCY": "<DIGIKEY_CURRENCY>",
"OAUTH_ENABLED": "<OAUTH_ENABLED>",
"OAUTH_ISSUER": "<OAUTH_ISSUER>",
"OAUTH_AUDIENCE": "<OAUTH_AUDIENCE>",
"OAUTH_JWKS_URI": "<OAUTH_JWKS_URI>",
"OAUTH_REQUIRED_SCOPES": "<OAUTH_REQUIRED_SCOPES>",
"OTEL_ENABLED": "<OTEL_ENABLED>",
"OTEL_SERVICE_NAME": "<OTEL_SERVICE_NAME>",
"OTEL_EXPORTER_OTLP_ENDPOINT": "<OTEL_EXPORTER_OTLP_ENDPOINT>",
"TRACE_SAMPLE_RATE": "<TRACE_SAMPLE_RATE>"
}
}
}
}
启动命令npx -y easyeda-mcp-pro
需要配置的环境变量
NODE_ENVEnvironment mode
LOG_LEVELPino log level
TOOL_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 string
MCP_BRIDGE_BACKENDBridge backend: local_bridge or experimental remote_relay
MCP_REMOTE_SESSION_IDOptional fixed Remote Relay session id for the remote_relay backend
TRANSPORTServer transport mode (stdio or http)
HTTP_HOSTHTTP bind address
HTTP_PORTHTTP port
HTTP_AUTH_DISABLED密钥Disable HTTP transport authentication
HTTP_RATE_LIMIT_MAXMax requests per minute per IP
CORS_ORIGINAllowed CORS origin for HTTP transport
ALLOWED_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 connection
BRIDGE_PORTBridge primary port
BRIDGE_PORT_SCANPort scan specification (comma-separated ports or ranges)
BRIDGE_TIMEOUT_MSBridge call timeout in ms
BRIDGE_HEARTBEAT_MSBridge heartbeat interval in ms
BRIDGE_WAIT_FOR_EDA_MSHow long to wait for EasyEDA Pro to become available on startup (ms)
BRIDGE_MAX_PAYLOAD_SIZEMax bridge payload size in bytes
BRIDGE_TOKEN密钥Session token for extension auth
EASYEDA_DEV_BRIDGEEnable EasyEDA dev bridge mode
BRIDGE_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 secret
JLCPCB_API_BASE_URLJLCPCB API base URL
JLCPCB_ENABLE_ORDERINGEnable JLCPCB ordering
JLCSEARCH_ENABLEDEnable LCSC component search
JLCSEARCH_BASE_URLLCSC search API base URL
LCSC_API_KEY密钥LCSC API key
KEYLESS_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 integration
MOUSER_API_KEY密钥Mouser API key
MOUSER_API_BASE_URLMouser API base URL
DIGIKEY_ENABLED密钥Enable DigiKey integration
DIGIKEY_CLIENT_ID密钥DigiKey OAuth2 client identifier.
DIGIKEY_CLIENT_SECRET密钥DigiKey OAuth2 client secret
DIGIKEY_SANDBOX密钥Use DigiKey sandbox environment
DIGIKEY_LOCALE密钥DigiKey locale
DIGIKEY_CURRENCY密钥DigiKey pricing currency
OAUTH_ENABLED密钥Enable OAuth for HTTP mode
OAUTH_ISSUER密钥Expected OAuth token issuer
OAUTH_AUDIENCE密钥Expected OAuth token audience
OAUTH_JWKS_URI密钥JWKS endpoint for token signature validation
OAUTH_REQUIRED_SCOPES密钥Required OAuth token scope
OTEL_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmeasyeda-mcp-pro1.6.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

easyeda-mcp-pro

面向 EasyEDA Pro 的生产级 MCP 服务:安全地检查 PCB 设计、采购 BOM、导出制造文件,并借助 AI 审查硬件。

npm 版本 npm 总下载量 支持的 Node.js 版本 许可证 pnpm

CI 状态 文档状态 安全策略 OpenSSF 评分卡

询问 DeepWiki

路线图 · OpenSSF 证明材料 · 安全保障论证

合规文档: 第三方声明 · 供应商条款与不支持的工作流 · 远程 MCP 模式

请我喝杯咖啡    在 GitHub 上点星标


信任与供应链

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 的最快方法:

  1. 自动配置 MCP 客户端:

    npx easyeda-mcp-pro setup all
    

    此命令会检测并配置 Claude Desktop、Cursor、VS Code、Windsurf、Cline、Gemini、Zed 等客户端,以自动运行 MCP 服务。 (也可以针对特定客户端运行,例如:npx easyeda-mcp-pro setup claude)

  2. 定位并安装 EasyEDA Pro 桥接扩展:

    npx easyeda-mcp-pro extension --open
    

    此命令会打开包含扩展包 easyeda-bridge-extension.eext 的文件夹。通过 EasyEDA Pro → Settings → Extensions → Extension Manager 导入该扩展。

  3. 连接桥接: 在 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 中的安装步骤:

  1. 打开 EasyEDA Pro。
  2. 前往 Settings → Extensions → Extension Manager。
  3. 点击 Import Extension,并选择 easyeda-bridge-extension.eext 文件。
  4. 确保已为该扩展启用 Allow External Interaction。
  5. 每次导入或升级后,都要完全退出并重新打开 EasyEDA Pro。Extension Manager 的成功消息仅确认软件包已安装,不表示内存中已运行的调度器已被替换。
  6. 点击 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

此检查包括:

  1. Node.js 版本兼容性。
  2. 运行时模式:源代码检出、已安装的软件包或生产运行时。
  3. CLI 入口 shebang 和 .eext 扩展软件包校验和。
  4. 桥接端口可用性。注意:在 MCP 客户端启动服务并连接到 EasyEDA Pro 扩展之前,桥接状态会显示为离线。

仅检出源代码时才需要 pnpm,且版本必须与仓库锁定的版本一致。已安装的软件包或生产运行时(包括加固版 Docker 镜像)不需要 pnpm。 对于不受支持的必需运行时、无效配置或缺失/损坏的运行时构件,Doctor 会以状态码 1 退出;仅桥接处于离线状态仍仅作信息提示。


配置

将 .env.example 复制为 .env 并进行编辑。所有变量都有安全的默认值,只需配置所需的变量。

布尔型环境变量使用严格的字面值:true / 1 启用设置,false / 0 禁用设置。匹配时不区分大小写,并忽略首尾空白。其他值(包括 yes、no、on、off、enabled、disabled、空字符串和拼写错误)都会导致启动验证失败,并报告有问题的变量。留空未设置的变量即可使用其文档中说明的默认值。

必要配置
变量默认值描述
NODE_ENVdevelopment在生产环境中设置为 production
LOG_LEVELinfoPino 日志级别:trace、debug、info、warn、error、fatal、silent
TOOL_PROFILEcore工具集:core、pro、full、dev、experimental
TOOL_SCOPESempty可选的能力允许列表,例如 schematic:read,bom:read
MCP_PROTOCOL_VERSION2025-11-25MCP 协议版本字符串
MCP_BRIDGE_BACKENDlocal_bridge桥接后端:local_bridge 或实验性的 remote_relay
MCP_REMOTE_SESSION_IDemptyremote_relay 后端的可选固定 Remote Relay 会话 ID
TRANSPORTstdio服务传输方式:stdio(默认)或 http

如需进行 Remote Relay 实验,请设置 MCP_BRIDGE_BACKEND=remote_relay 后运行 npx easyeda-mcp-pro doctor --fix;doctor 输出会验证 HTTP 传输、会话选择、OAuth 和仅限回环地址的开发身份验证设置。

桥接(EasyEDA Pro 连接)
变量默认值描述
BRIDGE_HOST127.0.0.1桥接 WebSocket 主机
BRIDGE_PORT49620主桥接端口
BRIDGE_PORT_SCAN49620-49629端口扫描规格(逗号分隔/范围)
BRIDGE_TIMEOUT_MS15000桥接调用超时(毫秒)
BRIDGE_HEARTBEAT_MS10000心跳间隔(毫秒)
BRIDGE_WAIT_FOR_EDA_MS30000启动时等待 EasyEDA Pro(毫秒)
BRIDGE_MAX_PAYLOAD_SIZE1048576最大桥接负载(字节,默认 1 MiB)
BRIDGE_TOKEN''用于扩展身份验证的会话令牌
BRIDGE_RAW_EXEC_ENABLEDfalse启用原始 EasyEDA 运行时 JavaScript 执行的第一个显式开关
MCP_RAW_EXEC_EXPERIMENTALfalse注册 easyeda_execute 前所需的第二个实验性开关
存储
变量默认值说明
DATA_DIR~/.easyeda-mcp-pro可写本地状态的基础目录
SQLITE_PATH<DATA_DIR>/easyeda-mcp-pro.sqliteSQLite 数据库路径
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_ENABLEDtrue在缺少凭据时允许使用受支持的公开免密回退方案
SOURCING_CACHE_TTL_SECONDS21600将寻源响应缓存六小时(0 表示禁用缓存复用)
VENDOR_MIN_REQUEST_INTERVAL_MS150向同一寻源供应商发送出站请求的最小间隔
保留的 AI 配置

目前尚未实现进程内 AI 提供商客户端。为保持配置兼容性,仍接受 AI_* 变量,但会将其报告为 reserved,这些变量始终无效,不得据此推断服务器会向 AI 提供商发送设计数据。请勿提供 API 密钥。

变量默认值当前行为
AI_PROVIDERnone保留;不会调用任何提供商客户端
AI_MODEL''保留;不会选择任何模型
AI_API_KEY''保留;不存在使用凭据的组件
AI_MAX_TOKENS8000保留的兼容性设置
AI_TIMEOUT_MS60000保留的兼容性设置
AI_ALLOW_DESIGN_MUTATIONSfalse保留;无法启用由 AI 发起的设计修改

使用 easyeda_get_feature_flags 或 easyeda_get_capabilities 检查可选设置的 configured、effective 和 maturity 值。

HTTP 传输

使用 TRANSPORT=http 时:

变量默认值说明
HTTP_HOST127.0.0.1绑定地址;非环回地址需要 OAuth
HTTP_PORT3000端口
HTTP_AUTH_DISABLEDfalse仅在非生产环境的环回地址中禁用 HTTP 身份验证
HTTP_RATE_LIMIT_MAX100每个 IP 每分钟的最大请求数
CORS_ORIGIN''允许的来源(旧配置),适用于环回地址上的浏览器客户端
ALLOWED_ORIGINS''明确列出的远程来源允许列表;不接受 *
远程 HTTP 安全

无论 NODE_ENV 为何,所有非环回 HTTP 部署都需要 OAuth 2.0 / OpenID Connect 身份验证:

变量默认值说明
OAUTH_ENABLEDfalse启用 Bearer 令牌验证
OAUTH_ISSUER''预期的令牌颁发者(iss 声明)
OAUTH_AUDIENCEeasyeda-mcp-pro预期的令牌受众(aud 声明)
OAUTH_JWKS_URI''用于验证令牌签名的 JWKS 端点
OAUTH_REQUIRED_SCOPESeasyeda: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 注册受配置文件限制的工具。下表由运行时使用的同一注册表生成:

配置文件已注册的工具
core74
pro101
full116
dev121
experimental121

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_callfull通过桥接调用有文档说明的 EasyEDA Class.method 路径
easyeda_bridge_probe_methodsdev探测桥接方法是否可用
easyeda_component_probedev检查实时原理图元件运行时对象及其状态获取器

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_summaryDRC + ERC 综合摘要
L1 — 电路板(核心)
工具描述
easyeda_board_layers列出 PCB 图层及其类型、颜色和可见性
easyeda_board_stackup查看图层叠层及其厚度、材料
easyeda_board_dimensions查看电路板外形、形状和安装孔
easyeda_board_features统计过孔、走线、覆铜区域、焊盘和元件数量
L1 — 导出(核心/专业版)
工具配置文件描述
easyeda_export_gerberscore导出用于制造的 Gerber 文件
easyeda_export_pick_placepro导出贴片坐标文件
easyeda_export_pdfpro将原理图/电路板导出为 PDF
easyeda_export_netlistpro导出网络表

架构

┌─────────────────┐     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.tomlCodex CLI MCP 配置示例。
.vscode/mcp.example.jsonVS Code / GitHub Copilot 工作区 MCP 配置示例。
opencode.example.jsoncOpenCode 项目 MCP 配置示例。
.opencode/skills/OpenCode 原生的镜像技能定义。
docs/agent-runtime-config.mdAgent 运行时设置和验证矩阵。
skills/easyeda-workflow/SKILL.mdEasyEDA 端到端设置、检查、受控写入、导出和报告工作流。
skills/component-search/SKILL.md元件搜索、BOM 审查、采购、定价、供应情况和零件风险工作流。
skills/design-validation/SKILL.mdDRC/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 运行时能够:

  1. 发现 .claude-plugin/plugin.json。
  2. 通过 stdio 或 HTTP 启动或连接到 easyeda-mcp-pro。
  3. 调用 easyeda_health_check、easyeda_bridge_status 或 easyeda_get_capabilities。
  4. 从 skills/ 加载技能,并按工作流操作,且不引用缺失的工具。
  5. 分别报告 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 或 next dist-tag,并将扩展和 SBOM 上传到对应的 GitHub Release,同时确保 GHCR/MCP Registry 的推广与所选渠道保持一致。

支持项目

如果此项目能帮助你在使用 EasyEDA Pro、BOM 工作流或 MCP 集成时节省时间,可以通过本 README 顶部的 请我喝杯咖啡 按钮支持持续开发。


许可证

当前由项目编写的源代码采用 PolyForm Noncommercial 1.0.0 许可证。商业用途需要单独的书面许可;参见商业授权。早期的 MIT 版本保留发布时适用的 MIT 权利。参见许可说明。


相关链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。