MCPLow riskUnclaimed

easyeda-mcp-pro

MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.

oaslanankaoaslananka/easyeda-mcp-pro★ 51Updated Oct 9, 2026

server.json

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.oaslananka/easyeda-mcp-pro",
  "description": "MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.",
  "repository": {
    "url": "https://github.com/oaslananka/easyeda-mcp-pro",
    "source": "github"
  },
  "version": "1.2.0",
  "packages": [
    {
      "registryType": "npm",
      "identifier": "easyeda-mcp-pro",
      "version": "1.2.0",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "description": "Environment mode",
          "format": "string",
          "default": "development",
          "choices": [
            "development",
            "test",
            "production"
          ],
          "name": "NODE_ENV"
        },
        {
          "description": "Pino log level",
          "format": "string",
          "default": "info",
          "choices": [
            "trace",
            "debug",
            "info",
            "warn",
            "error",
            "fatal",
            "silent"
          ],
          "name": "LOG_LEVEL"
        },
        {
          "description": "Active tool profile (core, pro, full, dev, experimental)",
          "format": "string",
          "default": "core",
          "choices": [
            "core",
            "pro",
            "full",
            "dev",
            "experimental"
          ],
          "name": "TOOL_PROFILE"
        },
        {
          "description": "Optional comma- or space-separated capability scope allowlist; empty enables all scopes allowed by the active tool profile.",
          "format": "string",
          "name": "TOOL_SCOPES"
        },
        {
          "description": "MCP protocol version string",
          "format": "string",
          "default": "2025-11-25",
          "name": "MCP_PROTOCOL_VERSION"
        },
        {
          "description": "Bridge backend: local_bridge or experimental remote_relay",
          "format": "string",
          "default": "local_bridge",
          "choices": [
            "local_bridge",
            "remote_relay"
          ],
          "name": "MCP_BRIDGE_BACKEND"
        },
        {
          "description": "Optional fixed Remote Relay session id for the remote_relay backend",
          "format": "string",
          "name": "MCP_REMOTE_SESSION_ID"
        },
        {
          "description": "Server transport mode (stdio or http)",
          "format": "string",
          "default": "stdio",
          "choices": [
            "stdio",
            "http"
          ],
          "name": "TRANSPORT"
        },
        {
          "description": "HTTP bind address",
          "format": "string",
          "default": "127.0.0.1",
          "name": "HTTP_HOST"
        },
        {
          "description": "HTTP port",
          "format": "number",
          "default": "3000",
          "name": "HTTP_PORT"
        },
        {
          "description": "Disable HTTP transport authentication",
          "format": "boolean",
          "default": "false",
          "name": "HTTP_AUTH_DISABLED"
        },
        {
          "description": "Max requests per minute per IP",
          "format": "number",
          "default": "100",
          "name": "HTTP_RATE_LIMIT_MAX"
        },
        {
          "description": "Allowed CORS origin for HTTP transport",
          "format": "string",
          "name": "CORS_ORIGIN"
        },
        {
          "description": "Comma-separated list of allowed origins for HTTP transport (use * for wildcard)",
          "format": "string",
          "name": "ALLOWED_ORIGINS"
        },
        {
          "description": "Reserved; currently non-functional: parsed for compatibility, but the server does not advertise or execute MCP Tasks.",
          "format": "boolean",
          "default": "false",
          "name": "MCP_TASKS_ENABLED"
        },
        {
          "description": "Reserved; currently non-functional: parsed for compatibility, but no MCP Apps UI or resource runtime is registered.",
          "format": "boolean",
          "default": "false",
          "name": "MCP_APPS_ENABLED"
        },
        {
          "description": "Experimental; enables opt-in dual-era HTTP and stdio support for MCP 2026-07-28 while legacy behavior remains the default.",
          "format": "boolean",
          "default": "false",
          "name": "MCP_V2_EXPERIMENTAL"
        },
        {
          "description": "Experimental second gate for raw EasyEDA runtime execution; requires BRIDGE_RAW_EXEC_ENABLED.",
          "format": "boolean",
          "default": "false",
          "name": "MCP_RAW_EXEC_EXPERIMENTAL"
        },
        {
          "description": "Bridge WebSocket host for EasyEDA Pro connection",
          "format": "string",
          "default": "127.0.0.1",
          "name": "BRIDGE_HOST"
        },
        {
          "description": "Bridge primary port",
          "format": "number",
          "default": "49620",
          "name": "BRIDGE_PORT"
        },
        {
          "description": "Port scan specification (comma-separated ports or ranges)",
          "format": "string",
          "default": "49620-49629",
          "name": "BRIDGE_PORT_SCAN"
        },
        {
          "description": "Bridge call timeout in ms",
          "format": "number",
          "default": "15000",
          "name": "BRIDGE_TIMEOUT_MS"
        },
        {
          "description": "Bridge heartbeat interval in ms",
          "format": "number",
          "default": "10000",
          "name": "BRIDGE_HEARTBEAT_MS"
        },
        {
          "description": "How long to wait for EasyEDA Pro to become available on startup (ms)",
          "format": "number",
          "default": "30000",
          "name": "BRIDGE_WAIT_FOR_EDA_MS"
        },
        {
          "description": "Max bridge payload size in bytes",
          "format": "number",
          "default": "1048576",
          "name": "BRIDGE_MAX_PAYLOAD_SIZE"
        },
        {
          "description": "Session token for extension auth",
          "format": "string",
          "isSecret": true,
          "name": "BRIDGE_TOKEN"
        },
        {
          "description": "Enable EasyEDA dev bridge mode",
          "format": "boolean",
          "default": "false",
          "name": "EASYEDA_DEV_BRIDGE"
        },
        {
          "description": "Experimental first gate for raw EasyEDA runtime execution; requires MCP_RAW_EXEC_EXPERIMENTAL.",
          "format": "boolean",
          "default": "false",
          "name": "BRIDGE_RAW_EXEC_ENABLED"
        },
        {
          "description": "Base directory for writable local state; defaults beneath the operating-system user home directory.",
          "format": "filepath",
          "placeholder": "Defaults to the operating-system user home directory under .easyeda-mcp-pro.",
          "name": "DATA_DIR"
        },
        {
          "description": "SQLite database path; derived from DATA_DIR unless explicitly configured.",
          "format": "filepath",
          "placeholder": "Derived from DATA_DIR as easyeda-mcp-pro.sqlite unless explicitly configured.",
          "name": "SQLITE_PATH"
        },
        {
          "description": "Artifact export directory; derived from DATA_DIR unless explicitly configured.",
          "format": "filepath",
          "placeholder": "Derived from DATA_DIR as artifacts unless explicitly configured.",
          "name": "ARTIFACT_DIR"
        },
        {
          "description": "Cache directory; derived from DATA_DIR unless explicitly configured.",
          "format": "filepath",
          "placeholder": "Derived from DATA_DIR as cache unless explicitly configured.",
          "name": "CACHE_DIR"
        },
        {
          "description": "Reserved; currently non-functional: no in-process AI provider client is invoked.",
          "format": "string",
          "default": "none",
          "choices": [
            "none",
            "anthropic",
            "openai",
            "openrouter",
            "local"
          ],
          "name": "AI_PROVIDER"
        },
        {
          "description": "Reserved; currently non-functional: no model is selected or invoked.",
          "format": "string",
          "name": "AI_MODEL"
        },
        {
          "description": "Reserved; currently non-functional: do not supply credentials because no provider client consumes them.",
          "format": "string",
          "isSecret": true,
          "name": "AI_API_KEY"
        },
        {
          "description": "Reserved; currently non-functional: retained only for future provider compatibility.",
          "format": "number",
          "default": "8000",
          "name": "AI_MAX_TOKENS"
        },
        {
          "description": "Reserved; currently non-functional: retained only for future provider compatibility.",
          "format": "number",
          "default": "60000",
          "name": "AI_TIMEOUT_MS"
        },
        {
          "description": "Reserved; currently non-functional: cannot enable AI-originated design mutation.",
          "format": "boolean",
          "default": "false",
          "name": "AI_ALLOW_DESIGN_MUTATIONS"
        },
        {
          "description": "JLCPCB API mode (disabled, mock, approved_api)",
          "format": "string",
          "default": "disabled",
          "choices": [
            "disabled",
            "mock",
            "approved_api"
          ],
          "name": "JLCPCB_MODE"
        },
        {
          "description": "JLCPCB API client identifier.",
          "format": "string",
          "name": "JLCPCB_CLIENT_ID"
        },
        {
          "description": "JLCPCB API client secret",
          "format": "string",
          "isSecret": true,
          "name": "JLCPCB_CLIENT_SECRET"
        },
        {
          "description": "JLCPCB API base URL",
          "format": "string",
          "default": "https://api.jlcpcb.com",
          "name": "JLCPCB_API_BASE_URL"
        },
        {
          "description": "Enable JLCPCB ordering",
          "format": "boolean",
          "default": "false",
          "name": "JLCPCB_ENABLE_ORDERING"
        },
        {
          "description": "Enable LCSC component search",
          "format": "boolean",
          "default": "true",
          "name": "JLCSEARCH_ENABLED"
        },
        {
          "description": "LCSC search API base URL",
          "format": "string",
          "default": "https://jlcsearch.tscircuit.com",
          "name": "JLCSEARCH_BASE_URL"
        },
        {
          "description": "LCSC API key",
          "format": "string",
          "isSecret": true,
          "name": "LCSC_API_KEY"
        },
        {
          "description": "Allow supported public keyless component-sourcing fallbacks when vendor credentials are unavailable.",
          "format": "boolean",
          "default": "true",
          "name": "KEYLESS_SOURCING_ENABLED"
        },
        {
          "description": "Component-sourcing cache lifetime in seconds (0 disables cache reuse).",
          "format": "number",
          "default": "21600",
          "name": "SOURCING_CACHE_TTL_SECONDS"
        },
        {
          "description": "Minimum delay in milliseconds between outbound requests to the same sourcing vendor.",
          "format": "number",
          "default": "150",
          "name": "VENDOR_MIN_REQUEST_INTERVAL_MS"
        },
        {
          "description": "Enable Mouser integration",
          "format": "boolean",
          "default": "false",
          "name": "MOUSER_ENABLED"
        },
        {
          "description": "Mouser API key",
          "format": "string",
          "isSecret": true,
          "name": "MOUSER_API_KEY"
        },
        {
          "description": "Mouser API base URL",
          "format": "string",
          "default": "https://api.mouser.com",
          "name": "MOUSER_API_BASE_URL"
        },
        {
          "description": "Enable DigiKey integration",
          "format": "boolean",
          "default": "false",
          "name": "DIGIKEY_ENABLED"
        },
        {
          "description": "DigiKey OAuth2 client identifier.",
          "format": "string",
          "name": "DIGIKEY_CLIENT_ID"
        },
        {
          "description": "DigiKey OAuth2 client secret",
          "format": "string",
          "isSecret": true,
          "name": "DIGIKEY_CLIENT_SECRET"
        },
        {
          "description": "Use DigiKey sandbox environment",
          "format": "boolean",
          "default": "true",
          "name": "DIGIKEY_SANDBOX"
        },
        {
          "description": "DigiKey locale",
          "format": "string",
          "default": "en-US",
          "name": "DIGIKEY_LOCALE"
        },
        {
          "description": "DigiKey pricing currency",
          "format": "string",
          "default": "USD",
          "name": "DIGIKEY_CURRENCY"
        },
        {
          "description": "Enable OAuth for HTTP mode",
          "format": "boolean",
          "default": "false",
          "name": "OAUTH_ENABLED"
        },
        {
          "description": "Expected OAuth token issuer",
          "format": "string",
          "name": "OAUTH_ISSUER"
        },
        {
          "description": "Expected OAuth token audience",
          "format": "string",
          "default": "easyeda-mcp-pro",
          "name": "OAUTH_AUDIENCE"
        },
        {
          "description": "JWKS endpoint for token signature validation",
          "format": "string",
          "name": "OAUTH_JWKS_URI"
        },
        {
          "description": "Required OAuth token scope",
          "format": "string",
          "default": "easyeda:read",
          "name": "OAUTH_REQUIRED_SCOPES"
        },
        {
          "description": "Reserved; currently non-functional: no OTLP exporter is started.",
          "format": "boolean",
          "default": "false",
          "name": "OTEL_ENABLED"
        },
        {
          "description": "Reserved; currently non-functional: retained for a future OTLP exporter.",
          "format": "string",
          "default": "easyeda-mcp-pro",
          "name": "OTEL_SERVICE_NAME"
        },
        {
          "description": "Reserved; currently non-functional: retained for a future OTLP exporter.",
          "format": "string",
          "name": "OTEL_EXPORTER_OTLP_ENDPOINT"
        },
        {
          "description": "Reserved; currently non-functional: no OTLP traces are emitted.",
          "format": "number",
          "default": "1",
          "name": "TRACE_SAMPLE_RATE"
        }
      ]
    }
  ]
}

Permissions

DeclaredDetected
Runs code—node
Installs—npm:easyeda-mcp-pro@1.2.0
Runs install scripts—None
NetworkNoneNone
Needs credentialsAI_API_KEYBRIDGE_TOKENDIGIKEY_CLIENT_SECRETJLCPCB_CLIENT_SECRETLCSC_API_KEYMOUSER_API_KEYAI_API_KEYBRIDGE_TOKENDIGIKEY_CLIENT_SECRETJLCPCB_CLIENT_SECRETLCSC_API_KEYMOUSER_API_KEY
Outside the workspace—None
Agent tools—None

Checks

Low risk · Nothing worth a warning was found.

Not reviewed by a person · Checked by rules; the model review is not switched on yet.

Versions

  1. #21.2.0latestOct 9, 2026
  2. #11.1.0Oct 7, 2026