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/README.md +30 -48
- package/dist/apps/apps/realtime-dashboard/index.html +1 -1
- package/dist/apps/apps/schema-browser/index.html +1 -1
- package/dist/apps/assets/{style-BLqCYWSg.css → style-5I8YCN9R.css} +1 -1
- package/dist/convex-client.d.ts.map +1 -1
- package/dist/convex-client.js +47 -11
- package/dist/convex-client.js.map +1 -1
- package/dist/index.js +43 -11
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/schema-diagram.d.ts +19 -0
- package/dist/tools/schema-diagram.d.ts.map +1 -0
- package/dist/tools/schema-diagram.js +412 -0
- package/dist/tools/schema-diagram.js.map +1 -0
- package/dist/ui-server.d.ts +2 -1
- package/dist/ui-server.d.ts.map +1 -1
- package/dist/ui-server.js +56 -50
- package/dist/ui-server.js.map +1 -1
- package/package.json +4 -1
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
|
|
8
|
-
import { readFileSync, existsSync } from
|
|
9
|
-
import { join, dirname, extname } from
|
|
10
|
-
import { fileURLToPath } from
|
|
11
|
-
import { exec } from
|
|
12
|
-
import { platform } from
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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() ===
|
|
39
|
-
?
|
|
40
|
-
: platform() ===
|
|
41
|
-
?
|
|
42
|
-
:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
//
|
|
81
|
+
// Use custom HTML if provided (for diagram viewer etc)
|
|
82
82
|
let indexHtml;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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 ===
|
|
128
|
+
if (url === "/" || url === "/index.html") {
|
|
123
129
|
res.writeHead(200, {
|
|
124
|
-
|
|
125
|
-
|
|
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(
|
|
132
|
-
const assetPath = url.replace(/^.*\/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] ||
|
|
142
|
+
const contentType = MIME_TYPES[ext] || "application/octet-stream";
|
|
137
143
|
try {
|
|
138
144
|
const content = readFileSync(filePath);
|
|
139
145
|
res.writeHead(200, {
|
|
140
|
-
|
|
141
|
-
|
|
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, {
|
|
153
|
-
res.end(
|
|
158
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
159
|
+
res.end("Not found");
|
|
154
160
|
});
|
|
155
|
-
server.on(
|
|
156
|
-
if (error.code ===
|
|
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,
|
|
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
|
package/dist/ui-server.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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
|
],
|