convex-mcp-visual 1.0.7 → 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/README.md CHANGED
@@ -1,284 +1,72 @@
1
1
  # Convex MCP Visual
2
2
 
3
- Visual MCP (Model Context Protocol) tools for exploring Convex databases. Opens interactive browser UIs alongside terminal output.
3
+ Visual MCP tools for exploring Convex databases. Opens interactive browser UIs alongside terminal output.
4
4
 
5
5
  **Features:**
6
- - **Graph View** - Visual schema diagram with draggable nodes and relationship lines
7
- - **List View** - Table-based schema explorer with document browser
8
- - **Dashboard** - Real-time metrics and charts
9
- - **Dark Mode** - VS Code-style dark theme (toggle in header)
10
- - **Dual Output** - Terminal markdown + browser UI simultaneously
11
-
12
- Works with Claude Code and any MCP-compatible client.
13
-
14
- ---
15
-
16
- ## Table of Contents
17
-
18
- - [How MCP Works](#how-mcp-works)
19
- - [Installation](#installation)
20
- - [Setup](#setup)
21
- - [Usage](#usage)
22
- - [Switching Convex Backends](#switching-convex-backends)
23
- - [Tools Reference](#tools-reference)
24
- - [Tech Stack](#tech-stack)
25
- - [Architecture](#architecture)
26
- - [Keyboard Shortcuts](#keyboard-shortcuts)
27
- - [Testing](#testing)
28
- - [Stopping the MCP Server](#stopping-the-mcp-server)
29
- - [Uninstalling](#uninstalling)
30
- - [Troubleshooting](#troubleshooting)
31
- - [Development](#development)
32
- - [Security](#security)
33
- - [Why This Project Exists](#why-this-project-exists)
34
- - [Current Limitations](#current-limitations)
35
- - [Wishlist & Future Plans](#wishlist--future-plans)
36
- - [Claude.ai Web Integration](#claudeai-web-integration-future)
37
- - [Contributing](#contributing)
38
- - [License](#license)
39
-
40
- ---
41
-
42
- ## How MCP Works
43
-
44
- MCP (Model Context Protocol) is a standard protocol that allows AI assistants like Claude to communicate with external tools and services. Here's how this MCP server works:
45
6
 
46
- ```
47
- ┌─────────────────────────────────────────────────────────────────────────┐
48
- │ Claude Code / MCP Client │
49
- │ │
50
- │ User: "Show me my Convex schema" │
51
- └─────────────────────────────────────────────────────────────────────────┘
52
-
53
- │ MCP Protocol (JSON-RPC over stdio)
54
-
55
- ┌─────────────────────────────────────────────────────────────────────────┐
56
- │ Convex MCP Visual Server │
57
- │ │
58
- │ • Receives tool requests via MCP protocol │
59
- │ • Authenticates with Convex using local credentials │
60
- │ • Queries Convex Cloud for schema/document data │
61
- │ • Returns structured responses to Claude │
62
- │ • Optionally opens browser UI on localhost:3456 │
63
- └─────────────────────────────────────────────────────────────────────────┘
64
- │ │
65
- │ HTTP Client │ Local HTTP Server
66
- ▼ ▼
67
- ┌───────────────────────┐ ┌───────────────────────────┐
68
- │ Convex Cloud │ │ Browser UI │
69
- │ │ │ (localhost:3456) │
70
- │ Your deployment at │ │ │
71
- │ xyz.convex.cloud │ │ Interactive graph view, │
72
- └───────────────────────┘ │ tables, dashboards │
73
- └───────────────────────────┘
74
- ```
75
-
76
- **Key Concepts:**
77
-
78
- 1. **stdio Mode**: The MCP server runs as a subprocess of Claude Code, communicating via stdin/stdout using JSON-RPC messages.
79
-
80
- 2. **Tools**: The server exposes two tools (`schema_browser`, `dashboard_view`) that Claude can invoke on your behalf.
81
-
82
- 3. **Dual Output**: Each tool returns both structured text for Claude AND opens a visual browser interface for you.
7
+ - Graph View with draggable table nodes and relationship lines
8
+ - List View with document browser and schema details
9
+ - Dashboard with real-time metrics and charts
10
+ - Dark mode support
83
11
 
84
- 4. **Authentication**: The server reads your Convex credentials from `~/.convex/` (created by `npx convex login`) or from environment variables.
12
+ Works with Claude Code, Claude Desktop, Cursor, and any MCP client.
85
13
 
86
- ---
14
+ ## Quick Start
87
15
 
88
- ## Installation
89
-
90
- ### Option 1: npx (Recommended)
91
-
92
- The easiest way - no local installation needed. Works with any MCP client.
93
-
94
- **npm package:** [npmjs.com/package/convex-mcp-visual](https://www.npmjs.com/package/convex-mcp-visual)
95
-
96
- #### Claude Code (CLI)
16
+ ### 1. Install
97
17
 
98
18
  ```bash
19
+ # Claude Code
99
20
  claude mcp add convex-visual -- npx convex-mcp-visual --stdio
100
- ```
101
-
102
- #### Claude Desktop
103
-
104
- Add to your Claude Desktop config file:
105
-
106
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
107
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
108
-
109
- ```json
110
- {
111
- "mcpServers": {
112
- "convex-visual": {
113
- "command": "npx",
114
- "args": ["convex-mcp-visual", "--stdio"]
115
- }
116
- }
117
- }
118
- ```
119
-
120
- #### Cursor / VS Code with MCP Extension
121
-
122
- Add to your MCP settings:
123
-
124
- ```json
125
- {
126
- "mcp.servers": {
127
- "convex-visual": {
128
- "command": "npx",
129
- "args": ["convex-mcp-visual", "--stdio"]
130
- }
131
- }
132
- }
133
- ```
134
-
135
- #### Any MCP Client
136
-
137
- The server uses standard MCP protocol over stdio:
138
-
139
- ```bash
140
- npx convex-mcp-visual --stdio
141
- ```
142
-
143
- ### Option 2: Global Install
144
21
 
145
- Install once, use anywhere:
146
-
147
- ```bash
148
- # Install globally
22
+ # Or install globally
149
23
  npm install -g convex-mcp-visual
150
-
151
- # Then configure your MCP client to run:
152
- convex-mcp-visual --stdio
153
- ```
154
-
155
- **Claude Code:**
156
- ```bash
157
- claude mcp add convex-visual -- convex-mcp-visual --stdio
158
- ```
159
-
160
- **Claude Desktop / Other clients:**
161
- ```json
162
- {
163
- "mcpServers": {
164
- "convex-visual": {
165
- "command": "convex-mcp-visual",
166
- "args": ["--stdio"]
167
- }
168
- }
169
- }
170
24
  ```
171
25
 
172
- ### Option 3: From GitHub (For Development)
26
+ ### 2. Setup Deploy Key
173
27
 
174
- Clone and build locally if you want to modify the code:
28
+ Run the interactive setup:
175
29
 
176
30
  ```bash
177
- # 1. Clone the repository
178
- git clone https://github.com/waynesutton/convex-mcp-visual.git
179
- cd convex-mcp-visual
180
-
181
- # 2. Install dependencies
182
- npm install
183
-
184
- # 3. Build the project
185
- npm run build
186
-
187
- # 4. Configure your MCP client to run:
188
- node /absolute/path/to/convex-mcp-visual/dist/index.js --stdio
31
+ npx convex-mcp-visual --setup
189
32
  ```
190
33
 
191
- **Important**: When using local installation, you must use the **absolute path** to `dist/index.js`.
34
+ Or set the environment variable:
192
35
 
193
- **Example paths:**
194
- - macOS: `/Users/yourname/projects/convex-mcp-visual/dist/index.js`
195
- - Linux: `/home/yourname/projects/convex-mcp-visual/dist/index.js`
196
- - Windows: `C:\Users\yourname\projects\convex-mcp-visual\dist\index.js`
197
-
198
- ### Verify Installation
199
-
200
- **Claude Code:**
201
36
  ```bash
202
- claude mcp list
203
- # You should see: convex-visual
37
+ export CONVEX_DEPLOY_KEY="prod:your-deployment|your-key"
204
38
  ```
205
39
 
206
- **Claude Desktop:**
207
- Restart the app, then check the MCP icon in the input area.
208
-
209
- **Other clients:**
210
- Check your client's MCP server status panel.
40
+ Get your deploy key from [dashboard.convex.dev](https://dashboard.convex.dev) under Settings > Deploy Keys.
211
41
 
212
- ### How It Works
42
+ ### 3. Test Connection
213
43
 
214
- ```
215
- ┌─────────────────────────────────────────────────────────────────┐
216
- │ claude mcp add convex-visual -- npx convex-mcp-visual --stdio │
217
- │ │
218
- │ This tells Claude Code: │
219
- │ 1. Register a server named "convex-visual" │
220
- │ 2. When tools are needed, run: npx convex-mcp-visual │
221
- │ 3. Communicate via --stdio (stdin/stdout JSON-RPC) │
222
- └─────────────────────────────────────────────────────────────────┘
223
-
224
-
225
- ┌─────────────────────────────────────────────────────────────────┐
226
- │ When you say "Show me my Convex schema": │
227
- │ │
228
- │ 1. Claude Code starts the MCP server process │
229
- │ 2. Sends JSON-RPC request: { method: "tools/call", ... } │
230
- │ 3. Server queries your Convex deployment │
231
- │ 4. Server opens browser UI on localhost:3456 │
232
- │ 5. Server returns markdown to Claude │
233
- │ 6. You see both: terminal output + browser visualization │
234
- └─────────────────────────────────────────────────────────────────┘
44
+ ```bash
45
+ npx convex-mcp-visual --test
235
46
  ```
236
47
 
237
- ---
48
+ ### 4. Use It
238
49
 
239
- ## Setup
50
+ In Claude, try:
240
51
 
241
- ### Step 1: Get Your Deploy Key
52
+ - "Show me my Convex schema"
53
+ - "What tables do I have?"
54
+ - "Create a dashboard for my data"
242
55
 
243
- Get a **deploy key** from the Convex dashboard:
244
-
245
- 1. Go to [dashboard.convex.dev](https://dashboard.convex.dev)
246
- 2. Select your project
247
- 3. Click **Settings** (gear icon)
248
- 4. Click **Deploy Keys** in the sidebar
249
- 5. Click **Generate Deploy Key**
250
- 6. Choose "Development" or "Production"
251
- 7. Copy the key (format: `prod:happy-animal-123|convex_deploy_abc123...`)
252
-
253
- ### Step 2: Save Your Deploy Key
254
-
255
- Add the key to your shell profile so it's always available.
256
-
257
- **For macOS/Linux (zsh):**
258
- ```bash
259
- echo 'export CONVEX_DEPLOY_KEY="prod:your-deployment|your-key-here"' >> ~/.zshrc
260
- source ~/.zshrc
261
- ```
56
+ ## Documentation
262
57
 
263
- **For macOS/Linux (bash):**
264
- ```bash
265
- echo 'export CONVEX_DEPLOY_KEY="prod:your-deployment|your-key-here"' >> ~/.bashrc
266
- source ~/.bashrc
267
- ```
58
+ - [Setup Guide](docs/setup.md) - Detailed configuration options
59
+ - [Tools Reference](docs/tools.md) - Parameters and keyboard shortcuts
60
+ - [Architecture](docs/architecture.md) - How it works
61
+ - [Troubleshooting](docs/troubleshooting.md) - Common issues and fixes
62
+ - [Limitations](docs/limitations.md) - Known limitations
268
63
 
269
- **For Windows (PowerShell):**
270
- ```powershell
271
- [Environment]::SetEnvironmentVariable("CONVEX_DEPLOY_KEY", "prod:your-deployment|your-key-here", "User")
272
- ```
64
+ ## Configuration
273
65
 
274
- ### Step 3: Add the MCP Server
66
+ ### Claude Desktop
275
67
 
276
- **For Claude Code:**
277
- ```bash
278
- claude mcp add convex-visual -- npx convex-mcp-visual --stdio
279
- ```
68
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
280
69
 
281
- **For Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
282
70
  ```json
283
71
  {
284
72
  "mcpServers": {
@@ -286,14 +74,17 @@ claude mcp add convex-visual -- npx convex-mcp-visual --stdio
286
74
  "command": "npx",
287
75
  "args": ["convex-mcp-visual", "--stdio"],
288
76
  "env": {
289
- "CONVEX_DEPLOY_KEY": "prod:your-deployment|your-key-here"
77
+ "CONVEX_DEPLOY_KEY": "prod:your-deployment|your-key"
290
78
  }
291
79
  }
292
80
  }
293
81
  }
294
82
  ```
295
83
 
296
- **For Cursor/VS Code** (MCP settings):
84
+ ### Cursor / VS Code
85
+
86
+ Add to MCP settings:
87
+
297
88
  ```json
298
89
  {
299
90
  "mcp.servers": {
@@ -305,712 +96,41 @@ claude mcp add convex-visual -- npx convex-mcp-visual --stdio
305
96
  }
306
97
  ```
307
98
 
308
- ### Step 4: Verify Setup
309
-
310
- ```bash
311
- # Check MCP server is registered (Claude Code)
312
- claude mcp list
313
-
314
- # Test the connection
315
- npx convex-mcp-visual --test
316
- ```
317
-
318
- You should see:
319
- ```
320
- Testing Convex connection...
321
- ✓ Connected to: https://your-deployment.convex.cloud
322
- ✓ Found X tables: users, posts, ...
323
- ```
324
-
325
- ---
326
-
327
- ## Changing or Updating Your Deploy Key
328
-
329
- To switch to a different Convex project or update your key:
330
-
331
- **1. Edit your shell profile:**
332
- ```bash
333
- # Open in your editor
334
- nano ~/.zshrc # or ~/.bashrc
335
-
336
- # Find and update this line:
337
- export CONVEX_DEPLOY_KEY="prod:new-deployment|new-key-here"
338
-
339
- # Save and reload
340
- source ~/.zshrc
341
- ```
342
-
343
- **2. Test the new connection:**
344
- ```bash
345
- npx convex-mcp-visual --test
346
- ```
347
-
348
- ---
349
-
350
- ## Removing the MCP Server
351
-
352
- **For Claude Code:**
353
- ```bash
354
- claude mcp remove convex-visual
355
- ```
356
-
357
- **For Claude Desktop:**
358
- Edit `~/Library/Application Support/Claude/claude_desktop_config.json` and remove the `convex-visual` entry.
359
-
360
- **Remove the environment variable (optional):**
361
- ```bash
362
- # Edit your shell profile
363
- nano ~/.zshrc
364
-
365
- # Delete the CONVEX_DEPLOY_KEY line, then reload
366
- source ~/.zshrc
367
- ```
368
-
369
- ---
370
-
371
- ## Usage
372
-
373
- In Claude Code, simply ask:
374
-
375
- | Request | What Happens |
376
- |---------|--------------|
377
- | "Show me my Convex schema" | Opens Schema Browser (graph view) |
378
- | "What tables do I have?" | Shows tables in terminal + browser |
379
- | "Show me the users table" | Opens Schema Browser pre-selected to users |
380
- | "Create a dashboard for my data" | Opens Realtime Dashboard |
381
-
382
- ### Example Conversation
383
-
384
- ```
385
- You: Show me my Convex schema
386
-
387
- Claude: I'll open the Schema Browser for your Convex deployment.
388
-
389
- [Opens browser with interactive graph view]
390
-
391
- Here's your schema:
392
- - users (245 documents)
393
- - posts (1,234 documents)
394
- - comments (892 documents)
395
-
396
- The users table references posts, and comments reference both users and posts.
397
- ```
398
-
399
- ---
400
-
401
- ## Switching Convex Backends
402
-
403
- You may need to switch between different Convex deployments (dev, staging, production).
404
-
405
- ### Method 1: Re-login to Different Project
406
-
407
- ```bash
408
- # Logout from current deployment
409
- npx convex logout
410
-
411
- # Login to a different project
412
- cd /path/to/other-convex-project
413
- npx convex login
414
- npx convex dev
415
- ```
416
-
417
- ### Method 2: Set Environment Variable
418
-
419
- ```bash
420
- # Temporarily use a different deployment
421
- export CONVEX_URL=https://different-project.convex.cloud
422
-
423
- # Or with a deploy key
424
- export CONVEX_DEPLOY_KEY=prod:your-other-key
425
- ```
426
-
427
- ### Method 3: Multiple MCP Registrations
428
-
429
- You can register multiple instances for different backends:
430
-
431
- ```bash
432
- # Production
433
- claude mcp add convex-prod -- npx convex-mcp-visual --stdio
434
- # Set CONVEX_DEPLOY_KEY in Claude Code settings for this instance
435
-
436
- # Development
437
- claude mcp add convex-dev -- npx convex-mcp-visual --stdio
438
- ```
439
-
440
- ### Viewing Current Deployment
441
-
442
- In Claude Code, ask: "What Convex deployment am I connected to?"
443
-
444
- The Schema Browser header also displays the current deployment URL.
445
-
446
- ---
447
-
448
- ## Tools Reference
449
-
450
- ### schema_browser
451
-
452
- Interactive schema explorer with two view modes.
453
-
454
- **Parameters:**
455
-
456
- | Parameter | Type | Default | Description |
457
- |-----------|------|---------|-------------|
458
- | `table` | string | none | Pre-select a specific table |
459
- | `showInferred` | boolean | true | Show inferred schemas from documents |
460
- | `pageSize` | number | 50 | Documents per page in list view |
461
-
462
- **Views:**
463
-
464
- - **Graph View**: Visual diagram showing tables as nodes with relationship lines
465
- - Drag nodes to rearrange
466
- - Pan/zoom to navigate
467
- - Click nodes to select
468
- - Toggle dark mode in header
469
-
470
- - **List View**: Traditional table list with schema details
471
- - Paginated document browser
472
- - Field types and optionality
473
- - Search across tables
474
-
475
- ### dashboard_view
476
-
477
- Real-time dashboard with metrics and charts.
478
-
479
- **Parameters:**
480
-
481
- | Parameter | Type | Default | Description |
482
- |-----------|------|---------|-------------|
483
- | `metrics` | array | [] | Metric definitions |
484
- | `charts` | array | [] | Chart configurations |
485
- | `refreshInterval` | number | 5 | Refresh interval in seconds |
486
-
487
- **Metric Aggregations:** count, sum, avg, min, max
488
-
489
- **Chart Types:** line, bar, pie
490
-
491
- ---
492
-
493
- ## Tech Stack
494
-
495
- ### Server
496
-
497
- | Technology | Purpose |
498
- |------------|---------|
499
- | **Node.js 18+** | Runtime environment |
500
- | **TypeScript** | Type-safe JavaScript |
501
- | **@modelcontextprotocol/sdk** | Official MCP protocol implementation |
502
- | **Convex SDK** | Convex database client |
503
-
504
- ### UI Applications
505
-
506
- | Technology | Purpose |
507
- |------------|---------|
508
- | **Vanilla TypeScript** | No framework dependencies (React, Vue, etc.) |
509
- | **HTML5 Canvas** | Graph rendering with pan/zoom/drag |
510
- | **CSS3 Variables** | Theming (light/dark mode) |
511
- | **Vite** | Fast bundling and hot reload |
512
-
513
- ### Why These Choices?
514
-
515
- - **No UI framework**: Keeps bundle small (~62KB for schema browser), loads instantly
516
- - **Canvas for graphs**: Smooth 60fps rendering, handles 100+ nodes easily
517
- - **CSS Variables**: Runtime theme switching without JavaScript
518
- - **TypeScript everywhere**: Catches errors at build time, better IDE support
519
- - **Vanilla over frameworks**: Fewer dependencies = fewer security vulnerabilities
520
-
521
- ### Dependencies
522
-
523
- ```json
524
- {
525
- "dependencies": {
526
- "@modelcontextprotocol/sdk": "^1.0.0",
527
- "convex": "^1.17.0"
528
- },
529
- "devDependencies": {
530
- "@types/node": "^20.0.0",
531
- "typescript": "^5.0.0",
532
- "vite": "^6.4.1"
533
- }
534
- }
535
- ```
536
-
537
- Only **2 runtime dependencies** - minimal attack surface, fast installs.
538
-
539
- ---
540
-
541
- ## Architecture
542
-
543
- ```
544
- convex-mcp-visual/
545
- ├── src/
546
- │ ├── index.ts # CLI entry (--stdio, --http, --test)
547
- │ ├── server.ts # MCP server + tool handlers
548
- │ ├── convex-client.ts # Convex authentication + queries
549
- │ ├── ui-server.ts # Local HTTP server (port 3456)
550
- │ ├── tools/
551
- │ │ ├── schema-browser.ts
552
- │ │ └── dashboard.ts
553
- │ └── resources/
554
- │ ├── schema-browser.ts
555
- │ └── dashboard.ts
556
- ├── apps/
557
- │ ├── schema-browser/ # Graph + list view UI
558
- │ └── realtime-dashboard/
559
- └── dist/ # Compiled output (published to npm)
560
- ```
561
-
562
- ---
563
-
564
- ## Keyboard Shortcuts
565
-
566
- ### Schema Browser
567
-
568
- | Key | Action |
569
- |-----|--------|
570
- | `G` | Toggle Graph/List view |
571
- | `B` | Toggle sidebar panel |
572
- | `R` | Refresh data |
573
- | `↑/↓` | Navigate tables |
574
- | `←/→` | Change page (List view) |
575
- | `/` | Focus search |
576
- | `+/-` | Zoom in/out (Graph view) |
577
-
578
- ### Dashboard
579
-
580
- | Key | Action |
581
- |-----|--------|
582
- | `R` | Refresh data |
583
-
584
- ---
585
-
586
- ## Testing
587
-
588
- ### Test Connection
589
-
590
- ```bash
591
- # Test that Convex credentials work
592
- npm test
593
- # or
594
- npx convex-mcp-visual --test
595
- ```
596
-
597
- **Expected output:**
598
- ```
599
- Testing Convex connection...
600
- ✓ Connected to: https://your-deployment.convex.cloud
601
- ✓ Found 5 tables: users, posts, comments, likes, sessions
602
- ```
603
-
604
- ### Test MCP Protocol
605
-
606
- ```bash
607
- # Run in HTTP mode for debugging
608
- npm run start:http
609
- # Server runs on http://localhost:3001
610
-
611
- # Test with curl
612
- curl -X POST http://localhost:3001 \
613
- -H "Content-Type: application/json" \
614
- -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
615
- ```
616
-
617
- ### Debug in Claude Code
99
+ ## CLI Options
618
100
 
619
- If tools aren't working:
620
- 1. Check `claude mcp list` shows the server
621
- 2. Try `claude mcp logs convex-visual` for error messages
622
- 3. Verify Convex credentials with `npm test`
623
-
624
- ---
625
-
626
- ## Stopping the MCP Server
627
-
628
- MCP servers are managed by Claude Code and run as subprocesses.
629
-
630
- ### Stop Temporarily
631
-
632
- The server stops automatically when Claude Code closes.
633
-
634
- ### Disable the Server
635
-
636
- ```bash
637
- # Remove from Claude Code
638
- claude mcp remove convex-visual
639
101
  ```
102
+ convex-mcp-visual [options]
640
103
 
641
- ### Kill Running Instances
642
-
643
- If the server gets stuck:
644
-
645
- ```bash
646
- # Find the process
647
- ps aux | grep convex-mcp-visual
648
-
649
- # Kill it
650
- kill <pid>
651
-
652
- # Or kill all node MCP servers
653
- pkill -f "convex-mcp-visual"
104
+ Options:
105
+ --stdio Run in stdio mode (default)
106
+ --http Run in HTTP mode
107
+ --port <num> Port for HTTP mode (default: 3001)
108
+ --test Test Convex connection
109
+ --setup Interactive setup wizard
110
+ -h, --help Show help
654
111
  ```
655
112
 
656
- ---
657
-
658
113
  ## Uninstalling
659
114
 
660
- ### Remove from Claude Code
661
-
662
115
  ```bash
116
+ # Remove from Claude Code
663
117
  claude mcp remove convex-visual
664
- ```
665
-
666
- ### Remove Global Package
667
118
 
668
- ```bash
119
+ # Remove global package
669
120
  npm uninstall -g convex-mcp-visual
670
121
  ```
671
122
 
672
- ### Remove Local Installation
673
-
674
- ```bash
675
- rm -rf /path/to/convex-mcp-visual
676
- ```
677
-
678
- ### Logout from Convex (Optional)
679
-
680
- ```bash
681
- npx convex logout
682
- ```
683
-
684
- This removes `~/.convex/config.json` but doesn't affect your Convex deployment.
685
-
686
- ---
687
-
688
- ## Troubleshooting
689
-
690
- ### Server not showing in Claude Code
691
-
692
- ```bash
693
- # 1. Verify the MCP server is registered
694
- claude mcp list
695
-
696
- # 2. If not listed, re-add with absolute path
697
- claude mcp add convex-visual -- node /full/path/to/dist/index.js --stdio
698
-
699
- # 3. Restart Claude Code
700
- ```
701
-
702
- ### "No Convex deployment configured"
703
-
704
- You need to set `CONVEX_DEPLOY_KEY`. See [Setup](#setup) for how to get a deploy key.
705
-
706
- ```bash
707
- # Re-add MCP server with your deploy key
708
- claude mcp remove convex-visual
709
- claude mcp add convex-visual -e CONVEX_DEPLOY_KEY=prod:your-deployment|your-key -- npx convex-mcp-visual --stdio
710
- ```
711
-
712
- ### "403 Forbidden" or "Connection failed"
713
-
714
- This means authentication failed. Common causes:
715
- 1. **Missing or invalid deploy key** - Get a new one from [Convex Dashboard](https://dashboard.convex.dev) → Settings → Deploy Keys
716
- 2. **Wrong format** - Deploy key should be `prod:deployment-name|convex_deploy_xxx...`
717
- 3. **Expired key** - Generate a new deploy key
718
-
719
- ```bash
720
- # Test your connection
721
- CONVEX_DEPLOY_KEY=your-key-here npx convex-mcp-visual --test
722
- ```
723
-
724
- ### Browser doesn't open
725
-
726
- - Check if port 3456 is available: `lsof -i :3456`
727
- - The terminal output always works even if browser fails
728
- - Try opening manually: `http://localhost:3456`
729
-
730
- ### Authentication errors
731
-
732
- Get a new deploy key from the Convex Dashboard:
733
- 1. Go to [dashboard.convex.dev](https://dashboard.convex.dev)
734
- 2. Select your project → Settings → Deploy Keys
735
- 3. Generate a new key
736
- 4. Update your MCP server configuration
737
-
738
- ### Windows users
739
-
740
- Use cmd wrapper in Claude Code settings:
741
-
742
- ```json
743
- {
744
- "command": "cmd",
745
- "args": ["/c", "npx", "convex-mcp-visual", "--stdio"]
746
- }
747
- ```
748
-
749
- ### "Connection closed" errors
750
-
751
- This usually means the server crashed. Check:
752
- 1. Node.js version (requires 18+)
753
- 2. Run `npm test` to verify credentials
754
- 3. Check for error output in Claude Code logs
755
-
756
- ### Canvas appears blurry
757
-
758
- The graph view scales for retina displays. If blurry, try:
759
- - Refreshing the browser
760
- - Zooming to 100% with the zoom controls
761
-
762
- ---
763
-
764
- ## Development
765
-
766
- ### Build Commands
767
-
768
- ```bash
769
- npm install # Install dependencies
770
- npm run build # Build server + UI apps
771
- npm run build:server # Build only TypeScript server
772
- npm run build:apps # Build only UI apps (Vite)
773
- npm run dev # Watch mode for server
774
- npm run clean # Remove dist/ folder
775
- ```
776
-
777
- ### Environment Variables
778
-
779
- | Variable | Purpose | Default |
780
- |----------|---------|---------|
781
- | `CONVEX_URL` | Override deployment URL | From ~/.convex/ |
782
- | `CONVEX_DEPLOY_KEY` | Deploy key for auth | None |
783
- | `MCP_TIMEOUT` | Server startup timeout | 10000ms |
784
-
785
- ---
786
-
787
- ## Security
788
-
789
- ### What Data Does This Server Access?
790
-
791
- - **Schema information**: Table names, field types, document counts
792
- - **Sample documents**: First 50 documents per table (for display)
793
- - **No write access**: This tool only reads data, never modifies
794
-
795
- ### Credentials Storage
796
-
797
- - Credentials are read from `~/.convex/` or environment variables
798
- - Credentials are never logged, stored, or transmitted elsewhere
799
- - The local web server only binds to `localhost` (127.0.0.1)
800
-
801
- ### Network Security
802
-
803
- - All Convex API calls use HTTPS
804
- - The local UI server (port 3456) only accepts connections from localhost
805
- - No data is sent to third parties
806
-
807
- ### Production Deploy Keys
808
-
809
- If using `CONVEX_DEPLOY_KEY`:
810
- - Use read-only deploy keys when possible
811
- - Never commit deploy keys to version control
812
- - Use environment variables or secrets management
813
-
814
- ---
815
-
816
- ## How It Differs from Official Convex MCP
817
-
818
- | Feature | Official `npx convex mcp` | This Project |
819
- |---------|---------------------------|--------------|
820
- | Output | Text/JSON for AI | Visual browser UI |
821
- | Purpose | AI coding assistant | Human exploration |
822
- | Schema view | Text tables | Interactive graph diagram |
823
- | Documents | JSON output | Paginated table browser |
824
- | Dashboard | None | Real-time charts |
825
- | Dark mode | No | Yes (VS Code style) |
826
-
827
- **Use the official Convex MCP** for AI-assisted coding tasks.
828
- **Use this project** when you want to visually explore your database.
829
-
830
- ---
831
-
832
- ## Why This Project Exists
833
-
834
- ### The Problem
835
-
836
- When working with Convex databases, developers often need to:
837
- - Quickly visualize table relationships and schema structure
838
- - Browse documents without writing queries
839
- - Understand how data flows between tables
840
- - Get a high-level overview before diving into code
841
-
842
- The official `npx convex mcp` is optimized for AI-assisted coding—it returns structured text that Claude can parse and use to help you write code. But humans often want to *see* their data visually.
843
-
844
- ### The Solution
845
-
846
- This project bridges that gap by providing:
847
- - **Visual schema diagrams** that show relationships at a glance
848
- - **Interactive exploration** with drag, pan, and zoom
849
- - **Real-time dashboards** for monitoring data
850
- - **Dual output** so Claude still gets structured data while you get visuals
851
-
852
- ---
853
-
854
- ## Current Limitations
855
-
856
- ### What's Not Yet Supported
857
-
858
- | Feature | Status | Notes |
859
- |---------|--------|-------|
860
- | Write operations | Not planned | Read-only by design for safety |
861
- | Custom queries | Not implemented | Would require query builder UI |
862
- | Real-time subscriptions | Partial | Dashboard refreshes on interval, not live |
863
- | Multiple deployments | Manual | Must switch via env vars or re-login |
864
- | Schema editing | Not planned | Use Convex dashboard for schema changes |
865
- | Index visualization | Partial | Shows index names, not full definitions |
866
- | Function introspection | Not implemented | Would show Convex functions |
867
-
868
- ### Known Issues
869
-
870
- - **Large schemas**: Performance may degrade with 50+ tables
871
- - **Complex relationships**: Only detects `Id<"table">` patterns, not custom references
872
- - **Browser popup blockers**: May need to allow popups for localhost:3456
873
-
874
- ---
875
-
876
- ## Wishlist & Future Plans
877
-
878
- ### Short-Term (Next Release)
879
-
880
- - [ ] **Export schema as image** - PNG/SVG export of graph view
881
- - [ ] **Query builder** - Visual interface to build simple queries
882
- - [ ] **Improved relationship detection** - Detect array references, nested IDs
883
- - [ ] **Table statistics** - Show min/max/avg for numeric fields
884
- - [ ] **Search within documents** - Full-text search across all tables
885
-
886
- ### Medium-Term
887
-
888
- - [ ] **Schema diff view** - Compare schema between environments
889
- - [ ] **Data sampling** - Statistical overview of field values
890
- - [ ] **Relationship path finder** - Show how two tables connect
891
- - [ ] **Custom themes** - User-defined color schemes
892
- - [ ] **Bookmarks** - Save frequently accessed tables/views
893
-
894
- ### Long-Term Vision
895
-
896
- - [ ] **Claude.ai web integration** (see below)
897
- - [ ] **Collaborative viewing** - Share schema view with team
898
- - [ ] **Schema history** - Track schema changes over time
899
- - [ ] **AI-powered insights** - Claude analyzes schema and suggests optimizations
900
-
901
- ---
902
-
903
- ## Claude.ai Web Integration (Future)
904
-
905
- ### Current State
906
-
907
- This MCP server currently works with:
908
- - **Claude Code (CLI)** - Full support via stdio
909
- - **Claude Desktop** - Full support via MCP configuration
910
- - **Any MCP client** - Standard MCP protocol
911
-
912
- It does **not** yet work with:
913
- - **Claude.ai (web)** - Browser-based Claude at claude.ai
914
-
915
- ### Why It Doesn't Work on Claude.ai Web (Yet)
916
-
917
- MCP servers run as local processes that communicate via stdio or HTTP. The Claude.ai web interface runs in a browser sandbox and cannot:
918
- 1. Spawn local processes
919
- 2. Access localhost servers
920
- 3. Read local files (~/.convex/)
921
-
922
- ### How It Could Work in the Future
923
-
924
- Several approaches are being explored in the MCP ecosystem:
925
-
926
- #### Option 1: MCP Gateway Service
927
- ```
928
- Claude.ai (web) → MCP Gateway (cloud) → Your local MCP server
929
-
930
- Authenticated tunnel
931
- ```
932
-
933
- A cloud gateway that securely proxies MCP requests to your local server. This would require:
934
- - Secure authentication (OAuth, API keys)
935
- - Tunnel software running locally
936
- - Trust model for cloud proxy
937
-
938
- #### Option 2: Browser Extension
939
- ```
940
- Claude.ai (web) → Browser Extension → Local MCP server
941
- ```
942
-
943
- A Chrome/Firefox extension that:
944
- - Intercepts MCP tool requests from Claude.ai
945
- - Routes them to localhost MCP servers
946
- - Returns results to the web page
947
-
948
- #### Option 3: Convex-Hosted MCP
949
- ```
950
- Claude.ai (web) → Convex Cloud MCP endpoint
951
-
952
- Your Convex deployment
953
- ```
954
-
955
- Convex could host MCP endpoints directly, eliminating the need for local servers. This would require:
956
- - Convex adding MCP protocol support
957
- - Authentication via Convex dashboard
958
- - No local installation needed
959
-
960
- #### Option 4: Claude.ai Native MCP Support
961
-
962
- Anthropic could add native MCP support to Claude.ai with:
963
- - Secure server registration in account settings
964
- - OAuth-based authentication to your servers
965
- - Sandboxed execution environment
966
-
967
- ### What You Can Do Now
968
-
969
- 1. **Use Claude Code CLI** - Full MCP support today
970
- 2. **Use Claude Desktop** - Configure MCP in settings
971
- 3. **Watch for updates** - MCP ecosystem is evolving rapidly
972
- 4. **Star the repo** - Show interest in web integration
973
-
974
- ### Preparing for Web Support
975
-
976
- When web integration becomes available, this project is designed to be ready:
977
-
978
- - **Stateless design**: Each request is independent
979
- - **HTTP mode**: Already supports HTTP transport (`--http` flag)
980
- - **Standard MCP**: Uses official MCP SDK
981
- - **No local file requirements**: Can work with `CONVEX_DEPLOY_KEY` env var
982
-
983
- ---
984
-
985
123
  ## Contributing
986
124
 
987
- ### Areas Where Help Is Needed
988
-
989
- 1. **Testing on Windows** - Verify cmd wrapper works correctly
990
- 2. **Performance optimization** - Large schema handling
991
- 3. **Accessibility** - Keyboard navigation, screen reader support
992
- 4. **Documentation** - More examples, video tutorials
993
- 5. **UI polish** - Animations, transitions, edge cases
994
-
995
- ### Development Setup
125
+ See [Development](docs/architecture.md) for build instructions.
996
126
 
997
127
  ```bash
998
128
  git clone https://github.com/waynesutton/convex-mcp-visual.git
999
129
  cd convex-mcp-visual
1000
130
  npm install
1001
- npm run dev # Watch mode
131
+ npm run build
1002
132
  ```
1003
133
 
1004
- ### Submitting Changes
1005
-
1006
- 1. Fork the repository
1007
- 2. Create a feature branch
1008
- 3. Make your changes
1009
- 4. Run `npm run build` to verify
1010
- 5. Submit a pull request
1011
-
1012
- ---
1013
-
1014
134
  ## License
1015
135
 
1016
136
  MIT