easyeda-mcp-pro 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,19 +1,49 @@
1
- # easyeda-mcp-pro
1
+ <div align="center">
2
2
 
3
- **Production-grade MCP server for EasyEDA Pro: safe PCB design inspection, BOM sourcing, manufacturing export, and AI-assisted hardware review.**
3
+ # easyeda-mcp-pro
4
4
 
5
- [![CI](https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml/badge.svg)](https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml)
6
- [![npm version](https://img.shields.io/npm/v/easyeda-mcp-pro.svg)](https://www.npmjs.com/package/easyeda-mcp-pro)
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
- [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13406/badge)](https://www.bestpractices.dev/projects/13406)
9
- [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/oaslananka/easyeda-mcp-pro)
5
+ <p>
6
+ Production-grade MCP server for EasyEDA Pro: safe PCB design inspection, BOM sourcing, manufacturing export, and AI-assisted hardware review.
7
+ </p>
10
8
 
11
- <p align="center">
12
- <a href="https://www.buymeacoffee.com/oaslananka">
13
- <img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=%E2%98%95&slug=oaslananka&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff" alt="Buy me a coffee" />
9
+ <p>
10
+ <a href="https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml">
11
+ <img src="https://github.com/oaslananka/easyeda-mcp-pro/actions/workflows/ci.yml/badge.svg" alt="CI status" />
12
+ </a>
13
+ <a href="https://www.npmjs.com/package/easyeda-mcp-pro">
14
+ <img src="https://img.shields.io/npm/v/easyeda-mcp-pro.svg?logo=npm" alt="npm version" />
15
+ </a>
16
+ <a href="https://www.npmjs.com/package/easyeda-mcp-pro">
17
+ <img src="https://img.shields.io/npm/dt/easyeda-mcp-pro?logo=npm&label=total%20downloads" alt="npm total downloads" />
18
+ </a>
19
+ <a href="https://www.npmjs.com/package/easyeda-mcp-pro">
20
+ <img src="https://img.shields.io/node/v/easyeda-mcp-pro" alt="supported Node.js version" />
21
+ </a>
22
+ <a href="https://opensource.org/licenses/MIT">
23
+ <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" />
24
+ </a>
25
+ <a href="https://www.bestpractices.dev/projects/13406">
26
+ <img src="https://www.bestpractices.dev/projects/13406/badge" alt="OpenSSF Best Practices" />
27
+ </a>
28
+ <a href="https://github.com/oaslananka/easyeda-mcp-pro/security/policy">
29
+ <img src="https://img.shields.io/badge/security-policy-blue" alt="Security policy" />
30
+ </a>
31
+ <a href="https://deepwiki.com/oaslananka/easyeda-mcp-pro">
32
+ <img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki" />
14
33
  </a>
15
34
  </p>
16
35
 
36
+ <p>
37
+ <strong>Compliance docs:</strong>
38
+ <a href="THIRD_PARTY_NOTICES.md">Third-Party Notices</a>
39
+ ·
40
+ <a href="docs/vendor-terms.md">Vendor Terms and Unsupported Workflows</a>
41
+ ·
42
+ <a href="docs/OPENSSF_BEST_PRACTICES.md">OpenSSF Best Practices</a>
43
+ </p>
44
+
45
+ </div>
46
+
17
47
  ---
18
48
 
19
49
  ## Quick Start
@@ -46,7 +76,7 @@ For advanced configurations, manual instructions, and specific clients, see [Ins
46
76
 
47
77
  ## Overview
48
78
 
49
- easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes 52 profile-gated MCP tools for schematic inspection and editing, controlled EasyEDA Pro API calls, BOM management, design rule checks, PCB board analysis, fabrication exports, and supplier integration.
79
+ easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes up to 60 profile-gated MCP tools for schematic inspection and editing, controlled EasyEDA Pro API calls, BOM management, design rule checks, PCB board analysis, fabrication exports, diagnostics, and supplier integration.
50
80
 
51
81
  The server connects to EasyEDA Pro via a WebSocket bridge extension, enabling real-time access to open project data. It integrates with JLCPCB, LCSC, Mouser, and DigiKey for BOM sourcing and pricing.
52
82
 
@@ -456,6 +486,24 @@ When `OAUTH_ENABLED=true`, every request to `/mcp` must include an `Authorizatio
456
486
 
457
487
  The server enforces startup safety checks: **non-loopback `HTTP_HOST` without OAuth is rejected**, and `HTTP_AUTH_DISABLED=true` is rejected outside non-production loopback deployments.
458
488
 
489
+ ### Docker defaults
490
+
491
+ The Docker image starts in HTTP mode with `HTTP_HOST=127.0.0.1` so the default container boot path is safe and passes the same startup safety checks as local HTTP mode. For an externally reachable container, override the bind address and configure OAuth plus an explicit origin allowlist:
492
+
493
+ ```bash
494
+ docker run --rm \
495
+ -e HTTP_HOST=0.0.0.0 \
496
+ -e ALLOWED_ORIGINS=https://your-client.example.com \
497
+ -e OAUTH_ENABLED=true \
498
+ -e OAUTH_ISSUER=https://issuer.example.com/ \
499
+ -e OAUTH_JWKS_URI=https://issuer.example.com/.well-known/jwks.json \
500
+ -e OAUTH_AUDIENCE=easyeda-mcp-pro \
501
+ -p 127.0.0.1:3000:3000 \
502
+ ghcr.io/oaslananka/easyeda-mcp-pro:latest
503
+ ```
504
+
505
+ Do not expose non-loopback HTTP without OAuth. Use a reverse proxy or platform gateway for TLS termination and external access.
506
+
459
507
  #### HTTP Security Features
460
508
 
461
509
  - **Rate limiting**: Per-IP sliding window (configurable via `HTTP_RATE_LIMIT_MAX`), returns `429 Too Many Requests` with retry-after header
@@ -468,7 +516,14 @@ See `.env.example` for the complete list of configuration variables.
468
516
 
469
517
  ## MCP Tools
470
518
 
471
- The server currently registers 50 default profile-gated tools. Tools are filtered by the active `TOOL_PROFILE`: `core` exposes the normal workflow tools, `pro` adds manufacturing exports, `full` adds controlled documented EasyEDA API calls, and `dev` adds runtime probes for debugging.
519
+ The server currently registers up to 60 profile-gated tools. Tools are filtered by the active `TOOL_PROFILE`:
520
+
521
+ - `core`: 42 tools
522
+ - `pro`: 47 tools
523
+ - `full`: 56 tools
524
+ - `dev`: 60 tools
525
+
526
+ `core` exposes the standard workflow tools, `pro` adds manufacturing exports, `full` adds controlled documented EasyEDA API calls, and `dev` adds runtime probes for debugging.
472
527
 
473
528
  Capability scopes add a second authorization layer when `TOOL_SCOPES` is set. Leave it empty for the default local all-capabilities mode, or restrict it with comma/space separated scopes such as `diagnostics:read`, `schematic:read`, `schematic:write`, `bom:read`, `bom:source`, `checks:read`, `pcb:read`, `pcb:write`, `export:write`, `api:read`, `api:write`, and `bridge:execute`.
474
529
 
@@ -568,7 +623,7 @@ The schematic write APIs use EasyEDA Pro extension APIs that EasyEDA currently m
568
623
  │ (via Plugin) │ Protocol │ └───────────────┘ │
569
624
  └─────────────────┘ │ ┌───────────────┐ │
570
625
  │ │ ToolRegistry │ │
571
- │ │ (41 tools) │ │
626
+ │ │ (up to 60 tools) │ │
572
627
  │ └───────────────┘ │
573
628
  │ ┌───────────────┐ │
574
629
  │ │ Storage │──┼──► SQLite
@@ -712,6 +767,18 @@ This repository uses automated workflows to manage dependencies and releases:
712
767
 
713
768
  ---
714
769
 
770
+ ## Support the project
771
+
772
+ If this project helps you save time while working with EasyEDA Pro, BOM workflows, or MCP integrations, you can support ongoing development here:
773
+
774
+ <p align="left">
775
+ <a href="https://www.buymeacoffee.com/oaslananka">
776
+ <img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=%E2%98%95&slug=oaslananka&button_colour=FFDD00&font_colour=000000&font_family=Inter&outline_colour=000000&coffee_colour=ffffff" alt="Buy me a coffee" />
777
+ </a>
778
+ </p>
779
+
780
+ ---
781
+
715
782
  ## License
716
783
 
717
784
  [MIT](LICENSE)
@@ -1 +1 @@
1
- export declare const SERVER_VERSION = "0.17.0";
1
+ export declare const SERVER_VERSION = "0.17.1";
@@ -1,2 +1,2 @@
1
- export const SERVER_VERSION = '0.17.0'; // x-release-please-version
1
+ export const SERVER_VERSION = '0.17.1'; // x-release-please-version
2
2
  //# sourceMappingURL=version.js.map
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easyeda-mcp-pro",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "mcpName": "io.github.oaslananka/easyeda-mcp-pro",
5
5
  "description": "MCP server for EasyEDA Pro: PCB inspection, BOM, exports, and hardware review.",
6
6
  "keywords": [
@@ -72,7 +72,8 @@
72
72
  "check:metadata": "node scripts/check-metadata.mjs",
73
73
  "inventory:capture": "tsx scripts/capture-runtime-inventory.mts",
74
74
  "inventory:diff": "tsx scripts/diff-runtime-inventory.mts",
75
- "eval:golden": "tsx scripts/run-evals.mts"
75
+ "eval:golden": "tsx scripts/run-evals.mts",
76
+ "eval:golden:update": "tsx scripts/run-evals.mts --update-baseline"
76
77
  },
77
78
  "dependencies": {
78
79
  "@modelcontextprotocol/sdk": "^1.29.0",