convex-mcp-visual 1.0.8 → 1.0.9

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/index.js CHANGED
@@ -1,41 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Convex MCP Apps Server
3
+ * Convex MCP Visual Server
4
4
  *
5
5
  * An MCP server that provides interactive UI components for exploring Convex databases.
6
6
  * Supports stdio (default) and HTTP transports.
7
7
  */
8
- import { createServer } from './server.js';
9
- import { parseArgs } from 'util';
8
+ import { createServer } from "./server.js";
9
+ import { parseArgs } from "util";
10
+ import { writeFileSync, existsSync, readFileSync } from "fs";
11
+ import { join } from "path";
12
+ import { homedir } from "os";
13
+ import { createInterface } from "readline";
14
+ const CONFIG_FILE = join(homedir(), ".convex-mcp-visual.json");
10
15
  async function main() {
11
16
  const { values } = parseArgs({
12
17
  options: {
13
- stdio: { type: 'boolean', default: false },
14
- http: { type: 'boolean', default: false },
15
- port: { type: 'string', default: '3001' },
16
- test: { type: 'boolean', default: false },
17
- help: { type: 'boolean', short: 'h', default: false },
18
+ stdio: { type: "boolean", default: false },
19
+ http: { type: "boolean", default: false },
20
+ port: { type: "string", default: "3001" },
21
+ test: { type: "boolean", default: false },
22
+ setup: { type: "boolean", default: false },
23
+ help: { type: "boolean", short: "h", default: false },
18
24
  },
19
25
  allowPositionals: false,
20
26
  });
21
27
  if (values.help) {
22
28
  console.log(`
23
- Convex MCP Apps Server
29
+ Convex MCP Visual Server
24
30
 
25
31
  Usage:
26
- convex-mcp-apps [options]
32
+ convex-mcp-visual [options]
27
33
 
28
34
  Options:
29
35
  --stdio Run in stdio mode (default if no mode specified)
30
36
  --http Run in HTTP mode
31
37
  --port <num> Port for HTTP mode (default: 3001)
32
38
  --test Run connection test and exit
39
+ --setup Interactive setup wizard for deploy key
33
40
  -h, --help Show this help message
34
41
 
35
42
  Examples:
36
- convex-mcp-apps --stdio # For Claude Code/Desktop
37
- convex-mcp-apps --http --port 3001 # For team deployments
38
- convex-mcp-apps --test # Test Convex connection
43
+ convex-mcp-visual --stdio # For Claude Code/Desktop
44
+ convex-mcp-visual --http --port 3001 # For team deployments
45
+ convex-mcp-visual --test # Test Convex connection
46
+ convex-mcp-visual --setup # Setup deploy key
39
47
 
40
48
  Environment Variables:
41
49
  CONVEX_URL Override deployment URL
@@ -44,50 +52,176 @@ Environment Variables:
44
52
  `);
45
53
  process.exit(0);
46
54
  }
55
+ if (values.setup) {
56
+ await runSetupWizard();
57
+ return;
58
+ }
47
59
  if (values.test) {
48
60
  await runConnectionTest();
49
61
  return;
50
62
  }
51
63
  const server = await createServer();
52
64
  if (values.http) {
53
- const port = parseInt(values.port || '3001', 10);
65
+ const port = parseInt(values.port || "3001", 10);
54
66
  await server.startHttp(port);
55
- console.error(`Convex MCP Apps server running on http://localhost:${port}/mcp`);
67
+ console.error(`Convex MCP Visual server running on http://localhost:${port}/mcp`);
56
68
  }
57
69
  else {
58
70
  // Default to stdio mode
59
71
  await server.startStdio();
60
- console.error('Convex MCP Apps server running in stdio mode');
72
+ console.error("Convex MCP Visual server running in stdio mode");
61
73
  }
62
74
  }
75
+ /**
76
+ * Interactive setup wizard for deploy key configuration
77
+ */
78
+ async function runSetupWizard() {
79
+ console.log("\nConvex MCP Visual Setup\n");
80
+ console.log("This wizard will help you configure your Convex deploy key.\n");
81
+ // Check existing config
82
+ let existingConfig = {};
83
+ if (existsSync(CONFIG_FILE)) {
84
+ try {
85
+ existingConfig = JSON.parse(readFileSync(CONFIG_FILE, "utf-8"));
86
+ console.log(`Found existing config at ${CONFIG_FILE}`);
87
+ if (existingConfig.deploymentUrl) {
88
+ console.log(` Current deployment: ${existingConfig.deploymentUrl}\n`);
89
+ }
90
+ }
91
+ catch {
92
+ // Ignore parse errors
93
+ }
94
+ }
95
+ const rl = createInterface({
96
+ input: process.stdin,
97
+ output: process.stdout,
98
+ });
99
+ const question = (prompt) => {
100
+ return new Promise((resolve) => {
101
+ rl.question(prompt, resolve);
102
+ });
103
+ };
104
+ console.log("Steps to get your deploy key:");
105
+ console.log("1. Go to https://dashboard.convex.dev");
106
+ console.log("2. Select your project");
107
+ console.log("3. Go to Settings > Deploy Keys");
108
+ console.log('4. Click "Generate Deploy Key"');
109
+ console.log("5. Copy the full key (format: prod:deployment-name|key...)\n");
110
+ // Ask if user wants to open the dashboard
111
+ const openDashboard = await question("Open Convex dashboard in browser? (y/n): ");
112
+ if (openDashboard.toLowerCase() === "y") {
113
+ const { exec } = await import("child_process");
114
+ const platform = process.platform;
115
+ const url = "https://dashboard.convex.dev";
116
+ if (platform === "darwin") {
117
+ exec(`open "${url}"`);
118
+ }
119
+ else if (platform === "win32") {
120
+ exec(`start "" "${url}"`);
121
+ }
122
+ else {
123
+ exec(`xdg-open "${url}"`);
124
+ }
125
+ console.log("\nOpened dashboard in browser.\n");
126
+ }
127
+ // Prompt for deploy key
128
+ const deployKey = await question("Paste your deploy key: ");
129
+ rl.close();
130
+ if (!deployKey || deployKey.trim().length === 0) {
131
+ console.log("\nNo deploy key provided. Setup cancelled.");
132
+ process.exit(1);
133
+ }
134
+ // Parse the deploy key
135
+ const trimmedKey = deployKey.trim();
136
+ let deploymentUrl = "";
137
+ let adminKey = "";
138
+ if (trimmedKey.includes("|")) {
139
+ const pipeIndex = trimmedKey.indexOf("|");
140
+ const prefix = trimmedKey.substring(0, pipeIndex);
141
+ adminKey = trimmedKey.substring(pipeIndex + 1);
142
+ if (prefix.includes(":")) {
143
+ const colonIndex = prefix.indexOf(":");
144
+ const deploymentName = prefix.substring(colonIndex + 1);
145
+ if (deploymentName) {
146
+ deploymentUrl = `https://${deploymentName}.convex.cloud`;
147
+ }
148
+ }
149
+ }
150
+ else {
151
+ adminKey = trimmedKey;
152
+ console.log("\nWarning: Deploy key format not recognized. Expected format: prod:name|key");
153
+ console.log("Saving key as-is, but you may need to set CONVEX_URL separately.\n");
154
+ }
155
+ // Save config
156
+ const config = {
157
+ deploymentUrl: deploymentUrl || existingConfig.deploymentUrl || "",
158
+ adminKey,
159
+ savedAt: new Date().toISOString(),
160
+ };
161
+ try {
162
+ writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
163
+ console.log(`\nConfig saved to ${CONFIG_FILE}`);
164
+ if (deploymentUrl) {
165
+ console.log(` Deployment: ${deploymentUrl}`);
166
+ }
167
+ console.log(" Admin key: ***" + adminKey.slice(-8));
168
+ // Test the connection
169
+ console.log("\nTesting connection...");
170
+ process.env.CONVEX_DEPLOY_KEY = trimmedKey;
171
+ if (deploymentUrl) {
172
+ process.env.CONVEX_URL = deploymentUrl;
173
+ }
174
+ const { ConvexClient } = await import("./convex-client.js");
175
+ const client = new ConvexClient();
176
+ const result = await client.testConnection();
177
+ if (result.success) {
178
+ console.log("[OK] Connection successful!");
179
+ console.log(` Tables found: ${result.tableCount}`);
180
+ console.log("\nSetup complete. You can now use convex-mcp-visual.");
181
+ }
182
+ else {
183
+ console.log("[WARN] Connection test failed:", result.error);
184
+ console.log("Config saved, but you may need to verify your deploy key.");
185
+ }
186
+ }
187
+ catch (error) {
188
+ console.error("Failed to save config:", error instanceof Error ? error.message : String(error));
189
+ process.exit(1);
190
+ }
191
+ }
192
+ /**
193
+ * Test connection to Convex deployment
194
+ */
63
195
  async function runConnectionTest() {
64
- console.log('Testing Convex connection...\n');
65
- const { ConvexClient } = await import('./convex-client.js');
196
+ console.log("Testing Convex connection...\n");
197
+ const { ConvexClient } = await import("./convex-client.js");
66
198
  const client = new ConvexClient();
67
199
  try {
68
200
  const result = await client.testConnection();
69
201
  if (result.success) {
70
- console.log('✓ Connection successful!');
202
+ console.log("[OK] Connection successful!");
71
203
  console.log(` Deployment: ${result.deploymentUrl}`);
72
204
  console.log(` Tables found: ${result.tableCount}`);
73
205
  if (result.tables && result.tables.length > 0) {
74
- console.log(` Tables: ${result.tables.slice(0, 5).join(', ')}${result.tables.length > 5 ? '...' : ''}`);
206
+ console.log(` Tables: ${result.tables.slice(0, 5).join(", ")}${result.tables.length > 5 ? "..." : ""}`);
75
207
  }
208
+ console.log(` Admin access: ${client.hasAdminAccess() ? "Yes" : "No (limited functionality)"}`);
76
209
  }
77
210
  else {
78
- console.log('✗ Connection failed');
211
+ console.log("[FAIL] Connection failed");
79
212
  console.log(` Error: ${result.error}`);
213
+ console.log("\nTry running: convex-mcp-visual --setup");
80
214
  process.exit(1);
81
215
  }
82
216
  }
83
217
  catch (error) {
84
- console.log('✗ Connection failed');
218
+ console.log("[FAIL] Connection failed");
85
219
  console.log(` Error: ${error instanceof Error ? error.message : String(error)}`);
86
220
  process.exit(1);
87
221
  }
88
222
  }
89
223
  main().catch((error) => {
90
- console.error('Fatal error:', error);
224
+ console.error("Fatal error:", error);
91
225
  process.exit(1);
92
226
  });
93
227
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,15 @@
3
3
  *
4
4
  * Serves the bundled Schema Browser HTML UI.
5
5
  */
6
- import { readFileSync, existsSync } from 'fs';
7
- import { join, dirname } from 'path';
8
- import { fileURLToPath } from 'url';
6
+ import { readFileSync, existsSync } from "fs";
7
+ import { join, dirname } from "path";
8
+ import { fileURLToPath } from "url";
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
10
  export async function getSchemaResourceContent() {
11
11
  // Try to load the bundled HTML file
12
- const bundledPath = join(__dirname, '..', 'apps', 'schema-browser.html');
12
+ const bundledPath = join(__dirname, "..", "apps", "schema-browser.html");
13
13
  if (existsSync(bundledPath)) {
14
- return readFileSync(bundledPath, 'utf-8');
14
+ return readFileSync(bundledPath, "utf-8");
15
15
  }
16
16
  // Fallback: return inline HTML for development/testing
17
17
  return getInlineSchemaUI();
@@ -641,7 +641,8 @@ function getInlineSchemaUI() {
641
641
  },
642
642
 
643
643
  openQueryBuilder() {
644
- alert('Query builder coming soon!');
644
+ // Query builder not yet implemented
645
+ console.log('Query builder coming soon');
645
646
  }
646
647
  };
647
648
 
@@ -1 +1 @@
1
- {"version":3,"file":"schema-browser.js","sourceRoot":"","sources":["../../src/resources/schema-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEzE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,uDAAuD;IACvD,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwnBD,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"schema-browser.js","sourceRoot":"","sources":["../../src/resources/schema-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEzE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,uDAAuD;IACvD,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAynBD,CAAC;AACT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CA0I7D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CA8I7D"}
package/dist/server.js CHANGED
@@ -4,20 +4,20 @@
4
4
  * Creates and configures the MCP server with tools and resources
5
5
  * for Convex database exploration.
6
6
  */
7
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
8
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
- import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
10
- import { createServer as createHttpServer } from 'http';
11
- import { schemaBrowserTool, handleSchemaBrowser } from './tools/schema-browser.js';
12
- import { dashboardTool, handleDashboard } from './tools/dashboard.js';
13
- import { getSchemaResourceContent } from './resources/schema-browser.js';
14
- import { getDashboardResourceContent } from './resources/dashboard.js';
15
- import { ConvexClient } from './convex-client.js';
7
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
10
+ import { createServer as createHttpServer } from "http";
11
+ import { schemaBrowserTool, handleSchemaBrowser, } from "./tools/schema-browser.js";
12
+ import { dashboardTool, handleDashboard } from "./tools/dashboard.js";
13
+ import { getSchemaResourceContent } from "./resources/schema-browser.js";
14
+ import { getDashboardResourceContent } from "./resources/dashboard.js";
15
+ import { ConvexClient } from "./convex-client.js";
16
16
  export async function createServer() {
17
17
  const convexClient = new ConvexClient();
18
18
  const server = new Server({
19
- name: 'convex-mcp-apps',
20
- version: '1.0.0',
19
+ name: "convex-mcp-visual",
20
+ version: "1.0.8",
21
21
  }, {
22
22
  capabilities: {
23
23
  tools: {},
@@ -35,10 +35,10 @@ export async function createServer() {
35
35
  const { name, arguments: args } = request.params;
36
36
  let result;
37
37
  switch (name) {
38
- case 'schema_browser':
38
+ case "schema_browser":
39
39
  result = await handleSchemaBrowser(convexClient, args);
40
40
  break;
41
- case 'dashboard_view':
41
+ case "dashboard_view":
42
42
  result = await handleDashboard(convexClient, args);
43
43
  break;
44
44
  default:
@@ -47,7 +47,7 @@ export async function createServer() {
47
47
  // Return properly typed response
48
48
  return {
49
49
  content: result.content.map((c) => ({
50
- type: 'text',
50
+ type: "text",
51
51
  text: c.text,
52
52
  })),
53
53
  isError: result.isError,
@@ -58,16 +58,16 @@ export async function createServer() {
58
58
  return {
59
59
  resources: [
60
60
  {
61
- uri: 'ui://schema-browser',
62
- name: 'Schema Browser',
63
- description: 'Interactive UI for browsing Convex database schemas',
64
- mimeType: 'text/html',
61
+ uri: "ui://schema-browser",
62
+ name: "Schema Browser",
63
+ description: "Interactive UI for browsing Convex database schemas",
64
+ mimeType: "text/html",
65
65
  },
66
66
  {
67
- uri: 'ui://dashboard',
68
- name: 'Realtime Dashboard',
69
- description: 'Live charts and metrics for Convex data',
70
- mimeType: 'text/html',
67
+ uri: "ui://dashboard",
68
+ name: "Realtime Dashboard",
69
+ description: "Live charts and metrics for Convex data",
70
+ mimeType: "text/html",
71
71
  },
72
72
  ],
73
73
  };
@@ -75,23 +75,23 @@ export async function createServer() {
75
75
  // Handle resource reads
76
76
  server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
77
77
  const { uri } = request.params;
78
- if (uri.startsWith('ui://schema-browser')) {
78
+ if (uri.startsWith("ui://schema-browser")) {
79
79
  return {
80
80
  contents: [
81
81
  {
82
82
  uri,
83
- mimeType: 'text/html',
83
+ mimeType: "text/html",
84
84
  text: await getSchemaResourceContent(),
85
85
  },
86
86
  ],
87
87
  };
88
88
  }
89
- if (uri.startsWith('ui://dashboard')) {
89
+ if (uri.startsWith("ui://dashboard")) {
90
90
  return {
91
91
  contents: [
92
92
  {
93
93
  uri,
94
- mimeType: 'text/html',
94
+ mimeType: "text/html",
95
95
  text: await getDashboardResourceContent(),
96
96
  },
97
97
  ],
@@ -107,30 +107,30 @@ export async function createServer() {
107
107
  async startHttp(port) {
108
108
  // Simple HTTP transport for MCP
109
109
  const httpServer = createHttpServer(async (req, res) => {
110
- if (req.url === '/mcp' && req.method === 'POST') {
111
- let body = '';
112
- req.on('data', (chunk) => (body += chunk));
113
- req.on('end', async () => {
110
+ if (req.url === "/mcp" && req.method === "POST") {
111
+ let body = "";
112
+ req.on("data", (chunk) => (body += chunk));
113
+ req.on("end", async () => {
114
114
  try {
115
115
  const request = JSON.parse(body);
116
116
  // Process MCP request through server
117
117
  // This is a simplified implementation
118
- res.writeHead(200, { 'Content-Type': 'application/json' });
119
- res.end(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: {} }));
118
+ res.writeHead(200, { "Content-Type": "application/json" });
119
+ res.end(JSON.stringify({ jsonrpc: "2.0", id: request.id, result: {} }));
120
120
  }
121
121
  catch (error) {
122
- res.writeHead(400, { 'Content-Type': 'application/json' });
123
- res.end(JSON.stringify({ error: 'Invalid request' }));
122
+ res.writeHead(400, { "Content-Type": "application/json" });
123
+ res.end(JSON.stringify({ error: "Invalid request" }));
124
124
  }
125
125
  });
126
126
  }
127
- else if (req.url === '/health') {
128
- res.writeHead(200, { 'Content-Type': 'application/json' });
129
- res.end(JSON.stringify({ status: 'ok' }));
127
+ else if (req.url === "/health") {
128
+ res.writeHead(200, { "Content-Type": "application/json" });
129
+ res.end(JSON.stringify({ status: "ok" }));
130
130
  }
131
131
  else {
132
132
  res.writeHead(404);
133
- res.end('Not found');
133
+ res.end("Not found");
134
134
  }
135
135
  });
136
136
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;SACd;KACF,CACF,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,gBAAgB;gBACnB,MAAM,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACnD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,iCAAiC;QACjC,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC9D,OAAO;YACL,SAAS,EAAE;gBACT;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,qDAAqD;oBAClE,QAAQ,EAAE,WAAW;iBACtB;gBACD;oBACE,GAAG,EAAE,gBAAgB;oBACrB,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,yCAAyC;oBACtD,QAAQ,EAAE,WAAW;iBACtB;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAE/B,IAAI,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,WAAW;wBACrB,IAAI,EAAE,MAAM,wBAAwB,EAAE;qBACvC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,WAAW;wBACrB,IAAI,EAAE,MAAM,2BAA2B,EAAE;qBAC1C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,UAAU;YACd,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY;YAC1B,gCAAgC;YAChC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;gBACrD,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAChD,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;oBAC3C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;wBACvB,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACjC,qCAAqC;4BACrC,sCAAsC;4BACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;4BAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC1E,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;4BAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;wBACxD,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * MCP tool that creates real-time dashboard visualizations
5
5
  * for Convex data - both in terminal AND in browser.
6
6
  */
7
- import type { Tool } from '@modelcontextprotocol/sdk/types.js';
8
- import type { ConvexClient } from '../convex-client.js';
7
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
8
+ import type { ConvexClient } from "../convex-client.js";
9
9
  export declare const dashboardTool: Tool;
10
10
  interface ToolResponse {
11
11
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,eAAO,MAAM,aAAa,EAAE,IA6D3B,CAAC;AAEF,UAAU,YAAY;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmBD,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,YAAY,CAAC,CAiHvB"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,eAAO,MAAM,aAAa,EAAE,IA0E3B,CAAC;AAEF,UAAU,YAAY;IACpB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmBD,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,YAAY,CAAC,CAgIvB"}