{
  "slug": "io-github-oaslananka-easyeda-mcp-pro",
  "name": "io.github.oaslananka/easyeda-mcp-pro",
  "title": "easyeda-mcp-pro",
  "description": "MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.",
  "version": "1.5.5",
  "publishedAt": "2026-10-27T20:46:46.426766Z",
  "updatedAt": "2026-10-27T20:46:46.426766Z",
  "repoUrl": "https://github.com/oaslananka/easyeda-mcp-pro",
  "websiteUrl": null,
  "namespace": {
    "type": "github",
    "owner": "oaslananka"
  },
  "kind": "local",
  "packages": [
    {
      "registryType": "npm",
      "identifier": "easyeda-mcp-pro",
      "version": "1.5.5",
      "transport": "stdio",
      "runtimeHint": null
    }
  ],
  "remotes": [],
  "envVars": [
    {
      "name": "NODE_ENV",
      "isSecret": false,
      "isRequired": false,
      "description": "Environment mode"
    },
    {
      "name": "LOG_LEVEL",
      "isSecret": false,
      "isRequired": false,
      "description": "Pino log level"
    },
    {
      "name": "TOOL_PROFILE",
      "isSecret": false,
      "isRequired": false,
      "description": "Active tool profile (core, pro, full, dev, experimental)"
    },
    {
      "name": "TOOL_SCOPES",
      "isSecret": false,
      "isRequired": false,
      "description": "Optional comma- or space-separated capability scope allowlist; empty enables all scopes allowed by the active tool profile."
    },
    {
      "name": "MCP_PROTOCOL_VERSION",
      "isSecret": false,
      "isRequired": false,
      "description": "MCP protocol version string"
    },
    {
      "name": "MCP_BRIDGE_BACKEND",
      "isSecret": false,
      "isRequired": false,
      "description": "Bridge backend: local_bridge or experimental remote_relay"
    },
    {
      "name": "MCP_REMOTE_SESSION_ID",
      "isSecret": false,
      "isRequired": false,
      "description": "Optional fixed Remote Relay session id for the remote_relay backend"
    },
    {
      "name": "TRANSPORT",
      "isSecret": false,
      "isRequired": false,
      "description": "Server transport mode (stdio or http)"
    },
    {
      "name": "HTTP_HOST",
      "isSecret": false,
      "isRequired": false,
      "description": "HTTP bind address"
    },
    {
      "name": "HTTP_PORT",
      "isSecret": false,
      "isRequired": false,
      "description": "HTTP port"
    },
    {
      "name": "HTTP_AUTH_DISABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Disable HTTP transport authentication"
    },
    {
      "name": "HTTP_RATE_LIMIT_MAX",
      "isSecret": false,
      "isRequired": false,
      "description": "Max requests per minute per IP"
    },
    {
      "name": "CORS_ORIGIN",
      "isSecret": false,
      "isRequired": false,
      "description": "Allowed CORS origin for HTTP transport"
    },
    {
      "name": "ALLOWED_ORIGINS",
      "isSecret": false,
      "isRequired": false,
      "description": "Comma-separated list of allowed origins for HTTP transport (use * for wildcard)"
    },
    {
      "name": "MCP_TASKS_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: parsed for compatibility, but the server does not advertise or execute MCP Tasks."
    },
    {
      "name": "MCP_APPS_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: parsed for compatibility, but no MCP Apps UI or resource runtime is registered."
    },
    {
      "name": "MCP_V2_EXPERIMENTAL",
      "isSecret": false,
      "isRequired": false,
      "description": "Experimental; enables opt-in dual-era HTTP and stdio support for MCP 2026-07-28 while legacy behavior remains the default."
    },
    {
      "name": "MCP_RAW_EXEC_EXPERIMENTAL",
      "isSecret": false,
      "isRequired": false,
      "description": "Experimental second gate for raw EasyEDA runtime execution; requires BRIDGE_RAW_EXEC_ENABLED."
    },
    {
      "name": "BRIDGE_HOST",
      "isSecret": false,
      "isRequired": false,
      "description": "Bridge WebSocket host for EasyEDA Pro connection"
    },
    {
      "name": "BRIDGE_PORT",
      "isSecret": false,
      "isRequired": false,
      "description": "Bridge primary port"
    },
    {
      "name": "BRIDGE_PORT_SCAN",
      "isSecret": false,
      "isRequired": false,
      "description": "Port scan specification (comma-separated ports or ranges)"
    },
    {
      "name": "BRIDGE_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Bridge call timeout in ms"
    },
    {
      "name": "BRIDGE_HEARTBEAT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Bridge heartbeat interval in ms"
    },
    {
      "name": "BRIDGE_WAIT_FOR_EDA_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "How long to wait for EasyEDA Pro to become available on startup (ms)"
    },
    {
      "name": "BRIDGE_MAX_PAYLOAD_SIZE",
      "isSecret": false,
      "isRequired": false,
      "description": "Max bridge payload size in bytes"
    },
    {
      "name": "BRIDGE_TOKEN",
      "isSecret": true,
      "isRequired": false,
      "description": "Session token for extension auth"
    },
    {
      "name": "EASYEDA_DEV_BRIDGE",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable EasyEDA dev bridge mode"
    },
    {
      "name": "BRIDGE_RAW_EXEC_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Experimental first gate for raw EasyEDA runtime execution; requires MCP_RAW_EXEC_EXPERIMENTAL."
    },
    {
      "name": "DATA_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "Base directory for writable local state; defaults beneath the operating-system user home directory."
    },
    {
      "name": "SQLITE_PATH",
      "isSecret": false,
      "isRequired": false,
      "description": "SQLite database path; derived from DATA_DIR unless explicitly configured."
    },
    {
      "name": "ARTIFACT_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "Artifact export directory; derived from DATA_DIR unless explicitly configured."
    },
    {
      "name": "CACHE_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "Cache directory; derived from DATA_DIR unless explicitly configured."
    },
    {
      "name": "AI_PROVIDER",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: no in-process AI provider client is invoked."
    },
    {
      "name": "AI_MODEL",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: no model is selected or invoked."
    },
    {
      "name": "AI_API_KEY",
      "isSecret": true,
      "isRequired": false,
      "description": "Reserved; currently non-functional: do not supply credentials because no provider client consumes them."
    },
    {
      "name": "AI_MAX_TOKENS",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: retained only for future provider compatibility."
    },
    {
      "name": "AI_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: retained only for future provider compatibility."
    },
    {
      "name": "AI_ALLOW_DESIGN_MUTATIONS",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: cannot enable AI-originated design mutation."
    },
    {
      "name": "JLCPCB_MODE",
      "isSecret": false,
      "isRequired": false,
      "description": "JLCPCB API mode (disabled, mock, approved_api)"
    },
    {
      "name": "JLCPCB_CLIENT_ID",
      "isSecret": false,
      "isRequired": false,
      "description": "JLCPCB API client identifier."
    },
    {
      "name": "JLCPCB_CLIENT_SECRET",
      "isSecret": true,
      "isRequired": false,
      "description": "JLCPCB API client secret"
    },
    {
      "name": "JLCPCB_API_BASE_URL",
      "isSecret": false,
      "isRequired": false,
      "description": "JLCPCB API base URL"
    },
    {
      "name": "JLCPCB_ENABLE_ORDERING",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable JLCPCB ordering"
    },
    {
      "name": "JLCSEARCH_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable LCSC component search"
    },
    {
      "name": "JLCSEARCH_BASE_URL",
      "isSecret": false,
      "isRequired": false,
      "description": "LCSC search API base URL"
    },
    {
      "name": "LCSC_API_KEY",
      "isSecret": true,
      "isRequired": false,
      "description": "LCSC API key"
    },
    {
      "name": "KEYLESS_SOURCING_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Allow supported public keyless component-sourcing fallbacks when vendor credentials are unavailable."
    },
    {
      "name": "SOURCING_CACHE_TTL_SECONDS",
      "isSecret": false,
      "isRequired": false,
      "description": "Component-sourcing cache lifetime in seconds (0 disables cache reuse)."
    },
    {
      "name": "VENDOR_MIN_REQUEST_INTERVAL_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Minimum delay in milliseconds between outbound requests to the same sourcing vendor."
    },
    {
      "name": "MOUSER_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable Mouser integration"
    },
    {
      "name": "MOUSER_API_KEY",
      "isSecret": true,
      "isRequired": false,
      "description": "Mouser API key"
    },
    {
      "name": "MOUSER_API_BASE_URL",
      "isSecret": false,
      "isRequired": false,
      "description": "Mouser API base URL"
    },
    {
      "name": "DIGIKEY_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable DigiKey integration"
    },
    {
      "name": "DIGIKEY_CLIENT_ID",
      "isSecret": false,
      "isRequired": false,
      "description": "DigiKey OAuth2 client identifier."
    },
    {
      "name": "DIGIKEY_CLIENT_SECRET",
      "isSecret": true,
      "isRequired": false,
      "description": "DigiKey OAuth2 client secret"
    },
    {
      "name": "DIGIKEY_SANDBOX",
      "isSecret": false,
      "isRequired": false,
      "description": "Use DigiKey sandbox environment"
    },
    {
      "name": "DIGIKEY_LOCALE",
      "isSecret": false,
      "isRequired": false,
      "description": "DigiKey locale"
    },
    {
      "name": "DIGIKEY_CURRENCY",
      "isSecret": false,
      "isRequired": false,
      "description": "DigiKey pricing currency"
    },
    {
      "name": "OAUTH_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Enable OAuth for HTTP mode"
    },
    {
      "name": "OAUTH_ISSUER",
      "isSecret": false,
      "isRequired": false,
      "description": "Expected OAuth token issuer"
    },
    {
      "name": "OAUTH_AUDIENCE",
      "isSecret": false,
      "isRequired": false,
      "description": "Expected OAuth token audience"
    },
    {
      "name": "OAUTH_JWKS_URI",
      "isSecret": false,
      "isRequired": false,
      "description": "JWKS endpoint for token signature validation"
    },
    {
      "name": "OAUTH_REQUIRED_SCOPES",
      "isSecret": false,
      "isRequired": false,
      "description": "Required OAuth token scope"
    },
    {
      "name": "OTEL_ENABLED",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: no OTLP exporter is started."
    },
    {
      "name": "OTEL_SERVICE_NAME",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: retained for a future OTLP exporter."
    },
    {
      "name": "OTEL_EXPORTER_OTLP_ENDPOINT",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: retained for a future OTLP exporter."
    },
    {
      "name": "TRACE_SAMPLE_RATE",
      "isSecret": false,
      "isRequired": false,
      "description": "Reserved; currently non-functional: no OTLP traces are emitted."
    }
  ],
  "category": "other",
  "subcategory": "more",
  "company": "",
  "categoryAuto": true,
  "checks": [
    {
      "id": "source-linked",
      "label": "Source repository linked",
      "result": "pass",
      "detail": "https://github.com/oaslananka/easyeda-mcp-pro"
    },
    {
      "id": "version-pinned",
      "label": "Version pinned",
      "result": "pass",
      "detail": "Every package has an explicit version"
    },
    {
      "id": "secrets-requested",
      "label": "Secrets requested",
      "result": "warn",
      "detail": "Asks for 6 secrets: BRIDGE_TOKEN, AI_API_KEY, JLCPCB_CLIENT_SECRET, LCSC_API_KEY, MOUSER_API_KEY, DIGIKEY_CLIENT_SECRET"
    },
    {
      "id": "known-registry",
      "label": "Known package registry",
      "result": "pass",
      "detail": "All packages come from npm, PyPI, OCI, NuGet or MCPB"
    },
    {
      "id": "namespace",
      "label": "Namespace ownership",
      "result": "info",
      "detail": "Name verified via GitHub account oaslananka"
    },
    {
      "id": "meta-text",
      "label": "Registry text aimed at the AI",
      "result": "pass",
      "detail": "Description and settings contain no hidden characters or instructions to the AI"
    },
    {
      "id": "install-scripts",
      "label": "Install scripts",
      "result": "pass",
      "detail": "easyeda-mcp-pro@1.5.5 runs nothing at install"
    },
    {
      "id": "code-flags",
      "label": "Code red flags",
      "result": "pass",
      "detail": "Read 401 files in easyeda-mcp-pro@1.5.5: no obfuscation, encoded execution, credential reads or data-collection endpoints found"
    },
    {
      "id": "ai-text",
      "label": "Text aimed at the AI",
      "result": "pass",
      "detail": "No hidden characters or instructions to the AI in 401 files, including comments and the README"
    }
  ],
  "scannedAt": "2026-10-29",
  "level": "Scanned",
  "install": [
    {
      "label": "Claude Desktop (npm)",
      "kind": "claude_desktop_json",
      "text": "{\n  \"mcpServers\": {\n    \"easyeda-mcp-pro\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"easyeda-mcp-pro@1.5.5\"\n      ]\n    }\n  }\n}"
    }
  ],
  "curated": true,
  "stars": 64,
  "archived": false,
  "pushedAt": "2026-10-28T16:46:11Z",
  "health": {
    "score": 68,
    "parts": {
      "popularity": 0.546380224607206,
      "activity": 0.6,
      "issues": 0.9863013698630136,
      "security": 0.8
    },
    "fail": 0,
    "warn": 1,
    "raw": {
      "stars": 64,
      "forks": 13,
      "downloads": 3616,
      "hn": {
        "n": 0,
        "pts": 0,
        "t": []
      },
      "issuesOpen": 3,
      "issuesClosed": 216,
      "prsMerged": 488,
      "commits90": 0,
      "release": "2026-10-28T16:46:11Z",
      "pushed": "2026-10-28T16:46:11Z",
      "growth": null,
      "growthDays": null,
      "archived": false
    },
    "at": "2026-10-31T07:35:52.424Z"
  }
}
