vizo-mcp 0.1.0 → 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 (47) hide show
  1. package/README.md +15 -2
  2. package/dist/fonts/CascadiaCode-Regular.ttf +0 -0
  3. package/dist/fonts/CascadiaCode-Regular.woff2 +0 -0
  4. package/dist/fonts/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.ttf +0 -0
  5. package/dist/fonts/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
  6. package/dist/fonts/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.ttf +0 -0
  7. package/dist/fonts/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
  8. package/dist/fonts/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.ttf +0 -0
  9. package/dist/fonts/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
  10. package/dist/fonts/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.ttf +0 -0
  11. package/dist/fonts/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
  12. package/dist/fonts/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.ttf +0 -0
  13. package/dist/fonts/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
  14. package/dist/fonts/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.ttf +0 -0
  15. package/dist/fonts/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
  16. package/dist/fonts/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.ttf +0 -0
  17. package/dist/fonts/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
  18. package/dist/fonts/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.ttf +0 -0
  19. package/dist/fonts/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
  20. package/dist/fonts/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.ttf +0 -0
  21. package/dist/fonts/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
  22. package/dist/fonts/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.ttf +0 -0
  23. package/dist/fonts/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
  24. package/dist/fonts/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.ttf +0 -0
  25. package/dist/fonts/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
  26. package/dist/fonts/LiberationSans-Regular.ttf +0 -0
  27. package/dist/fonts/LiberationSans-Regular.woff2 +0 -0
  28. package/dist/fonts/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.ttf +0 -0
  29. package/dist/fonts/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
  30. package/dist/fonts/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.ttf +0 -0
  31. package/dist/fonts/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
  32. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.ttf +0 -0
  33. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
  34. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.ttf +0 -0
  35. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
  36. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.ttf +0 -0
  37. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
  38. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.ttf +0 -0
  39. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
  40. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.ttf +0 -0
  41. package/dist/fonts/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
  42. package/dist/fonts/Virgil-Regular.ttf +0 -0
  43. package/dist/fonts/Virgil-Regular.woff2 +0 -0
  44. package/dist/fonts/fonts.json +146 -0
  45. package/dist/index.js +2986 -164
  46. package/fonts/README.md +15 -0
  47. package/package.json +13 -9
package/README.md CHANGED
@@ -3,9 +3,22 @@
3
3
  stdio MCP proxy for a [Vizo](https://vizo.twinkle.hk) whiteboard server, for MCP clients that only speak stdio.
4
4
 
5
5
  ```sh
6
- claude mcp add vizo -- npx -y vizo-mcp --url https://vizo.twinkle.hk --token vz_…
6
+ claude mcp add vizo -- npx -y vizo-mcp@latest --url https://vizo.twinkle.hk --token vz_…
7
7
  ```
8
8
 
9
9
  Create a token at `<url>/settings`. `VIZO_URL` and `VIZO_TOKEN` work instead of the flags.
10
10
 
11
- Diagrams (`draw_diagram`, `update_diagram`) are laid out on your machine and sent to the server finished. The proxy's layout version must match the server's: if they differ, the server refuses the call and asks you to update, e.g. `npx -y vizo-mcp@latest`.
11
+ Diagrams (`draw_diagram`, `update_diagram`) are laid out on your machine and sent to the server finished. The proxy's layout version must match the server's: if they differ, the server refuses the call and asks you to update. With `vizo-mcp@latest` in the command, as above, restarting your MCP client is enough: npx checks for a newer version on each start (without `@latest` it keeps reusing the copy it cached first).
12
+
13
+ ## Adding images
14
+
15
+ `add_image` also takes a local file `path` here: the proxy reads the file and uploads it. The image is placed on the board, or with `place: false` only uploaded, and the returned `fileId` can be used as a flowchart or component node's `image` to show the picture in a diagram.
16
+
17
+ ## Exporting images
18
+
19
+ The proxy adds an `export_image` tool: it saves a board, or chosen diagrams or elements, as PNG or SVG on your machine. It also returns a small preview, so the agent can check what it drew. Rendering happens locally: the server only hands over the board's elements and images (`get_board_scene`, which only the proxy can see). It uses the same hand-drawn strokes and fonts as the editor.
20
+
21
+ - SVG files embed the fonts they use.
22
+ - PNGs are drawn with [resvg](https://github.com/RazrFalcon/resvg). Characters the bundled fonts lack (e.g. Chinese, Japanese) use a system font. Emoji are left out of PNGs, because resvg can't draw color emoji fonts; SVGs keep them.
23
+ - Fonts are Excalidraw's, under their own licenses: see `fonts/README.md`.
24
+
Binary file
Binary file
@@ -0,0 +1,146 @@
1
+ [
2
+ {
3
+ "family": "Excalifont",
4
+ "id": 5,
5
+ "file": "Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2",
6
+ "unicodeRange": "U+20-7e,U+a0-a3,U+a5-a6,U+a8-ab,U+ad-b1,U+b4,U+b6-b8,U+ba-ff,U+131,U+152-153,U+2bc,U+2c6,U+2da,U+2dc,U+304,U+308,U+2013-2014,U+2018-201a,U+201c-201e,U+2020,U+2022,U+2024-2026,U+2030,U+2039-203a,U+20ac,U+2122,U+2212",
7
+ "ttfFamily": "Excalifont"
8
+ },
9
+ {
10
+ "family": "Excalifont",
11
+ "id": 5,
12
+ "file": "Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2",
13
+ "unicodeRange": "U+100-130,U+132-137,U+139-149,U+14c-151,U+154-17e,U+192,U+1fc-1ff,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+2113",
14
+ "ttfFamily": "Excalifont 2"
15
+ },
16
+ {
17
+ "family": "Excalifont",
18
+ "id": 5,
19
+ "file": "Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2",
20
+ "unicodeRange": "U+400-45f,U+490-491,U+2116",
21
+ "ttfFamily": "Excalifont 3"
22
+ },
23
+ {
24
+ "family": "Excalifont",
25
+ "id": 5,
26
+ "file": "Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2",
27
+ "unicodeRange": "U+37e,U+384-38a,U+38c,U+38e-393,U+395-3a1,U+3a3-3a8,U+3aa-3cf,U+3d7",
28
+ "ttfFamily": "Excalifont 4"
29
+ },
30
+ {
31
+ "family": "Excalifont",
32
+ "id": 5,
33
+ "file": "Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2",
34
+ "unicodeRange": "U+2c7,U+2d8-2d9,U+2db,U+2dd,U+302,U+306-307,U+30a-30c,U+326-328,U+212e,U+2211,U+fb01-fb02",
35
+ "ttfFamily": "Excalifont 5"
36
+ },
37
+ {
38
+ "family": "Excalifont",
39
+ "id": 5,
40
+ "file": "Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2",
41
+ "unicodeRange": "U+462-463,U+472-475,U+4d8-4d9,U+4e2-4e3,U+4e6-4e9,U+4ee-4ef",
42
+ "ttfFamily": "Excalifont 6"
43
+ },
44
+ {
45
+ "family": "Excalifont",
46
+ "id": 5,
47
+ "file": "Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2",
48
+ "unicodeRange": "U+300-301,U+303",
49
+ "ttfFamily": "Excalifont 7"
50
+ },
51
+ {
52
+ "family": "Nunito",
53
+ "id": 6,
54
+ "file": "Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2",
55
+ "unicodeRange": "U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F",
56
+ "ttfFamily": "Nunito 2"
57
+ },
58
+ {
59
+ "family": "Nunito",
60
+ "id": 6,
61
+ "file": "Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2",
62
+ "unicodeRange": "U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116",
63
+ "ttfFamily": "Nunito 3"
64
+ },
65
+ {
66
+ "family": "Nunito",
67
+ "id": 6,
68
+ "file": "Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2",
69
+ "unicodeRange": "U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB",
70
+ "ttfFamily": "Nunito 4"
71
+ },
72
+ {
73
+ "family": "Nunito",
74
+ "id": 6,
75
+ "file": "Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2",
76
+ "unicodeRange": "U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF",
77
+ "ttfFamily": "Nunito 5"
78
+ },
79
+ {
80
+ "family": "Nunito",
81
+ "id": 6,
82
+ "file": "Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2",
83
+ "unicodeRange": "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",
84
+ "ttfFamily": "Nunito"
85
+ },
86
+ {
87
+ "family": "Lilita One",
88
+ "id": 7,
89
+ "file": "Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2",
90
+ "unicodeRange": "U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF",
91
+ "ttfFamily": "Lilita One 2"
92
+ },
93
+ {
94
+ "family": "Lilita One",
95
+ "id": 7,
96
+ "file": "Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2",
97
+ "unicodeRange": "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD",
98
+ "ttfFamily": "Lilita One"
99
+ },
100
+ {
101
+ "family": "Comic Shanns",
102
+ "id": 8,
103
+ "file": "ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2",
104
+ "unicodeRange": "U+20-7e,U+a1-a6,U+a8,U+ab-ac,U+af-b1,U+b4,U+b8,U+bb-bc,U+bf-cf,U+d1-d7,U+d9-de,U+e0-ef,U+f1-f7,U+f9-ff,U+131,U+152-153,U+2c6,U+2da,U+2dc,U+2013-2014,U+2018-201a,U+201c-201d,U+2020-2022,U+2026,U+2039-203a,U+2044,U+20ac,U+2191,U+2193,U+2212",
105
+ "ttfFamily": "Comic Shanns"
106
+ },
107
+ {
108
+ "family": "Comic Shanns",
109
+ "id": 8,
110
+ "file": "ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2",
111
+ "unicodeRange": "U+100-10f,U+112-125,U+128-130,U+134-137,U+139-13c,U+141-148,U+14c-151,U+154-161,U+164-165,U+168-17f,U+1bf,U+1f7,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+a75b",
112
+ "ttfFamily": "Comic Shanns 2"
113
+ },
114
+ {
115
+ "family": "Comic Shanns",
116
+ "id": 8,
117
+ "file": "ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2",
118
+ "unicodeRange": "U+2c7,U+2d8-2d9,U+2db,U+2dd,U+315,U+2190,U+2192,U+2200,U+2203-2204,U+2264-2265,U+f6c3",
119
+ "ttfFamily": "Comic Shanns 3"
120
+ },
121
+ {
122
+ "family": "Comic Shanns",
123
+ "id": 8,
124
+ "file": "ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2",
125
+ "unicodeRange": "U+3bb",
126
+ "ttfFamily": "Comic Shanns 4"
127
+ },
128
+ {
129
+ "family": "Virgil",
130
+ "id": 1,
131
+ "file": "Virgil-Regular.woff2",
132
+ "ttfFamily": "Virgil"
133
+ },
134
+ {
135
+ "family": "Cascadia",
136
+ "id": 3,
137
+ "file": "CascadiaCode-Regular.woff2",
138
+ "ttfFamily": "Cascadia"
139
+ },
140
+ {
141
+ "family": "Liberation Sans",
142
+ "id": 9,
143
+ "file": "LiberationSans-Regular.woff2",
144
+ "ttfFamily": "Liberation Sans"
145
+ }
146
+ ]