convex-mcp-visual 1.0.2 → 1.0.4
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 +49 -28
- package/dist/convex-client.d.ts +7 -2
- package/dist/convex-client.d.ts.map +1 -1
- package/dist/convex-client.js +245 -113
- package/dist/convex-client.js.map +1 -1
- package/dist/index.js +0 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -238,36 +238,45 @@ Check your client's MCP server status panel.
|
|
|
238
238
|
|
|
239
239
|
## Setup
|
|
240
240
|
|
|
241
|
-
### 1.
|
|
241
|
+
### 1. Get Your Deploy Key (Required)
|
|
242
242
|
|
|
243
|
-
You need
|
|
243
|
+
You need a **deploy key** from the Convex dashboard. This is different from `npx convex login`.
|
|
244
244
|
|
|
245
|
-
|
|
246
|
-
|----------|--------|------------|
|
|
247
|
-
| 1 | `CONVEX_DEPLOY_KEY` env var | `export CONVEX_DEPLOY_KEY=prod:xxx` |
|
|
248
|
-
| 2 | `CONVEX_URL` env var | `export CONVEX_URL=https://xxx.convex.cloud` |
|
|
249
|
-
| 3 | `~/.convex/config.json` | Run `npx convex login` |
|
|
245
|
+
**Step-by-step:**
|
|
250
246
|
|
|
251
|
-
|
|
247
|
+
1. Go to [dashboard.convex.dev](https://dashboard.convex.dev)
|
|
248
|
+
2. Select your project
|
|
249
|
+
3. Click **Settings** (gear icon)
|
|
250
|
+
4. Click **Deploy Keys** in the sidebar
|
|
251
|
+
5. Click **Generate Deploy Key**
|
|
252
|
+
6. Choose "Development" or "Production"
|
|
253
|
+
7. Copy the key (format: `prod:happy-animal-123|convex_deploy_abc123...`)
|
|
252
254
|
|
|
253
|
-
|
|
254
|
-
# Login to Convex (creates ~/.convex/config.json)
|
|
255
|
-
npx convex login
|
|
255
|
+
### 2. Add MCP Server with Deploy Key
|
|
256
256
|
|
|
257
|
-
|
|
258
|
-
cd your-convex-project
|
|
257
|
+
**For Claude Code:**
|
|
259
258
|
|
|
260
|
-
|
|
261
|
-
npx convex
|
|
259
|
+
```bash
|
|
260
|
+
claude mcp add convex-visual -e CONVEX_DEPLOY_KEY=prod:your-deployment|your-key-here -- npx convex-mcp-visual --stdio
|
|
262
261
|
```
|
|
263
262
|
|
|
264
|
-
**For
|
|
263
|
+
**For Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
265
264
|
|
|
266
|
-
```
|
|
267
|
-
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"mcpServers": {
|
|
268
|
+
"convex-visual": {
|
|
269
|
+
"command": "npx",
|
|
270
|
+
"args": ["convex-mcp-visual", "--stdio"],
|
|
271
|
+
"env": {
|
|
272
|
+
"CONVEX_DEPLOY_KEY": "prod:your-deployment|your-key-here"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
268
277
|
```
|
|
269
278
|
|
|
270
|
-
###
|
|
279
|
+
### 3. Verify Installation
|
|
271
280
|
|
|
272
281
|
```bash
|
|
273
282
|
# Check MCP server is registered
|
|
@@ -621,12 +630,24 @@ claude mcp add convex-visual -- node /full/path/to/dist/index.js --stdio
|
|
|
621
630
|
|
|
622
631
|
### "No Convex deployment configured"
|
|
623
632
|
|
|
633
|
+
You need to set `CONVEX_DEPLOY_KEY`. See [Setup](#setup) for how to get a deploy key.
|
|
634
|
+
|
|
624
635
|
```bash
|
|
625
|
-
#
|
|
626
|
-
|
|
636
|
+
# Re-add MCP server with your deploy key
|
|
637
|
+
claude mcp remove convex-visual
|
|
638
|
+
claude mcp add convex-visual -e CONVEX_DEPLOY_KEY=prod:your-deployment|your-key -- npx convex-mcp-visual --stdio
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
### "403 Forbidden" or "Connection failed"
|
|
627
642
|
|
|
628
|
-
|
|
629
|
-
|
|
643
|
+
This means authentication failed. Common causes:
|
|
644
|
+
1. **Missing or invalid deploy key** - Get a new one from [Convex Dashboard](https://dashboard.convex.dev) → Settings → Deploy Keys
|
|
645
|
+
2. **Wrong format** - Deploy key should be `prod:deployment-name|convex_deploy_xxx...`
|
|
646
|
+
3. **Expired key** - Generate a new deploy key
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
# Test your connection
|
|
650
|
+
CONVEX_DEPLOY_KEY=your-key-here npx convex-mcp-visual --test
|
|
630
651
|
```
|
|
631
652
|
|
|
632
653
|
### Browser doesn't open
|
|
@@ -637,11 +658,11 @@ export CONVEX_URL=https://your-deployment.convex.cloud
|
|
|
637
658
|
|
|
638
659
|
### Authentication errors
|
|
639
660
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
661
|
+
Get a new deploy key from the Convex Dashboard:
|
|
662
|
+
1. Go to [dashboard.convex.dev](https://dashboard.convex.dev)
|
|
663
|
+
2. Select your project → Settings → Deploy Keys
|
|
664
|
+
3. Generate a new key
|
|
665
|
+
4. Update your MCP server configuration
|
|
645
666
|
|
|
646
667
|
### Windows users
|
|
647
668
|
|
package/dist/convex-client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Convex Client Wrapper
|
|
3
3
|
*
|
|
4
4
|
* Handles authentication and communication with Convex Cloud.
|
|
5
|
-
*
|
|
5
|
+
* Uses Convex system APIs to fetch schema information.
|
|
6
6
|
*/
|
|
7
7
|
export interface TableInfo {
|
|
8
8
|
name: string;
|
|
@@ -32,15 +32,20 @@ export interface ConnectionTestResult {
|
|
|
32
32
|
error?: string;
|
|
33
33
|
}
|
|
34
34
|
export declare class ConvexClient {
|
|
35
|
-
private client;
|
|
36
35
|
private deploymentUrl;
|
|
36
|
+
private adminKey;
|
|
37
37
|
constructor();
|
|
38
38
|
private initialize;
|
|
39
39
|
isConnected(): boolean;
|
|
40
40
|
getDeploymentUrl(): string | null;
|
|
41
|
+
private fetchConvex;
|
|
41
42
|
testConnection(): Promise<ConnectionTestResult>;
|
|
42
43
|
listTables(): Promise<TableInfo[]>;
|
|
43
44
|
getTableSchema(tableName: string): Promise<TableSchema>;
|
|
45
|
+
private parseShapeToFields;
|
|
46
|
+
private shapeToTypeString;
|
|
47
|
+
private parseDocumentTypeToFields;
|
|
48
|
+
private docTypeToString;
|
|
44
49
|
queryDocuments(tableName: string, options?: {
|
|
45
50
|
limit?: number;
|
|
46
51
|
cursor?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex-client.d.ts","sourceRoot":"","sources":["../src/convex-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"convex-client.d.ts","sourceRoot":"","sources":["../src/convex-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAuB;;IAMvC,OAAO,CAAC,UAAU;IAkElB,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,MAAM,GAAG,IAAI;YAInB,WAAW;IA2BnB,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA4B/C,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA2DlC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+C7D,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,eAAe;IAoBjB,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACnB,GACL,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAepD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAWtD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOtD"}
|
package/dist/convex-client.js
CHANGED
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
* Convex Client Wrapper
|
|
3
3
|
*
|
|
4
4
|
* Handles authentication and communication with Convex Cloud.
|
|
5
|
-
*
|
|
5
|
+
* Uses Convex system APIs to fetch schema information.
|
|
6
6
|
*/
|
|
7
|
-
import { ConvexHttpClient } from 'convex/browser';
|
|
8
7
|
import { readFileSync, existsSync } from 'fs';
|
|
9
8
|
import { join } from 'path';
|
|
10
|
-
import { homedir } from 'os';
|
|
11
9
|
export class ConvexClient {
|
|
12
|
-
client = null;
|
|
13
10
|
deploymentUrl = null;
|
|
11
|
+
adminKey = null;
|
|
14
12
|
constructor() {
|
|
15
13
|
this.initialize();
|
|
16
14
|
}
|
|
@@ -18,53 +16,108 @@ export class ConvexClient {
|
|
|
18
16
|
// Try environment variables first
|
|
19
17
|
const deployKey = process.env.CONVEX_DEPLOY_KEY;
|
|
20
18
|
const explicitUrl = process.env.CONVEX_URL;
|
|
19
|
+
if (deployKey) {
|
|
20
|
+
// Deploy key format: "prod:deploymentName|adminKey"
|
|
21
|
+
// Example: "prod:happy-animal-123|convex_admin_abc123xyz"
|
|
22
|
+
if (deployKey.includes('|')) {
|
|
23
|
+
const pipeIndex = deployKey.indexOf('|');
|
|
24
|
+
const prefix = deployKey.substring(0, pipeIndex);
|
|
25
|
+
this.adminKey = deployKey.substring(pipeIndex + 1);
|
|
26
|
+
// Extract deployment name from prefix (e.g., "prod:happy-animal-123")
|
|
27
|
+
if (prefix.includes(':')) {
|
|
28
|
+
const colonIndex = prefix.indexOf(':');
|
|
29
|
+
const deploymentName = prefix.substring(colonIndex + 1);
|
|
30
|
+
if (!explicitUrl && deploymentName) {
|
|
31
|
+
this.deploymentUrl = `https://${deploymentName}.convex.cloud`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Just an admin key without prefix
|
|
37
|
+
this.adminKey = deployKey;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
21
40
|
if (explicitUrl) {
|
|
22
41
|
this.deploymentUrl = explicitUrl;
|
|
23
42
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
if (existsSync(
|
|
43
|
+
// Try to read from local project .env.local
|
|
44
|
+
if (!this.deploymentUrl) {
|
|
45
|
+
const envLocalPath = join(process.cwd(), '.env.local');
|
|
46
|
+
if (existsSync(envLocalPath)) {
|
|
28
47
|
try {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
48
|
+
const envContent = readFileSync(envLocalPath, 'utf-8');
|
|
49
|
+
const urlMatch = envContent.match(/CONVEX_URL=(.+)/);
|
|
50
|
+
if (urlMatch) {
|
|
51
|
+
this.deploymentUrl = urlMatch[1].trim().replace(/["']/g, '');
|
|
32
52
|
}
|
|
33
53
|
}
|
|
34
54
|
catch {
|
|
35
|
-
// Ignore
|
|
55
|
+
// Ignore errors
|
|
36
56
|
}
|
|
37
57
|
}
|
|
38
58
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (
|
|
43
|
-
|
|
59
|
+
// Try to read from project's .convex deployment state
|
|
60
|
+
if (!this.deploymentUrl || !this.adminKey) {
|
|
61
|
+
const convexJsonPath = join(process.cwd(), '.convex', 'deployment.json');
|
|
62
|
+
if (existsSync(convexJsonPath)) {
|
|
63
|
+
try {
|
|
64
|
+
const config = JSON.parse(readFileSync(convexJsonPath, 'utf-8'));
|
|
65
|
+
if (config.url && !this.deploymentUrl) {
|
|
66
|
+
this.deploymentUrl = config.url;
|
|
67
|
+
}
|
|
68
|
+
if (config.adminKey && !this.adminKey) {
|
|
69
|
+
this.adminKey = config.adminKey;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Ignore errors
|
|
74
|
+
}
|
|
44
75
|
}
|
|
45
76
|
}
|
|
46
77
|
}
|
|
47
78
|
isConnected() {
|
|
48
|
-
return this.
|
|
79
|
+
return this.deploymentUrl !== null;
|
|
49
80
|
}
|
|
50
81
|
getDeploymentUrl() {
|
|
51
82
|
return this.deploymentUrl;
|
|
52
83
|
}
|
|
84
|
+
async fetchConvex(path, body) {
|
|
85
|
+
if (!this.deploymentUrl) {
|
|
86
|
+
throw new Error('No deployment URL configured');
|
|
87
|
+
}
|
|
88
|
+
const url = `${this.deploymentUrl}${path}`;
|
|
89
|
+
const headers = {
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
};
|
|
92
|
+
if (this.adminKey) {
|
|
93
|
+
headers['Authorization'] = `Convex ${this.adminKey}`;
|
|
94
|
+
}
|
|
95
|
+
const response = await fetch(url, {
|
|
96
|
+
method: body ? 'POST' : 'GET',
|
|
97
|
+
headers,
|
|
98
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
99
|
+
});
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
throw new Error(`Convex API error: ${response.status} ${response.statusText}`);
|
|
102
|
+
}
|
|
103
|
+
return response.json();
|
|
104
|
+
}
|
|
53
105
|
async testConnection() {
|
|
54
|
-
if (!this.
|
|
106
|
+
if (!this.deploymentUrl) {
|
|
55
107
|
return {
|
|
56
108
|
success: false,
|
|
57
109
|
error: 'No Convex deployment configured. Set CONVEX_URL or run "npx convex login".',
|
|
58
110
|
};
|
|
59
111
|
}
|
|
60
112
|
try {
|
|
61
|
-
// Try to
|
|
62
|
-
const
|
|
113
|
+
// Try to get shapes (inferred schema) - this works without admin key for some deployments
|
|
114
|
+
const shapes = await this.fetchConvex('/api/shapes2');
|
|
115
|
+
const tables = Object.keys(shapes).filter(t => !t.startsWith('_'));
|
|
63
116
|
return {
|
|
64
117
|
success: true,
|
|
65
118
|
deploymentUrl: this.deploymentUrl,
|
|
66
119
|
tableCount: tables.length,
|
|
67
|
-
tables
|
|
120
|
+
tables,
|
|
68
121
|
};
|
|
69
122
|
}
|
|
70
123
|
catch (error) {
|
|
@@ -76,130 +129,209 @@ export class ConvexClient {
|
|
|
76
129
|
}
|
|
77
130
|
}
|
|
78
131
|
async listTables() {
|
|
79
|
-
if (!this.
|
|
132
|
+
if (!this.deploymentUrl) {
|
|
80
133
|
throw new Error('Convex client not initialized');
|
|
81
134
|
}
|
|
82
135
|
try {
|
|
83
|
-
//
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
136
|
+
// Get inferred schemas from shapes API
|
|
137
|
+
const shapes = await this.fetchConvex('/api/shapes2');
|
|
138
|
+
const tables = [];
|
|
139
|
+
for (const [tableName, schema] of Object.entries(shapes)) {
|
|
140
|
+
// Skip system tables
|
|
141
|
+
if (tableName.startsWith('_'))
|
|
142
|
+
continue;
|
|
143
|
+
tables.push({
|
|
144
|
+
name: tableName,
|
|
145
|
+
documentCount: 0, // Not available from shapes API
|
|
146
|
+
indexes: [],
|
|
147
|
+
});
|
|
91
148
|
}
|
|
92
|
-
|
|
149
|
+
// Try to get declared schema info if we have admin access
|
|
150
|
+
if (this.adminKey) {
|
|
151
|
+
try {
|
|
152
|
+
const schemaResponse = await this.fetchConvex('/api/query', {
|
|
153
|
+
path: '_system/frontend/getSchemas',
|
|
154
|
+
args: {},
|
|
155
|
+
format: 'json',
|
|
156
|
+
});
|
|
157
|
+
if (schemaResponse?.value?.active) {
|
|
158
|
+
const activeSchema = JSON.parse(schemaResponse.value.active);
|
|
159
|
+
if (activeSchema.tables) {
|
|
160
|
+
for (const tableSchema of activeSchema.tables) {
|
|
161
|
+
const existing = tables.find(t => t.name === tableSchema.tableName);
|
|
162
|
+
if (existing) {
|
|
163
|
+
existing.indexes = tableSchema.indexes?.map((i) => i.indexDescriptor) || [];
|
|
164
|
+
}
|
|
165
|
+
else if (!tableSchema.tableName.startsWith('_')) {
|
|
166
|
+
tables.push({
|
|
167
|
+
name: tableSchema.tableName,
|
|
168
|
+
documentCount: 0,
|
|
169
|
+
indexes: tableSchema.indexes?.map((i) => i.indexDescriptor) || [],
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Admin query failed, continue with shapes data only
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return tables.sort((a, b) => a.name.localeCompare(b.name));
|
|
93
181
|
}
|
|
94
182
|
catch (error) {
|
|
95
|
-
// If the query function doesn't exist, return empty array
|
|
96
183
|
console.error('Failed to list tables:', error);
|
|
97
184
|
return [];
|
|
98
185
|
}
|
|
99
186
|
}
|
|
100
187
|
async getTableSchema(tableName) {
|
|
101
|
-
if (!this.
|
|
188
|
+
if (!this.deploymentUrl) {
|
|
102
189
|
throw new Error('Convex client not initialized');
|
|
103
190
|
}
|
|
191
|
+
const result = {
|
|
192
|
+
tableName,
|
|
193
|
+
declaredFields: [],
|
|
194
|
+
inferredFields: [],
|
|
195
|
+
};
|
|
104
196
|
try {
|
|
105
|
-
//
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
};
|
|
197
|
+
// Get inferred schema from shapes API
|
|
198
|
+
const shapes = await this.fetchConvex('/api/shapes2');
|
|
199
|
+
const tableShape = shapes[tableName];
|
|
200
|
+
if (tableShape) {
|
|
201
|
+
result.inferredFields = this.parseShapeToFields(tableShape);
|
|
202
|
+
}
|
|
203
|
+
// Try to get declared schema if we have admin access
|
|
204
|
+
if (this.adminKey) {
|
|
205
|
+
try {
|
|
206
|
+
const schemaResponse = await this.fetchConvex('/api/query', {
|
|
207
|
+
path: '_system/frontend/getSchemas',
|
|
208
|
+
args: {},
|
|
209
|
+
format: 'json',
|
|
210
|
+
});
|
|
211
|
+
if (schemaResponse?.value?.active) {
|
|
212
|
+
const activeSchema = JSON.parse(schemaResponse.value.active);
|
|
213
|
+
const tableSchema = activeSchema.tables?.find((t) => t.tableName === tableName);
|
|
214
|
+
if (tableSchema?.documentType) {
|
|
215
|
+
result.declaredFields = this.parseDocumentTypeToFields(tableSchema.documentType);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// Admin query failed, continue with inferred schema only
|
|
119
221
|
}
|
|
120
222
|
}
|
|
121
|
-
return {
|
|
122
|
-
tableName,
|
|
123
|
-
declaredFields: [],
|
|
124
|
-
inferredFields: [],
|
|
125
|
-
};
|
|
126
223
|
}
|
|
127
224
|
catch (error) {
|
|
128
225
|
console.error('Failed to get table schema:', error);
|
|
129
|
-
return {
|
|
130
|
-
tableName,
|
|
131
|
-
declaredFields: [],
|
|
132
|
-
inferredFields: [],
|
|
133
|
-
};
|
|
134
226
|
}
|
|
227
|
+
return result;
|
|
135
228
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
229
|
+
parseShapeToFields(shape) {
|
|
230
|
+
const fields = [];
|
|
231
|
+
if (shape && typeof shape === 'object') {
|
|
232
|
+
// Handle different shape formats
|
|
233
|
+
if (shape.type === 'Object' && shape.fields) {
|
|
234
|
+
for (const [name, fieldShape] of Object.entries(shape.fields)) {
|
|
235
|
+
fields.push({
|
|
236
|
+
name,
|
|
237
|
+
type: this.shapeToTypeString(fieldShape),
|
|
238
|
+
optional: fieldShape.optional || false,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else if (Array.isArray(shape)) {
|
|
243
|
+
// Union of shapes
|
|
244
|
+
for (const s of shape) {
|
|
245
|
+
if (s.type === 'Object' && s.fields) {
|
|
246
|
+
for (const [name, fieldShape] of Object.entries(s.fields)) {
|
|
247
|
+
if (!fields.find(f => f.name === name)) {
|
|
248
|
+
fields.push({
|
|
249
|
+
name,
|
|
250
|
+
type: this.shapeToTypeString(fieldShape),
|
|
251
|
+
optional: true, // Might not exist in all variants
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
155
256
|
}
|
|
156
257
|
}
|
|
157
|
-
return {
|
|
158
|
-
documents: [],
|
|
159
|
-
nextCursor: undefined,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
console.error('Failed to query documents:', error);
|
|
164
|
-
return {
|
|
165
|
-
documents: [],
|
|
166
|
-
nextCursor: undefined,
|
|
167
|
-
};
|
|
168
258
|
}
|
|
259
|
+
return fields;
|
|
169
260
|
}
|
|
170
|
-
|
|
171
|
-
if (!
|
|
172
|
-
|
|
261
|
+
shapeToTypeString(shape) {
|
|
262
|
+
if (!shape)
|
|
263
|
+
return 'unknown';
|
|
264
|
+
if (typeof shape === 'string')
|
|
265
|
+
return shape;
|
|
266
|
+
if (shape.type) {
|
|
267
|
+
switch (shape.type) {
|
|
268
|
+
case 'String': return 'string';
|
|
269
|
+
case 'Number': return 'number';
|
|
270
|
+
case 'Boolean': return 'boolean';
|
|
271
|
+
case 'Id': return `Id<"${shape.tableName || 'unknown'}">`;
|
|
272
|
+
case 'Array': return `Array<${this.shapeToTypeString(shape.value)}>`;
|
|
273
|
+
case 'Object': return 'object';
|
|
274
|
+
case 'Union': return shape.values?.map((v) => this.shapeToTypeString(v)).join(' | ') || 'union';
|
|
275
|
+
case 'Null': return 'null';
|
|
276
|
+
default: return shape.type.toLowerCase();
|
|
277
|
+
}
|
|
173
278
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return allDocs;
|
|
279
|
+
return 'unknown';
|
|
280
|
+
}
|
|
281
|
+
parseDocumentTypeToFields(docType) {
|
|
282
|
+
const fields = [];
|
|
283
|
+
if (docType && docType.type === 'object' && docType.value) {
|
|
284
|
+
for (const [name, fieldType] of Object.entries(docType.value)) {
|
|
285
|
+
fields.push({
|
|
286
|
+
name,
|
|
287
|
+
type: this.docTypeToString(fieldType),
|
|
288
|
+
optional: fieldType?.fieldType?.type === 'optional',
|
|
289
|
+
});
|
|
189
290
|
}
|
|
190
|
-
return {};
|
|
191
291
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
292
|
+
return fields;
|
|
293
|
+
}
|
|
294
|
+
docTypeToString(fieldType) {
|
|
295
|
+
if (!fieldType)
|
|
296
|
+
return 'unknown';
|
|
297
|
+
const ft = fieldType.fieldType || fieldType;
|
|
298
|
+
if (ft.type === 'optional' && ft.inner) {
|
|
299
|
+
return this.docTypeToString(ft.inner) + '?';
|
|
300
|
+
}
|
|
301
|
+
switch (ft.type) {
|
|
302
|
+
case 'string': return 'string';
|
|
303
|
+
case 'number': return 'number';
|
|
304
|
+
case 'boolean': return 'boolean';
|
|
305
|
+
case 'id': return `Id<"${ft.tableName || 'unknown'}">`;
|
|
306
|
+
case 'array': return `Array<${this.docTypeToString(ft.value)}>`;
|
|
307
|
+
case 'object': return 'object';
|
|
308
|
+
default: return ft.type || 'unknown';
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async queryDocuments(tableName, options = {}) {
|
|
312
|
+
if (!this.deploymentUrl) {
|
|
313
|
+
throw new Error('Convex client not initialized');
|
|
314
|
+
}
|
|
315
|
+
// Note: Querying documents requires running a query function
|
|
316
|
+
// This is a simplified implementation that returns empty for now
|
|
317
|
+
// A full implementation would need a deployed query function
|
|
318
|
+
return {
|
|
319
|
+
documents: [],
|
|
320
|
+
nextCursor: undefined,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
async getAllDocuments() {
|
|
324
|
+
if (!this.deploymentUrl) {
|
|
325
|
+
throw new Error('Convex client not initialized');
|
|
195
326
|
}
|
|
327
|
+
// Note: Getting all documents requires running query functions
|
|
328
|
+
// This returns empty for now
|
|
329
|
+
return {};
|
|
196
330
|
}
|
|
197
331
|
async runQuery(queryString) {
|
|
198
|
-
if (!this.
|
|
332
|
+
if (!this.deploymentUrl) {
|
|
199
333
|
throw new Error('Convex client not initialized');
|
|
200
334
|
}
|
|
201
|
-
// Execute a custom query
|
|
202
|
-
// Real implementation would use Convex's query API
|
|
203
335
|
throw new Error('Custom queries not yet implemented');
|
|
204
336
|
}
|
|
205
337
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex-client.js","sourceRoot":"","sources":["../src/convex-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAkC7B,MAAM,OAAO,YAAY;IACf,MAAM,GAA4B,IAAI,CAAC;IACvC,aAAa,GAAkB,IAAI,CAAC;IAE5C;QACE,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,kCAAkC;QAClC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAE3C,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACnE,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;oBACnE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBACzB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;oBAC5C,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,4BAA4B;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEvD,2CAA2C;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,4EAA4E;aACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,UAAU,EAAE,MAAM,CAAC,MAAM;gBACzB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,oEAAoE;YACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAA+B,CAAC,CAAC;YAExE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;oBACjC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;oBACvC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;iBAC7B,CAAC,CAAC,CAAC;YACN,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0DAA0D;YAC1D,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,uEAAuE;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAA+B,CAAC,CAAC;YAExE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;gBAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO;wBACL,SAAS;wBACT,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;4BAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;yBAC9B,CAAC,CAAC;wBACH,cAAc,EAAE,EAAE;qBACnB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,SAAS;gBACT,cAAc,EAAE,EAAE;gBAClB,cAAc,EAAE,EAAE;aACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;gBACL,SAAS;gBACT,cAAc,EAAE,EAAE;gBAClB,cAAc,EAAE,EAAE;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,UAKI,EAAE;QAEN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAAiC,CAAC,CAAC;YAE1E,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAI,MAA8B,CAAC,SAAS,CAAC,CAAC;gBAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;wBAC7C,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,aAAa,EAAE,GAAG,CAAC,aAAa;wBAChC,GAAG,GAAG;qBACP,CAAC,CAAC,CAAC;oBACJ,OAAO;wBACL,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;wBAClD,UAAU,EAAE,SAAS;qBACtB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,SAAS;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,SAAS;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAAiC,CAAC,CAAC;YAE1E,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,OAAO,GAA+B,EAAE,CAAC;gBAC/C,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAA6B,CAAC,EAAE,CAAC;oBAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;4BAC3C,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,aAAa,EAAE,GAAG,CAAC,aAAa;4BAChC,GAAG,GAAG;yBACP,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,yBAAyB;QACzB,mDAAmD;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"convex-client.js","sourceRoot":"","sources":["../src/convex-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "convex-mcp-visual",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
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",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"convex-mcp-visual": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist"
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
12
13
|
],
|
|
13
14
|
"scripts": {
|
|
14
15
|
"build": "npm run build:server && npm run build:apps",
|