convex-mcp-visual 1.0.3 → 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 CHANGED
@@ -238,36 +238,45 @@ Check your client's MCP server status panel.
238
238
 
239
239
  ## Setup
240
240
 
241
- ### 1. Convex Authentication
241
+ ### 1. Get Your Deploy Key (Required)
242
242
 
243
- You need valid Convex credentials. The server checks these locations in order:
243
+ You need a **deploy key** from the Convex dashboard. This is different from `npx convex login`.
244
244
 
245
- | Priority | Source | How to Set |
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
- **Recommended for local development:**
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
- ```bash
254
- # Login to Convex (creates ~/.convex/config.json)
255
- npx convex login
255
+ ### 2. Add MCP Server with Deploy Key
256
256
 
257
- # Navigate to your Convex project directory
258
- cd your-convex-project
257
+ **For Claude Code:**
259
258
 
260
- # Deploy your project (optional, updates local config)
261
- npx convex dev
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 CI/CD or servers:**
263
+ **For Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
265
264
 
266
- ```bash
267
- export CONVEX_DEPLOY_KEY=prod:your-deploy-key-here
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
- ### 2. Verify Installation
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
- # Login to Convex
626
- npx convex login
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
- # Or set environment variable
629
- export CONVEX_URL=https://your-deployment.convex.cloud
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
- ```bash
641
- # Clear credentials and re-login
642
- npx convex logout
643
- npx convex login
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
 
@@ -2,7 +2,7 @@
2
2
  * Convex Client Wrapper
3
3
  *
4
4
  * Handles authentication and communication with Convex Cloud.
5
- * Reads credentials from ~/.convex/ or CONVEX_DEPLOY_KEY.
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;AAOH,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,MAAM,CAAiC;IAC/C,OAAO,CAAC,aAAa,CAAuB;;IAM5C,OAAO,CAAC,UAAU;IAgClB,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAI3B,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IA0B/C,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBlC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuCvD,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;IAqCpD,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IA8BtD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAStD"}
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"}
@@ -2,15 +2,13 @@
2
2
  * Convex Client Wrapper
3
3
  *
4
4
  * Handles authentication and communication with Convex Cloud.
5
- * Reads credentials from ~/.convex/ or CONVEX_DEPLOY_KEY.
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
- else {
25
- // Try to read from local Convex config
26
- const convexConfigPath = join(homedir(), '.convex', 'config.json');
27
- if (existsSync(convexConfigPath)) {
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 config = JSON.parse(readFileSync(convexConfigPath, 'utf-8'));
30
- if (config.deploymentUrl) {
31
- this.deploymentUrl = config.deploymentUrl;
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 config read errors
55
+ // Ignore errors
36
56
  }
37
57
  }
38
58
  }
39
- if (this.deploymentUrl) {
40
- this.client = new ConvexHttpClient(this.deploymentUrl);
41
- // Set auth token if deploy key is provided
42
- if (deployKey) {
43
- this.client.setAuth(deployKey);
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.client !== null;
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.client || !this.deploymentUrl) {
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 list tables to verify connection
62
- const tables = await this.listTables();
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: tables.map((t) => t.name),
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.client) {
132
+ if (!this.deploymentUrl) {
80
133
  throw new Error('Convex client not initialized');
81
134
  }
82
135
  try {
83
- // Call the schema_info:listTables function in the Convex deployment
84
- const result = await this.client.query('schema_info:listTables');
85
- if (Array.isArray(result)) {
86
- return result.map((table) => ({
87
- name: table.name,
88
- documentCount: table.documentCount || 0,
89
- indexes: table.indexes || [],
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
- return [];
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.client) {
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
- // Call the schema_info:listTables function and find the specific table
106
- const result = await this.client.query('schema_info:listTables');
107
- if (Array.isArray(result)) {
108
- const table = result.find((t) => t.name === tableName);
109
- if (table && table.fields) {
110
- return {
111
- tableName,
112
- declaredFields: table.fields.map((f) => ({
113
- name: f.name,
114
- type: f.type,
115
- optional: f.optional || false,
116
- })),
117
- inferredFields: [],
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
- async queryDocuments(tableName, options = {}) {
137
- if (!this.client) {
138
- throw new Error('Convex client not initialized');
139
- }
140
- try {
141
- // Call the schema_info:getDocuments function to get sample data
142
- const result = await this.client.query('schema_info:getDocuments');
143
- if (result && typeof result === 'object') {
144
- const tableData = result[tableName];
145
- if (Array.isArray(tableData)) {
146
- const documents = tableData.map((doc) => ({
147
- _id: doc._id,
148
- _creationTime: doc._creationTime,
149
- ...doc,
150
- }));
151
- return {
152
- documents: documents.slice(0, options.limit || 50),
153
- nextCursor: undefined,
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
- async getAllDocuments() {
171
- if (!this.client) {
172
- throw new Error('Convex client not initialized');
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
- try {
175
- // Call the schema_info:getDocuments function to get all documents
176
- const result = await this.client.query('schema_info:getDocuments');
177
- if (result && typeof result === 'object') {
178
- const allDocs = {};
179
- for (const [tableName, docs] of Object.entries(result)) {
180
- if (Array.isArray(docs)) {
181
- allDocs[tableName] = docs.map((doc) => ({
182
- _id: doc._id,
183
- _creationTime: doc._creationTime,
184
- ...doc,
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
- catch (error) {
193
- console.error('Failed to get all documents:', error);
194
- return {};
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.client) {
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":"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"}
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",
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",