@fragments-sdk/mcp 0.2.2 → 0.3.0

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 ADDED
@@ -0,0 +1,53 @@
1
+ # @fragments-sdk/mcp
2
+
3
+ Standalone MCP server for the Fragments design system. Gives AI coding assistants (Claude Code, Cursor, etc.) semantic search over components, blocks, and tokens — no Playwright or build tools required.
4
+
5
+ ## Setup
6
+
7
+ Add to your editor's MCP config:
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "fragments": {
13
+ "command": "npx",
14
+ "args": ["@fragments-sdk/mcp"]
15
+ }
16
+ }
17
+ }
18
+ ```
19
+
20
+ The server auto-discovers `fragments.json` by walking up from cwd and scanning `node_modules`.
21
+
22
+ ## Tools
23
+
24
+ | Tool | Description |
25
+ |------|-------------|
26
+ | `fragments_discover` | List, search, or get AI-powered component suggestions |
27
+ | `fragments_inspect` | Full component details — props, examples, guidelines |
28
+ | `fragments_blocks` | Composition patterns (e.g. "Login Form", "Settings Page") |
29
+ | `fragments_tokens` | CSS custom properties by category |
30
+ | `fragments_implement` | One-shot: components + blocks + tokens for a use case |
31
+ | `fragments_render` | Render a component screenshot (requires dev server) |
32
+ | `fragments_fix` | Generate token-compliance patches (requires dev server) |
33
+
34
+ ## How search works
35
+
36
+ Queries run through **hybrid search** — Convex-hosted vector search (Voyage-Code-3 embeddings) fused with local keyword scoring via Reciprocal Rank Fusion. If Convex is unreachable, falls back silently to keyword-only.
37
+
38
+ ## Options
39
+
40
+ ```
41
+ -p, --project-root <path> Project root (default: cwd)
42
+ -u, --viewer-url <url> Dev server URL for render/fix tools
43
+ ```
44
+
45
+ ## Convex backend
46
+
47
+ The `convex/` directory contains the hosted search backend:
48
+
49
+ - **schema.ts** — `entries` table with vector index (components, blocks, tokens)
50
+ - **search.ts** — HTTP action that embeds queries with Voyage-Code-3 and runs vector search
51
+ - **ingest.ts** — Mutation to upsert entries at publish time
52
+
53
+ Index entries: `pnpm --filter @fragments-sdk/mcp index` (requires `VOYAGE_API_KEY` and `CONVEX_URL`).
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@fragments-sdk/mcp",
3
- "version": "0.2.2",
4
- "description": "MCP server for AI agent integration with Fragments",
3
+ "version": "0.3.0",
4
+ "description": "Standalone MCP server for Fragments design system — zero-config component discovery with semantic search",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "fragments-mcp": "./dist/bin.js"
8
8
  },
9
+ "main": "./dist/server.js",
10
+ "module": "./dist/server.js",
11
+ "types": "./dist/server.d.ts",
9
12
  "exports": {
10
13
  ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
14
+ "types": "./dist/server.d.ts",
15
+ "import": "./dist/server.js"
13
16
  }
14
17
  },
15
- "main": "./dist/index.js",
16
- "types": "./dist/index.d.ts",
17
18
  "publishConfig": {
18
19
  "access": "public"
19
20
  },
@@ -24,27 +25,17 @@
24
25
  "@modelcontextprotocol/sdk": "^1.0.0"
25
26
  },
26
27
  "devDependencies": {
27
- "@types/node": "^20.10.0",
28
- "tsup": "^8.0.1",
29
- "typescript": "^5.7.2",
30
- "vitest": "^2.1.9",
31
- "@fragments/core": "0.2.0",
32
- "@fragments/service": "0.1.1"
33
- },
34
- "peerDependencies": {
35
- "typescript": "^5.0.0",
36
- "playwright": "^1.40.0"
37
- },
38
- "peerDependenciesMeta": {
39
- "playwright": {
40
- "optional": true
41
- }
28
+ "@types/node": "^22.0.0",
29
+ "convex": "^1.17.0",
30
+ "tsup": "^8.3.5",
31
+ "tsx": "^4.19.0",
32
+ "typescript": "^5.7.2"
42
33
  },
43
34
  "scripts": {
44
35
  "build": "tsup",
45
36
  "dev": "tsup --watch",
46
- "test": "vitest run",
47
37
  "typecheck": "tsc --noEmit",
48
- "clean": "rm -rf dist"
38
+ "clean": "rm -rf dist",
39
+ "index": "tsx scripts/index-components.ts"
49
40
  }
50
41
  }
package/dist/bin.d.ts DELETED
@@ -1 +0,0 @@
1
- #!/usr/bin/env node
package/dist/bin.js DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
- import {
4
- startMcpServer
5
- } from "./chunk-OQOBENAX.js";
6
- import "./chunk-7OMNY6JX.js";
7
-
8
- // src/bin.ts
9
- var args = process.argv.slice(2);
10
- var projectRoot = process.cwd();
11
- var viewerUrl;
12
- for (let i = 0; i < args.length; i++) {
13
- const arg = args[i];
14
- if (arg === "--project-root" || arg === "-p") {
15
- projectRoot = args[++i] ?? projectRoot;
16
- } else if (arg === "--viewer-url" || arg === "-u") {
17
- viewerUrl = args[++i];
18
- } else if (arg === "--help" || arg === "-h") {
19
- console.log(`
20
- Usage: fragments-mcp [options]
21
-
22
- Options:
23
- -p, --project-root <path> Project root directory (default: cwd)
24
- -u, --viewer-url <url> Viewer URL (default: http://localhost:6006)
25
- -h, --help Show this help message
26
- `);
27
- process.exit(0);
28
- }
29
- }
30
- startMcpServer({
31
- projectRoot,
32
- viewerUrl
33
- }).catch((error) => {
34
- console.error("Failed to start MCP server:", error);
35
- process.exit(1);
36
- });
37
- //# sourceMappingURL=bin.js.map
package/dist/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { startMcpServer } from './server.js';\n\n// Parse command line arguments\nconst args = process.argv.slice(2);\nlet projectRoot = process.cwd();\nlet viewerUrl: string | undefined;\n\nfor (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n if (arg === '--project-root' || arg === '-p') {\n projectRoot = args[++i] ?? projectRoot;\n } else if (arg === '--viewer-url' || arg === '-u') {\n viewerUrl = args[++i];\n } else if (arg === '--help' || arg === '-h') {\n console.log(`\nUsage: fragments-mcp [options]\n\nOptions:\n -p, --project-root <path> Project root directory (default: cwd)\n -u, --viewer-url <url> Viewer URL (default: http://localhost:6006)\n -h, --help Show this help message\n`);\n process.exit(0);\n }\n}\n\n// Start server\nstartMcpServer({\n projectRoot,\n viewerUrl,\n}).catch((error) => {\n console.error('Failed to start MCP server:', error);\n process.exit(1);\n});\n"],"mappings":";;;;;;;;AAIA,IAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,IAAI,cAAc,QAAQ,IAAI;AAC9B,IAAI;AAEJ,SAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAM,MAAM,KAAK,CAAC;AAElB,MAAI,QAAQ,oBAAoB,QAAQ,MAAM;AAC5C,kBAAc,KAAK,EAAE,CAAC,KAAK;AAAA,EAC7B,WAAW,QAAQ,kBAAkB,QAAQ,MAAM;AACjD,gBAAY,KAAK,EAAE,CAAC;AAAA,EACtB,WAAW,QAAQ,YAAY,QAAQ,MAAM;AAC3C,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOf;AACG,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAGA,eAAe;AAAA,EACb;AAAA,EACA;AACF,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,UAAQ,MAAM,+BAA+B,KAAK;AAClD,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}