convex-mcp-visual 1.0.21 → 1.0.23

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/dist/ui-server.js CHANGED
@@ -4,26 +4,26 @@
4
4
  * Starts a local HTTP server to serve interactive UI apps
5
5
  * and opens them in the user's default browser.
6
6
  */
7
- import { createServer } from 'http';
8
- import { readFileSync, existsSync } from 'fs';
9
- import { join, dirname, extname } from 'path';
10
- import { fileURLToPath } from 'url';
11
- import { exec } from 'child_process';
12
- import { platform } from 'os';
7
+ import { createServer } from "http";
8
+ import { readFileSync, existsSync } from "fs";
9
+ import { join, dirname, extname } from "path";
10
+ import { fileURLToPath } from "url";
11
+ import { exec } from "child_process";
12
+ import { platform } from "os";
13
13
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
14
  // Track active servers to avoid port conflicts
15
15
  const activeServers = new Map();
16
16
  // MIME types for serving static files
17
17
  const MIME_TYPES = {
18
- '.html': 'text/html',
19
- '.js': 'application/javascript',
20
- '.css': 'text/css',
21
- '.json': 'application/json',
22
- '.png': 'image/png',
23
- '.jpg': 'image/jpeg',
24
- '.svg': 'image/svg+xml',
25
- '.woff': 'font/woff',
26
- '.woff2': 'font/woff2',
18
+ ".html": "text/html",
19
+ ".js": "application/javascript",
20
+ ".css": "text/css",
21
+ ".json": "application/json",
22
+ ".png": "image/png",
23
+ ".jpg": "image/jpeg",
24
+ ".svg": "image/svg+xml",
25
+ ".woff": "font/woff",
26
+ ".woff2": "font/woff2",
27
27
  };
28
28
  // Find an available port starting from the base
29
29
  async function findAvailablePort(basePort) {
@@ -35,11 +35,11 @@ async function findAvailablePort(basePort) {
35
35
  }
36
36
  // Open URL in default browser (cross-platform)
37
37
  function openBrowser(url) {
38
- const cmd = platform() === 'darwin'
39
- ? 'open'
40
- : platform() === 'win32'
41
- ? 'start'
42
- : 'xdg-open';
38
+ const cmd = platform() === "darwin"
39
+ ? "open"
40
+ : platform() === "win32"
41
+ ? "start"
42
+ : "xdg-open";
43
43
  exec(`${cmd} "${url}"`, (error) => {
44
44
  if (error) {
45
45
  console.error(`Failed to open browser: ${error.message}`);
@@ -48,23 +48,23 @@ function openBrowser(url) {
48
48
  }
49
49
  // Get the base path for built apps
50
50
  function getDistAppsPath() {
51
- return join(__dirname, '..', 'dist', 'apps');
51
+ return join(__dirname, "..", "dist", "apps");
52
52
  }
53
53
  // Get the path to an app's index.html
54
54
  function getAppHtmlPath(appName) {
55
55
  const basePath = getDistAppsPath();
56
56
  // Try Vite's nested output: dist/apps/apps/{appName}/index.html
57
- const nestedPath = join(basePath, 'apps', appName, 'index.html');
57
+ const nestedPath = join(basePath, "apps", appName, "index.html");
58
58
  if (existsSync(nestedPath)) {
59
59
  return nestedPath;
60
60
  }
61
61
  // Try flat structure: dist/apps/{appName}/index.html
62
- const flatPath = join(basePath, appName, 'index.html');
62
+ const flatPath = join(basePath, appName, "index.html");
63
63
  if (existsSync(flatPath)) {
64
64
  return flatPath;
65
65
  }
66
66
  // Try source: apps/{appName}/index.html
67
- const srcPath = join(__dirname, '..', 'apps', appName, 'index.html');
67
+ const srcPath = join(__dirname, "..", "apps", appName, "index.html");
68
68
  if (existsSync(srcPath)) {
69
69
  return srcPath;
70
70
  }
@@ -74,26 +74,31 @@ function getAppHtmlPath(appName) {
74
74
  * Start a local server for a UI app and open it in the browser
75
75
  */
76
76
  export async function launchUIApp(options) {
77
- const { appName, config, port: preferredPort = 3456, autoClose = 0 } = options;
77
+ const { appName, config, port: preferredPort = 3456, autoClose = 0, customHtml, } = options;
78
78
  const port = await findAvailablePort(preferredPort);
79
79
  const configJson = JSON.stringify(config);
80
80
  const distAppsPath = getDistAppsPath();
81
- // Read and modify the HTML with injected config
81
+ // Use custom HTML if provided (for diagram viewer etc)
82
82
  let indexHtml;
83
- try {
84
- const appHtmlPath = getAppHtmlPath(appName);
85
- indexHtml = readFileSync(appHtmlPath, 'utf-8');
86
- // Inject the config into the HTML
87
- const configScript = `
83
+ if (customHtml) {
84
+ indexHtml = customHtml;
85
+ }
86
+ else {
87
+ // Read and modify the HTML with injected config
88
+ try {
89
+ const appHtmlPath = getAppHtmlPath(appName);
90
+ indexHtml = readFileSync(appHtmlPath, "utf-8");
91
+ // Inject the config into the HTML
92
+ const configScript = `
88
93
  <script>
89
94
  window.__CONVEX_CONFIG__ = ${configJson};
90
95
  </script>
91
96
  `;
92
- indexHtml = indexHtml.replace('<head>', `<head>\n${configScript}`);
93
- }
94
- catch (error) {
95
- // If app HTML not found, serve an error page
96
- indexHtml = `
97
+ indexHtml = indexHtml.replace("<head>", `<head>\n${configScript}`);
98
+ }
99
+ catch (error) {
100
+ // If app HTML not found, serve an error page
101
+ indexHtml = `
97
102
  <!DOCTYPE html>
98
103
  <html>
99
104
  <head>
@@ -114,31 +119,32 @@ export async function launchUIApp(options) {
114
119
  </body>
115
120
  </html>
116
121
  `;
122
+ }
117
123
  }
118
124
  return new Promise((resolve, reject) => {
119
125
  const server = createServer((req, res) => {
120
- const url = req.url || '/';
126
+ const url = req.url || "/";
121
127
  // Serve index.html for root
122
- if (url === '/' || url === '/index.html') {
128
+ if (url === "/" || url === "/index.html") {
123
129
  res.writeHead(200, {
124
- 'Content-Type': 'text/html',
125
- 'Cache-Control': 'no-cache',
130
+ "Content-Type": "text/html",
131
+ "Cache-Control": "no-cache",
126
132
  });
127
133
  res.end(indexHtml);
128
134
  return;
129
135
  }
130
136
  // Serve static assets from dist/apps/assets/
131
- if (url.startsWith('/assets/') || url.includes('/assets/')) {
132
- const assetPath = url.replace(/^.*\/assets\//, 'assets/');
137
+ if (url.startsWith("/assets/") || url.includes("/assets/")) {
138
+ const assetPath = url.replace(/^.*\/assets\//, "assets/");
133
139
  const filePath = join(distAppsPath, assetPath);
134
140
  if (existsSync(filePath)) {
135
141
  const ext = extname(filePath);
136
- const contentType = MIME_TYPES[ext] || 'application/octet-stream';
142
+ const contentType = MIME_TYPES[ext] || "application/octet-stream";
137
143
  try {
138
144
  const content = readFileSync(filePath);
139
145
  res.writeHead(200, {
140
- 'Content-Type': contentType,
141
- 'Cache-Control': 'public, max-age=31536000',
146
+ "Content-Type": contentType,
147
+ "Cache-Control": "public, max-age=31536000",
142
148
  });
143
149
  res.end(content);
144
150
  return;
@@ -149,11 +155,11 @@ export async function launchUIApp(options) {
149
155
  }
150
156
  }
151
157
  // 404 for everything else
152
- res.writeHead(404, { 'Content-Type': 'text/plain' });
153
- res.end('Not found');
158
+ res.writeHead(404, { "Content-Type": "text/plain" });
159
+ res.end("Not found");
154
160
  });
155
- server.on('error', (error) => {
156
- if (error.code === 'EADDRINUSE') {
161
+ server.on("error", (error) => {
162
+ if (error.code === "EADDRINUSE") {
157
163
  // Port in use, try next
158
164
  launchUIApp({ ...options, port: port + 1 })
159
165
  .then(resolve)
@@ -163,7 +169,7 @@ export async function launchUIApp(options) {
163
169
  reject(error);
164
170
  }
165
171
  });
166
- server.listen(port, '127.0.0.1', () => {
172
+ server.listen(port, "127.0.0.1", () => {
167
173
  activeServers.set(port, server);
168
174
  const url = `http://127.0.0.1:${port}`;
169
175
  // Open browser
@@ -1 +1 @@
1
- {"version":3,"file":"ui-server.js","sourceRoot":"","sources":["../src/ui-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAmC,MAAM,MAAM,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2C,CAAC;AAEzE,sCAAsC;AACtC,MAAM,UAAU,GAA2B;IACzC,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,wBAAwB;IAC/B,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF,gDAAgD;AAChD,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC;IACT,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAC/C,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GACP,QAAQ,EAAE,KAAK,QAAQ;QACrB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,UAAU,CAAC;IAEnB,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mCAAmC;AACnC,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,sCAAsC;AACtC,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IAEnC,gEAAgE;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,qDAAqD;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAeD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAE/E,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,gDAAgD;IAChD,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5C,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE/C,kCAAkC;QAClC,MAAM,YAAY,GAAG;;mCAEU,UAAU;;KAExC,CAAC;QACF,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,SAAS,GAAG;;;;mBAIG,OAAO;;;;;;;;;WASf,OAAO;;cAEJ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;SAE3D,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;;KAGnC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACxE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YAE3B,4BAA4B;YAC5B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;oBACjB,cAAc,EAAE,WAAW;oBAC3B,eAAe,EAAE,UAAU;iBAC5B,CAAC,CAAC;gBACH,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,6CAA6C;YAC7C,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBAE/C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;oBAElE,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;4BACjB,cAAc,EAAE,WAAW;4BAC3B,eAAe,EAAE,0BAA0B;yBAC5C,CAAC,CAAC;wBACH,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAAC,MAAM,CAAC;wBACP,sBAAsB;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAgC,EAAE,EAAE;YACtD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,wBAAwB;gBACxB,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;qBACxC,IAAI,CAAC,OAAO,CAAC;qBACb,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACpC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEhC,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;YAEvC,eAAe;YACf,WAAW,CAAC,GAAG,CAAC,CAAC;YAEjB,uCAAuC;YACvC,IAAI,UAAU,GAA0B,IAAI,CAAC;YAC7C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,KAAK,EAAE,CAAC;gBACV,CAAC,EAAE,SAAS,CAAC,CAAC;YAChB,CAAC;YAED,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,UAAU,EAAE,CAAC;oBACf,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC;YAEF,OAAO,CAAC;gBACN,GAAG;gBACH,IAAI;gBACJ,KAAK;aACN,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ui-server.js","sourceRoot":"","sources":["../src/ui-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-mcp-visual",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "description": "Visual MCP tools for exploring Convex databases - graph view, schema browser, and dashboards",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@modelcontextprotocol/sdk": "^1.0.0",
27
+ "beautiful-mermaid": "^0.1.3",
27
28
  "convex": "^1.17.0"
28
29
  },
29
30
  "devDependencies": {
@@ -43,6 +44,8 @@
43
44
  "visualization",
44
45
  "graph",
45
46
  "dashboard",
47
+ "mermaid",
48
+ "er-diagram",
46
49
  "claude",
47
50
  "claude-code"
48
51
  ],