@achmadya-dev/mcp-diagram 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.
Files changed (38) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +172 -0
  3. package/dist/assets/shape-search/search-index.json +83954 -0
  4. package/dist/assets/shared/create-diagram-intro.md +52 -0
  5. package/dist/assets/shared/mermaid-reference.md +473 -0
  6. package/dist/assets/shared/xml-reference.md +479 -0
  7. package/dist/assets/vendor/app/libavoid/LICENSE +505 -0
  8. package/dist/assets/vendor/app/libavoid/libavoid.min.js +22 -0
  9. package/dist/assets/vendor/app/libavoid/libavoid.wasm +0 -0
  10. package/dist/drawio/drawio.d.ts +27 -0
  11. package/dist/drawio/drawio.d.ts.map +1 -0
  12. package/dist/drawio/drawio.js +77 -0
  13. package/dist/drawio/drawio.js.map +1 -0
  14. package/dist/drawio/utils.d.ts +29 -0
  15. package/dist/drawio/utils.d.ts.map +1 -0
  16. package/dist/drawio/utils.js +419 -0
  17. package/dist/drawio/utils.js.map +1 -0
  18. package/dist/drawio/viewer/html.d.ts +59 -0
  19. package/dist/drawio/viewer/html.d.ts.map +1 -0
  20. package/dist/drawio/viewer/html.js +6528 -0
  21. package/dist/drawio/viewer/html.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +94 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/scripts/copy-assets.d.ts +3 -0
  27. package/dist/scripts/copy-assets.d.ts.map +1 -0
  28. package/dist/scripts/copy-assets.js +28 -0
  29. package/dist/scripts/copy-assets.js.map +1 -0
  30. package/dist/scripts/generate-shape-index.d.ts +15 -0
  31. package/dist/scripts/generate-shape-index.d.ts.map +1 -0
  32. package/dist/scripts/generate-shape-index.js +347 -0
  33. package/dist/scripts/generate-shape-index.js.map +1 -0
  34. package/dist/tools/search_shapes.d.ts +2 -0
  35. package/dist/tools/search_shapes.d.ts.map +1 -0
  36. package/dist/tools/search_shapes.js +34 -0
  37. package/dist/tools/search_shapes.js.map +1 -0
  38. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/drawio/viewer/html.ts"],"names":[],"mappings":"AAAA,cAAc;AAUd;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,aAAqB,EACrB,aAAqB,EACrB,SAAwB,EACxB,OAA0B;IAE1B,IAAI,QAAQ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IACrD,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAC/C,IAAI,UAAU,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACzD,IAAI,eAAe,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;IACnE,IAAI,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAExD,8DAA8D;IAC9D,qEAAqE;IACrE,0EAA0E;IAC1E,qEAAqE;IACrE,0EAA0E;IAC1E,yEAAyE;IACzE,iEAAiE;IACjE,kEAAkE;IAClE,yEAAyE;IACzE,IAAI,cAAc,GAChB,sCAAsC;QACtC,KAAK;QACL,0BAA0B;QAC1B,6CAA6C;QAC7C,4EAA4E;QAC5E,mBAAmB;QACnB,KAAK;QACL,eAAe;QACf,KAAK;QACL,2GAA2G;QAC3G,mGAAmG;QACnG,iFAAiF;QACjF,8DAA8D;QAC9D,OAAO;QACP,8CAA8C;QAC9C,4BAA4B;QAC5B,0BAA0B;QAC1B,OAAO;QACP,6FAA6F;QAC7F,oBAAoB;QACpB,SAAS;QACT,SAAS,CAAC;IAEZ,IAAI,aAAa,GAAG,CAAC,UAAU,IAAI,eAAe,CAAC;QACjD,CAAC,CAAC,mLAAmL;YACnL,cAAc,GAAG,UAAU,GAAG,aAAa;YAC3C,gBAAgB;YAChB,sCAAsC,GAAG,eAAe,GAAG,MAAM;YACjE,QAAQ,GAAG,cAAc;YACzB,eAAe;QACjB,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA6RuB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0EjD,QAAQ;QACR,CAAC,CAAC,UAAU,GAAG,QAAQ,GAAG,YAAY;QACtC,CAAC,CAAC,8EACJ;;;cAGU,aAAa;;;MAGrB,KAAK;QACL,CAAC,CAAC,UAAU,GAAG,KAAK,GAAG,YAAY;QACnC,CAAC,CAAC,+EACJ;;MAEE,aAAa;;;;;;;;;;;;;;;MAeb,SAAS;QACT,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,YAAY;QACvC,CAAC,CAAC,uFACJ;;;;EAIF,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+ import { runMcp, ToolError } from "@achmadya-dev/mcp-core";
3
+ import { RESOURCE_MIME_TYPE } from "@achmadya-dev/mcp-core/ext-apps";
4
+ import packageJson from "../package.json" with { type: "json" };
5
+ import { z } from "zod";
6
+ import drawio, { RESOURCE_URI } from "./drawio/drawio.js";
7
+ import { createDiagram } from "./drawio/utils.js";
8
+ import { search_shapes } from "./tools/search_shapes.js";
9
+ await runMcp({
10
+ name: "diagram-mcp",
11
+ version: packageJson.version,
12
+ transport: "stdio",
13
+ tools: [...(drawio.bundle.shapeIndex?.length ? [search_shapes] : [])],
14
+ setup(server) {
15
+ const bundle = drawio.bundle;
16
+ const domain = process.env.DOMAIN;
17
+ server.registerTool("show_inline_drawio", {
18
+ title: "Show Inline draw.io",
19
+ description: bundle.description,
20
+ inputSchema: z.object({
21
+ xml: z
22
+ .string()
23
+ .optional()
24
+ .describe("draw.io XML content in mxGraphModel format. Must be well-formed XML: no XML comments (<!-- -->), no unescaped special characters in attribute values. Mutually exclusive with 'mermaid'."),
25
+ mermaid: z
26
+ .string()
27
+ .optional()
28
+ .describe("Mermaid.js diagram definition (e.g. 'graph TD\\n A-->B'). Supports 26 diagram types — see the tool description for the full list. The diagram is parsed and laid out natively (no upstream mermaid runtime) and converted to draw.io format. Mutually exclusive with 'xml'."),
29
+ postLayout: z
30
+ .enum(["elk"])
31
+ .optional()
32
+ .describe("Optional client-side ELK (Eclipse Layout Kernel) layered-flow pass applied after the diagram renders. The only value is `\"elk\"`. Vertices animate (morph) from the positions you supplied to the layered layout — they are **replaced**, so only your edge topology survives. Set it for directional/hierarchical diagrams: flowcharts, process diagrams, state diagrams, decision flows, pipelines, ER/class diagrams with clear parent→child direction. Flow direction (top-down vs left-to-right): for **Mermaid** it is taken from the flowchart code (`flowchart TD/TB` → top-down, `LR/RL` → left-to-right) — do not try to set it here; for **XML** set the optional `direction` field (defaults to top-down).\n" +
33
+ "**Omit** for diagrams whose layout carries meaning you hand-crafted: swimlanes/pools, containers, architecture / deployment / network topology with grouped regions, P&ID or circuit schematics, floor plans, UML diagrams with deliberate placement.\n\n" +
34
+ "**For Mermaid flowcharts**, the native parser does its own layout, but it produces cramped or unbalanced output once the diagram has any structural complexity. Request `postLayout: \"elk\"` whenever ANY of the following holds: ≥ ~20 nodes, OR ≥ 3 decision diamonds (`{...}` shapes), OR any feedback/back-edges (an edge that points to an earlier node, e.g. an error path looping back to a retry), OR ≥ 3 distinct endpoints — the flow direction follows the flowchart code, so you never pass `direction` for Mermaid. Skip for simple flowcharts (linear chains, < 20 nodes, no branching/back-edges) and for non-flowchart Mermaid types (sequence, class, ER, sankey, etc. — postLayout doesn't apply)."),
35
+ direction: z
36
+ .enum(["vertical", "horizontal"])
37
+ .optional()
38
+ .describe("**XML only** — the flow direction for `postLayout: \"elk\"` on XML diagrams: `vertical` (top-down) or `horizontal` (left-to-right). Defaults to `vertical`. **Ignored for Mermaid**, where direction is read from the flowchart code (`flowchart TD/TB` vs `LR/RL`). Only meaningful together with `postLayout: \"elk\"`."),
39
+ routing: z
40
+ .enum(["libavoid"])
41
+ .optional()
42
+ .describe("**XML only** — optional obstacle-avoiding orthogonal **edge-routing** pass (libavoid). The only value is `\"libavoid\"`. Unlike `postLayout`, this does **not** move any vertices — it keeps your hand-placed coordinates and only recomputes each edge's path so wires run in clean right-angle segments that route *around* the boxes instead of cutting through them. Set it for XML diagrams where you have placed nodes deliberately (architecture, network topology, deployment, swimlanes, UML, floor plans) and want tidy connectors without overlaps — exactly the diagrams where you'd OMIT `postLayout`.\n" +
43
+ "draw.io's default router is basic (straight or simple right-angle lines with **no obstacle avoidance** — wires cut straight through any box between the endpoints), so reach for `\"libavoid\"` whenever edges would otherwise cross shapes or you want uniformly clean orthogonal wiring on a layout you placed yourself. Think of `routing` and `postLayout` as **alternatives**: use `routing: \"libavoid\"` to keep your positions and only fix the wires, or `postLayout: \"elk\"` to re-lay-out the vertices — and note ELK already routes its edges decently, so when you use `postLayout` you normally should **not** also set `routing` (the combination is redundant in almost all cases). Do not add `<Array as=\"points\">` waypoints yourself when routing is set; libavoid computes them. **Ignored for Mermaid** (its native/ELK layout already routes)."),
44
+ }),
45
+ annotations: {
46
+ readOnlyHint: true,
47
+ destructiveHint: false,
48
+ idempotentHint: true,
49
+ openWorldHint: false,
50
+ },
51
+ _meta: {
52
+ ui: { resourceUri: RESOURCE_URI },
53
+ "openai/toolInvocation/invoking": "Showing inline chat...",
54
+ "openai/toolInvocation/invoked": "Diagram ready.",
55
+ },
56
+ }, async (args) => {
57
+ try {
58
+ const result = createDiagram(args, bundle.buildId);
59
+ return {
60
+ content: [
61
+ { type: "text", text: result.payload },
62
+ ...(result.validation ? [{ type: "text", text: result.validation }] : []),
63
+ ],
64
+ };
65
+ }
66
+ catch (error) {
67
+ const message = error instanceof ToolError || error instanceof Error ? error.message : "Unknown error";
68
+ return {
69
+ isError: true,
70
+ content: [{ type: "text", text: message }],
71
+ };
72
+ }
73
+ });
74
+ server.registerResource("Draw.io Diagram Viewer", RESOURCE_URI, { mimeType: RESOURCE_MIME_TYPE }, async () => ({
75
+ contents: [
76
+ {
77
+ uri: RESOURCE_URI,
78
+ mimeType: RESOURCE_MIME_TYPE,
79
+ text: bundle.html,
80
+ _meta: {
81
+ ui: {
82
+ ...(domain ? { domain } : {}),
83
+ csp: {
84
+ resourceDomains: ["https://viewer.diagrams.net", "https://app.diagrams.net"],
85
+ connectDomains: ["https://viewer.diagrams.net"],
86
+ },
87
+ },
88
+ },
89
+ },
90
+ ],
91
+ }));
92
+ },
93
+ });
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=copy-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-assets.d.ts","sourceRoot":"","sources":["../../src/scripts/copy-assets.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
6
+ const root = path.join(__dirname, "..", "..");
7
+ const srcAssets = path.join(root, "src", "assets");
8
+ const distAssets = path.join(root, "dist", "assets");
9
+ function copyDir(src, dest) {
10
+ if (!fs.existsSync(src)) {
11
+ console.warn(`[copy-assets] skip missing: ${src}`);
12
+ return;
13
+ }
14
+ fs.mkdirSync(dest, { recursive: true });
15
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
16
+ const srcPath = path.join(src, entry.name);
17
+ const destPath = path.join(dest, entry.name);
18
+ if (entry.isDirectory()) {
19
+ copyDir(srcPath, destPath);
20
+ }
21
+ else {
22
+ fs.copyFileSync(srcPath, destPath);
23
+ }
24
+ }
25
+ }
26
+ copyDir(srcAssets, distAssets);
27
+ console.log("[copy-assets] src/assets/ → dist/assets/");
28
+ //# sourceMappingURL=copy-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-assets.js","sourceRoot":"","sources":["../../src/scripts/copy-assets.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErD,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shape Search Index Generator
3
+ *
4
+ * Loads the draw.io client (app.min.js) via jsdom, initializes all sidebar
5
+ * palettes, and intercepts createVertexTemplateEntry / createEdgeTemplateEntry
6
+ * calls to capture {style, w, h, title, tags} for every shape.
7
+ *
8
+ * Usage:
9
+ * pnpm run generate:shapes
10
+ *
11
+ * Output:
12
+ * src/assets/shape-search/search-index.json
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=generate-shape-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-shape-index.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-shape-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,347 @@
1
+ /**
2
+ * Shape Search Index Generator
3
+ *
4
+ * Loads the draw.io client (app.min.js) via jsdom, initializes all sidebar
5
+ * palettes, and intercepts createVertexTemplateEntry / createEdgeTemplateEntry
6
+ * calls to capture {style, w, h, title, tags} for every shape.
7
+ *
8
+ * Usage:
9
+ * pnpm run generate:shapes
10
+ *
11
+ * Output:
12
+ * src/assets/shape-search/search-index.json
13
+ */
14
+ import { JSDOM } from "jsdom";
15
+ import { execFileSync } from "node:child_process";
16
+ import fs from "node:fs";
17
+ import path from "node:path";
18
+ import { fileURLToPath } from "node:url";
19
+ class SyncXMLHttpRequest {
20
+ readyState = 0;
21
+ status = 0;
22
+ responseText = "";
23
+ responseXML = null;
24
+ onreadystatechange = null;
25
+ onload = null;
26
+ _url = "";
27
+ open(_method, url) {
28
+ this._url = url;
29
+ }
30
+ send() {
31
+ try {
32
+ const requestUrl = this._url;
33
+ let fullUrl;
34
+ if (requestUrl.startsWith("http")) {
35
+ fullUrl = requestUrl;
36
+ }
37
+ else if (requestUrl.startsWith("/")) {
38
+ fullUrl = `${DRAWIO_BASE_URL}${requestUrl}`;
39
+ }
40
+ else {
41
+ fullUrl = `${DRAWIO_BASE_URL}/${requestUrl}`;
42
+ }
43
+ const content = fetchSync(fullUrl);
44
+ if (content != null) {
45
+ this.responseText = content;
46
+ this.status = 200;
47
+ this.readyState = 4;
48
+ try {
49
+ const parser = new DOMParser();
50
+ this.responseXML = parser.parseFromString(this.responseText, "text/xml");
51
+ }
52
+ catch {
53
+ /* ignore parse errors for non-XML files */
54
+ }
55
+ this.onreadystatechange?.();
56
+ this.onload?.();
57
+ }
58
+ else {
59
+ this.status = 404;
60
+ this.readyState = 4;
61
+ this.onreadystatechange?.();
62
+ }
63
+ }
64
+ catch {
65
+ this.status = 500;
66
+ this.readyState = 4;
67
+ }
68
+ }
69
+ setRequestHeader() { }
70
+ abort() { }
71
+ getAllResponseHeaders() {
72
+ return "";
73
+ }
74
+ getResponseHeader() {
75
+ return null;
76
+ }
77
+ overrideMimeType() { }
78
+ }
79
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
80
+ const DRAWIO_BASE_URL = "https://app.diagrams.net";
81
+ function fetchSync(url) {
82
+ try {
83
+ return execFileSync("curl", ["-sL", "--fail", url], {
84
+ maxBuffer: 50 * 1024 * 1024,
85
+ timeout: 30000,
86
+ }).toString("utf8");
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ function errorMessage(error) {
93
+ return error instanceof Error ? error.message : String(error);
94
+ }
95
+ /** Minimal 2D canvas stub so draw.io init does not hit jsdom's not-implemented paths. */
96
+ function installCanvasStub(window) {
97
+ const stub2d = {
98
+ canvas: null,
99
+ fillStyle: "",
100
+ strokeStyle: "",
101
+ lineWidth: 1,
102
+ font: "10px sans-serif",
103
+ fillRect: () => { },
104
+ strokeRect: () => { },
105
+ clearRect: () => { },
106
+ fillText: () => { },
107
+ strokeText: () => { },
108
+ measureText: (text) => ({ width: text.length * 6 }),
109
+ getImageData: () => ({ data: new Uint8ClampedArray(4), width: 1, height: 1 }),
110
+ putImageData: () => { },
111
+ createImageData: (w, h) => ({ data: new Uint8ClampedArray(w * h * 4), width: w, height: h }),
112
+ setTransform: () => { },
113
+ resetTransform: () => { },
114
+ drawImage: () => { },
115
+ save: () => { },
116
+ restore: () => { },
117
+ scale: () => { },
118
+ rotate: () => { },
119
+ translate: () => { },
120
+ transform: () => { },
121
+ beginPath: () => { },
122
+ closePath: () => { },
123
+ moveTo: () => { },
124
+ lineTo: () => { },
125
+ arc: () => { },
126
+ rect: () => { },
127
+ clip: () => { },
128
+ stroke: () => { },
129
+ fill: () => { },
130
+ createLinearGradient: () => ({ addColorStop: () => { } }),
131
+ createRadialGradient: () => ({ addColorStop: () => { } }),
132
+ createPattern: () => ({}),
133
+ };
134
+ const proto = window.HTMLCanvasElement.prototype;
135
+ proto.getContext = function () {
136
+ stub2d.canvas = this;
137
+ return stub2d;
138
+ };
139
+ proto.toDataURL = () => "data:image/png;base64,";
140
+ }
141
+ console.log(`Loading app.min.js from: ${DRAWIO_BASE_URL}/js/app.min.js`);
142
+ const appCode = fetchSync(`${DRAWIO_BASE_URL}/js/app.min.js`);
143
+ if (!appCode) {
144
+ console.error(`Failed to download app.min.js from ${DRAWIO_BASE_URL}`);
145
+ process.exit(1);
146
+ }
147
+ console.log(`Downloaded app.min.js (${(appCode.length / (1024 * 1024)).toFixed(1)} MB)`);
148
+ const capturedShapes = [];
149
+ const dom = new JSDOM("<!DOCTYPE html><html><head></head><body></body></html>", {
150
+ url: "https://app.diagrams.net/?dev=1&test=1&createindex=1",
151
+ pretendToBeVisual: true,
152
+ runScripts: "dangerously",
153
+ beforeParse(win) {
154
+ const window = win;
155
+ // SyncXMLHttpRequest replaces browser XHR for palette asset fetches.
156
+ Object.defineProperty(window, "XMLHttpRequest", { value: SyncXMLHttpRequest, configurable: true });
157
+ window.mxBasePath = "/mxgraph/src";
158
+ window.mxLoadResources = false;
159
+ window.mxForceIncludes = false;
160
+ window.mxLoadStylesheets = false;
161
+ window.urlParams = { createindex: "1", dev: "1", test: "1" };
162
+ window.STENCIL_PATH = "/stencils";
163
+ window.GRAPH_IMAGE_PATH = "/img";
164
+ window.IMAGE_PATH = "/images";
165
+ window.STYLE_PATH = "/styles";
166
+ window.RESOURCES_PATH = "/resources";
167
+ window.DRAWIO_BASE_URL = "https://app.diagrams.net";
168
+ window.DRAWIO_SERVER_URL = "https://app.diagrams.net";
169
+ window.DRAWIO_LOG_URL = "";
170
+ },
171
+ });
172
+ installCanvasStub(dom.window);
173
+ const w = dom.window;
174
+ try {
175
+ w.eval(appCode);
176
+ }
177
+ catch (error) {
178
+ console.error("Failed to load app.min.js:", errorMessage(error));
179
+ process.exit(1);
180
+ }
181
+ console.log(`app.min.js loaded — Sidebar: ${typeof w.Sidebar}, Graph: ${typeof w.Graph}`);
182
+ const origVertexEntry = w.Sidebar.prototype.createVertexTemplateEntry;
183
+ w.Sidebar.prototype.createVertexTemplateEntry = function (style, width, height, value, title, showLabel, showTitle, tags) {
184
+ if (typeof style === "string" && style.length > 0) {
185
+ const titleStr = typeof title === "string" ? title : "";
186
+ let normalizedTags = "";
187
+ if (typeof tags === "string" && tags.length > 0) {
188
+ normalizedTags = tags;
189
+ if (titleStr.length > 0) {
190
+ normalizedTags += " " + titleStr;
191
+ }
192
+ }
193
+ else {
194
+ normalizedTags = titleStr.length > 0 ? titleStr.toLowerCase() : "";
195
+ }
196
+ capturedShapes.push({
197
+ style,
198
+ w: Math.round(Number(width)) || 0,
199
+ h: Math.round(Number(height)) || 0,
200
+ title: titleStr,
201
+ tags: normalizedTags,
202
+ type: "vertex",
203
+ });
204
+ }
205
+ return origVertexEntry.apply(this, [style, width, height, value, title, showLabel, showTitle, tags]);
206
+ };
207
+ const origEdgeEntry = w.Sidebar.prototype.createEdgeTemplateEntry;
208
+ w.Sidebar.prototype.createEdgeTemplateEntry = function (style, width, height, value, title, showLabel, tags) {
209
+ if (typeof style === "string" && style.length > 0) {
210
+ const titleStr = typeof title === "string" ? title : "";
211
+ const tagsStr = typeof tags === "string" ? tags : "";
212
+ capturedShapes.push({
213
+ style,
214
+ w: Math.round(Number(width)) || 0,
215
+ h: Math.round(Number(height)) || 0,
216
+ title: titleStr,
217
+ tags: tagsStr.length > 0 ? tagsStr : titleStr.length > 0 ? titleStr.toLowerCase() : "",
218
+ type: "edge",
219
+ });
220
+ }
221
+ return origEdgeEntry.apply(this, [style, width, height, value, title, showLabel, tags]);
222
+ };
223
+ const container = w.document.createElement("div");
224
+ container.style.width = "800px";
225
+ container.style.height = "600px";
226
+ w.document.body.appendChild(container);
227
+ const themes = {};
228
+ try {
229
+ const defaultXml = fetchSync(`${DRAWIO_BASE_URL}/styles/default.xml`);
230
+ if (defaultXml) {
231
+ const themeDoc = new w.DOMParser().parseFromString(defaultXml, "text/xml");
232
+ themes[w.Graph.prototype.defaultThemeName] = themeDoc.documentElement;
233
+ }
234
+ }
235
+ catch (error) {
236
+ console.warn("Could not load default theme:", errorMessage(error));
237
+ }
238
+ const graph = new w.Graph(container, null, null, null, themes);
239
+ const editor = new w.Editor(false, null, null, graph);
240
+ const sidebar = Object.create(w.Sidebar.prototype);
241
+ sidebar.editorUi = {
242
+ editor,
243
+ container,
244
+ isOffline: () => true,
245
+ createTemporaryGraph: (stylesheet) => w.Graph.createOffscreenGraph(stylesheet),
246
+ addListener: () => { },
247
+ fireEvent: () => { },
248
+ getServiceName: () => "draw.io",
249
+ getBaseUrl: () => "https://app.diagrams.net",
250
+ formatEnabled: true,
251
+ };
252
+ sidebar.taglist = {};
253
+ sidebar.currentSearchEntryLibrary = null;
254
+ sidebar.createdSearchIndex = [];
255
+ sidebar.shapetags = {};
256
+ sidebar.customEntries = null;
257
+ sidebar.appendCustomLibraries = false;
258
+ sidebar.addStencilsToIndex = false;
259
+ sidebar.styleToLibs = {};
260
+ sidebar.defaultImageWidth = 80;
261
+ sidebar.defaultImageHeight = 80;
262
+ sidebar.palettes = {};
263
+ sidebar.graph = graph;
264
+ sidebar.container = w.document.createElement("div");
265
+ sidebar.wrapper = w.document.createElement("div");
266
+ sidebar.container.appendChild(sidebar.wrapper);
267
+ w.document.body.appendChild(sidebar.container);
268
+ sidebar.initialDefaultVertexStyle = graph.getStylesheet().getDefaultVertexStyle() || { fontSize: 12 };
269
+ sidebar.initialDefaultEdgeStyle = graph.getStylesheet().getDefaultEdgeStyle() || {};
270
+ sidebar.showPalettes = () => { };
271
+ sidebar.showEntries = () => { };
272
+ sidebar.addSearchPalette = () => { };
273
+ sidebar.createItem = () => w.document.createElement("a");
274
+ sidebar.addPalette = (_id, _title, _expanded, fn) => {
275
+ try {
276
+ fn?.(w.document.createElement("div"));
277
+ }
278
+ catch {
279
+ /* ignore UI errors during palette building */
280
+ }
281
+ };
282
+ sidebar.addPaletteFunctions = () => { };
283
+ if (!graph.setLinkForCell) {
284
+ graph.setLinkForCell = () => { };
285
+ }
286
+ if (!graph.setAttributeForCell) {
287
+ graph.setAttributeForCell = () => { };
288
+ }
289
+ if (!graph.setTooltipForCell) {
290
+ graph.setTooltipForCell = () => { };
291
+ }
292
+ if (w.Sidebar.prototype.tagIndex) {
293
+ sidebar.addTagIndex(w.Graph.decompress(w.Sidebar.prototype.tagIndex));
294
+ console.log(`tagIndex loaded — shapetags: ${Object.keys(sidebar.shapetags).length}`);
295
+ }
296
+ console.log("Running initPalettes...");
297
+ try {
298
+ sidebar.initPalettes();
299
+ }
300
+ catch (error) {
301
+ console.warn("initPalettes encountered an error (partial results may still be usable):", errorMessage(error));
302
+ }
303
+ console.log(`initPalettes completed — captured ${capturedShapes.length} shapes`);
304
+ const seen = new Set();
305
+ const deduplicated = [];
306
+ for (const shape of capturedShapes) {
307
+ if (!seen.has(shape.style)) {
308
+ seen.add(shape.style);
309
+ deduplicated.push(shape);
310
+ }
311
+ }
312
+ console.log(`After deduplication: ${deduplicated.length} unique shapes`);
313
+ let titleFixCount = 0;
314
+ for (const shape of deduplicated) {
315
+ if (shape.title.length === 0 && shape.tags.length > 0) {
316
+ const style = shape.style;
317
+ let derived = null;
318
+ const resIconMatch = style.match(/resIcon=mxgraph\.[^;]+\.([^;]+)/);
319
+ const shapeMatch = style.match(/shape=mxgraph\.[^;]+\.([^;]+)/);
320
+ if (resIconMatch) {
321
+ derived = resIconMatch[1];
322
+ }
323
+ else if (shapeMatch) {
324
+ derived = shapeMatch[1];
325
+ }
326
+ if (!derived) {
327
+ const imageMatch = style.match(/image=[^;]*\/([^/;]+?)(?:\.\w+)?(?:;|$)/);
328
+ if (imageMatch) {
329
+ derived = imageMatch[1];
330
+ }
331
+ }
332
+ if (derived) {
333
+ shape.title = derived.replace(/[_-]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
334
+ titleFixCount++;
335
+ }
336
+ }
337
+ }
338
+ console.log(`Derived ${titleFixCount} titles from style attributes`);
339
+ const outPath = path.join(__dirname, "..", "assets", "shape-search", "search-index.json");
340
+ fs.writeFileSync(outPath, JSON.stringify(deduplicated, null, 2));
341
+ const sizeMB = (fs.statSync(outPath).size / (1024 * 1024)).toFixed(2);
342
+ console.log(`Written to ${outPath} (${sizeMB} MB)`);
343
+ const vertices = deduplicated.filter((s) => s.type === "vertex").length;
344
+ const edges = deduplicated.filter((s) => s.type === "edge").length;
345
+ console.log(` Vertices: ${vertices}, Edges: ${edges}`);
346
+ dom.window.close();
347
+ //# sourceMappingURL=generate-shape-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-shape-index.js","sourceRoot":"","sources":["../../src/scripts/generate-shape-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const search_shapes: import("@achmadya-dev/mcp-core").RegisterableTool;
2
+ //# sourceMappingURL=search_shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_shapes.d.ts","sourceRoot":"","sources":["../../src/tools/search_shapes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,mDA+BxB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { defineTool, ToolError } from "@achmadya-dev/mcp-core";
2
+ import { z } from "zod";
3
+ import drawio from "../drawio/drawio.js";
4
+ import { searchShapes } from "../drawio/utils.js";
5
+ export const search_shapes = defineTool({
6
+ name: "search_shapes",
7
+ description: "Search the draw.io shape library by keywords. Returns matching shapes with " +
8
+ "their exact style strings, dimensions, and titles. Use ONLY for diagrams that " +
9
+ "need industry-specific or branded icons (cloud architecture, network topology, " +
10
+ "P&ID, electrical, Cisco, Kubernetes, BPMN). Do NOT use for standard diagram " +
11
+ "types like flowcharts, UML, ERD, org charts, or mind maps — these use basic " +
12
+ "geometric shapes (rectangles, diamonds, circles, cylinders) that are already " +
13
+ "covered in the XML reference. Also skip if the user asks to use basic/simple " +
14
+ "shapes or says not to search. The style string from the results can be " +
15
+ "used directly in mxCell style attributes.",
16
+ inputSchema: z.object({
17
+ query: z
18
+ .string()
19
+ .describe("Space-separated search keywords (e.g. 'pid globe valve', 'aws lambda', 'cisco router', 'kubernetes pod')"),
20
+ limit: z
21
+ .number()
22
+ .optional()
23
+ .describe("Maximum number of results to return (default: 10, max: 50)"),
24
+ }),
25
+ handler: async ({ query, limit }) => {
26
+ const shapeIndex = drawio.bundle.shapeIndex;
27
+ const results = searchShapes(shapeIndex ?? [], query, Math.min(limit ?? 10, 50));
28
+ if (results.length === 0) {
29
+ throw new ToolError("No shapes found for query: " + query);
30
+ }
31
+ return results;
32
+ },
33
+ });
34
+ //# sourceMappingURL=search_shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_shapes.js","sourceRoot":"","sources":["../../src/tools/search_shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,6EAA6E;QAC7E,gFAAgF;QAChF,iFAAiF;QACjF,8EAA8E;QAC9E,8EAA8E;QAC9E,+EAA+E;QAC/E,+EAA+E;QAC/E,yEAAyE;QACzE,2CAA2C;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CACP,0GAA0G,CAC3G;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAsC,CAAC;QACxE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,SAAS,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC,CAAC"}