easyeda-mcp-pro
MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.
The record the registry holds
There is no address to call. This one is a package you install and run yourself, wherever your assistant runs.
{
"server": {
"$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": "0.35.4",
"packages": [
{
"registryType": "npm",
"identifier": "easyeda-mcp-pro",
"version": "0.35.4",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Environment mode",
"default": "development",
"name": "NODE_ENV"
},
{
"description": "Pino log level",
"default": "info",
"name": "LOG_LEVEL"
},
{
"description": "Active tool profile (core, pro, full, dev, experimental)",
"default": "core",
"name": "TOOL_PROFILE"
},
{
"description": "MCP protocol version string",
"default": "2025-11-25",
"name": "MCP_PROTOCOL_VERSION"
},
{
"description": "Bridge backend: local_bridge or experimental remote_relay",
"default": "local_bridge",
"name": "MCP_BRIDGE_BACKEND"
},
{
"description": "Optional fixed Remote Relay session id for the remote_relay backend",
"name": "MCP_REMOTE_SESSION_ID"
},
{
"description": "Server transport mode (stdio or http)",
"default": "stdio",
"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": "Reserved; currently non-functional: does not change MCP protocol negotiation.",
"format": "boolean",
"default": "false",
"name": "MCP_V2_EXPERIMENTAL"
},
{
"description": "Enable experimental raw EasyEDA runtime execution gate (dangerous; 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": "Max reconnect attempts (0 = infinite)",
"format": "number",
"default": "0",
"name": "BRIDGE_RECONNECT_MAX_ATTEMPTS"
},
{
"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": "Enable raw method execution on bridge (dangerous)",
"format": "boolean",
"default": "false",
"name": "BRIDGE_RAW_EXEC_ENABLED"
},
{
"description": "Data directory for storage",
"format": "string",
"default": ".easyeda-mcp-pro",
"name": "DATA_DIR"
},
{
"description": "SQLite database path",
"format": "string",
"default": ".easyeda-mcp-pro/easyeda-mcp-pro.sqlite",
"name": "SQLITE_PATH"
},
{
"description": "Artifact export directory",
"format": "string",
"default": ".easyeda-mcp-pro/artifacts",
"name": "ARTIFACT_DIR"
},
{
"description": "Cache directory",
"format": "string",
"default": ".easyeda-mcp-pro/cache",
"name": "CACHE_DIR"
},
{
"description": "Reserved; currently non-functional: no in-process AI provider client is invoked.",
"default": "none",
"name": "AI_PROVIDER"
},
{
"description": "Reserved; currently non-functional: retained for future provider integration only.",
"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": "Max tokens for AI responses",
"format": "number",
"default": "8000",
"name": "AI_MAX_TOKENS"
},
{
"description": "AI request timeout in ms",
"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)",
"default": "disabled",
"name": "JLCPCB_MODE"
},
{
"description": "JLCPCB API client ID",
"format": "string",
"isSecret": true,
"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": "JLCPCB default currency (USD, CNY)",
"default": "USD",
"name": "JLCPCB_DEFAULT_CURRENCY"
},
{
"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": "LCSC API secret",
"format": "string",
"isSecret": true,
"name": "LCSC_API_SECRET"
},
{
"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 ID",
"format": "string",
"isSecret": true,
"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": "OpenTelemetry service name",
"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": "OpenTelemetry trace sample rate (0.0 to 1.0)",
"format": "number",
"default": "1.0",
"name": "TRACE_SAMPLE_RATE"
}
]
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-07-27T20:14:17.893604Z",
"publishedAt": "2026-07-27T20:14:17.893604Z",
"updatedAt": "2026-07-27T20:14:17.893604Z",
"isLatest": true
}
}
}
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
MCP server
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.
The publisher's own address
https://github.com/oaslananka/easyeda-mcp-pro
The address the publisher put in their registry record, printed as they wrote it. Nobody here has opened it.