superdb-mcp 0.51231.0
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/LICENSE +28 -0
- package/README.md +160 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +438 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/lsp-client.d.ts +86 -0
- package/dist/lib/lsp-client.d.ts.map +1 -0
- package/dist/lib/lsp-client.js +267 -0
- package/dist/lib/lsp-client.js.map +1 -0
- package/dist/lib/super.d.ts +26 -0
- package/dist/lib/super.d.ts.map +1 -0
- package/dist/lib/super.js +63 -0
- package/dist/lib/super.js.map +1 -0
- package/dist/lib/version.d.ts +57 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +200 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/tools/db.d.ts +56 -0
- package/dist/tools/db.d.ts.map +1 -0
- package/dist/tools/db.js +159 -0
- package/dist/tools/db.js.map +1 -0
- package/dist/tools/info.d.ts +63 -0
- package/dist/tools/info.d.ts.map +1 -0
- package/dist/tools/info.js +220 -0
- package/dist/tools/info.js.map +1 -0
- package/dist/tools/lsp.d.ts +37 -0
- package/dist/tools/lsp.d.ts.map +1 -0
- package/dist/tools/lsp.js +131 -0
- package/dist/tools/lsp.js.map +1 -0
- package/dist/tools/query.d.ts +51 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +164 -0
- package/dist/tools/query.js.map +1 -0
- package/docs/superdb-expert.md +814 -0
- package/docs/zq-to-super-upgrades.md +408 -0
- package/package.json +43 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, chrismo
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# SuperDB MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP (Model Context Protocol) server for [SuperDB](https://superdb.org/) that enables AI assistants to execute SuperSQL queries without shell escaping issues.
|
|
4
|
+
|
|
5
|
+
## Why?
|
|
6
|
+
|
|
7
|
+
SuperDB queries contain lots of shell metacharacters (`|`, `{}`, `$`, quotes, etc.) that cause escaping nightmares when passed through bash. This MCP server bypasses the shell entirely - Claude sends clean JSON parameters, and the server handles subprocess execution properly.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
Add to your Claude Code settings (`~/.claude/settings.json`) or project `.mcp.json`:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"mcpServers": {
|
|
16
|
+
"superdb": {
|
|
17
|
+
"command": "npx",
|
|
18
|
+
"args": ["-y", "superdb-mcp"]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Or install globally:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g superdb-mcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"mcpServers": {
|
|
33
|
+
"superdb": {
|
|
34
|
+
"command": "superdb-mcp"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### From Source
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git clone https://github.com/chrismo/superdb-mcp.git
|
|
44
|
+
cd superdb-mcp
|
|
45
|
+
npm install
|
|
46
|
+
npm run build
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcpServers": {
|
|
52
|
+
"superdb": {
|
|
53
|
+
"command": "node",
|
|
54
|
+
"args": ["/path/to/superdb-mcp/dist/index.js"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Tools
|
|
61
|
+
|
|
62
|
+
### Query Tools
|
|
63
|
+
|
|
64
|
+
#### `super_query`
|
|
65
|
+
Execute a SuperSQL query on data files.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
query: string # Required: The SuperSQL query
|
|
69
|
+
files?: string[] # File paths to query
|
|
70
|
+
data?: string # Inline data (alternative to files)
|
|
71
|
+
format?: string # Output: json (default), sup, csv, table
|
|
72
|
+
inputFormat?: string # Force input format
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### `super_validate`
|
|
76
|
+
Validate query syntax without executing.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
query: string # The query to validate
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### `super_schema`
|
|
83
|
+
Inspect types in a data file by sampling records.
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
file: string # Path to data file
|
|
87
|
+
sample?: number # Records to sample (default: 5)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Database Tools
|
|
91
|
+
|
|
92
|
+
#### `super_db_list`
|
|
93
|
+
List all pools in a SuperDB database.
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
lake?: string # Lake path (default: ~/.super)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### `super_db_query`
|
|
100
|
+
Query data from a database pool.
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
query: string # The SuperSQL query
|
|
104
|
+
pool?: string # Pool name
|
|
105
|
+
lake?: string # Lake path
|
|
106
|
+
format?: string # Output format
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### `super_db_load`
|
|
110
|
+
Load data into a pool.
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
pool: string # Pool name
|
|
114
|
+
files?: string[] # Files to load
|
|
115
|
+
data?: string # Inline data
|
|
116
|
+
lake?: string # Lake path
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### `super_db_create_pool`
|
|
120
|
+
Create a new pool.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
name: string # Pool name
|
|
124
|
+
orderBy?: string # Sort key
|
|
125
|
+
lake?: string # Lake path
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Example Usage
|
|
129
|
+
|
|
130
|
+
With the MCP server configured, Claude can execute queries like:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
super_query({
|
|
134
|
+
query: "where status == 'active' | aggregate count() by category",
|
|
135
|
+
files: ["data.json"]
|
|
136
|
+
})
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
No shell escaping needed - the query string is passed directly.
|
|
140
|
+
|
|
141
|
+
## Requirements
|
|
142
|
+
|
|
143
|
+
- Node.js 18+
|
|
144
|
+
- `super` binary in PATH ([installation](https://superdb.org/getting-started/install))
|
|
145
|
+
|
|
146
|
+
## Versioning
|
|
147
|
+
|
|
148
|
+
SuperDB is in active pre-release development without official versioned releases. The only official builds are via [Homebrew cask](https://superdb.org/getting-started/install.html#homebrew), identified by git SHA rather than version numbers.
|
|
149
|
+
|
|
150
|
+
To manage this, this repo uses pseudo-versions in the format `0.YMMDD` (last digit of year + month + day). For example, `0.51231` represents a build from 2025-12-31. See [asdf-superdb](https://github.com/chrismo/asdf-superdb) for more details on the versioning scheme.
|
|
151
|
+
|
|
152
|
+
This MCP server versions to match the bundled documentation:
|
|
153
|
+
- `0.51231.0` - initial release with docs for SuperDB pseudo-version 0.51231
|
|
154
|
+
- `0.51231.1`, `.2`, etc. - MCP-only patches (no doc changes)
|
|
155
|
+
|
|
156
|
+
The `super_info` tool reports both your runtime version and the bundled docs version, warning if they differ.
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { readFileSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { superQuery, superValidate, superSchema } from './tools/query.js';
|
|
9
|
+
import { superDbList, superDbQuery, superDbLoad, superDbCreatePool } from './tools/db.js';
|
|
10
|
+
import { superInfo, superHelp, superTestCompat } from './tools/info.js';
|
|
11
|
+
import { superComplete, superDocs } from './tools/lsp.js';
|
|
12
|
+
// Get docs directory path
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = dirname(__filename);
|
|
15
|
+
const docsDir = join(__dirname, '../docs');
|
|
16
|
+
const server = new Server({
|
|
17
|
+
name: 'superdb-mcp',
|
|
18
|
+
version: '0.51231.0',
|
|
19
|
+
}, {
|
|
20
|
+
capabilities: {
|
|
21
|
+
tools: {},
|
|
22
|
+
resources: {},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
// Resource definitions
|
|
26
|
+
const resources = [
|
|
27
|
+
{
|
|
28
|
+
uri: 'superdb://docs/expert',
|
|
29
|
+
name: 'SuperDB Expert Guide',
|
|
30
|
+
description: 'Comprehensive guide for SuperDB queries, syntax patterns, and best practices. Read this before writing complex queries.',
|
|
31
|
+
mimeType: 'text/markdown',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
uri: 'superdb://docs/upgrade-guide',
|
|
35
|
+
name: 'ZQ to SuperDB Upgrade Guide',
|
|
36
|
+
description: 'Migration guide covering all breaking changes from zq to SuperDB. Essential for upgrading old scripts.',
|
|
37
|
+
mimeType: 'text/markdown',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
// Tool definitions
|
|
41
|
+
const tools = [
|
|
42
|
+
{
|
|
43
|
+
name: 'super_info',
|
|
44
|
+
description: 'Get SuperDB version info, environment configuration, and compatibility status. Use SUPER_PATH env var to configure which super binary to use.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
compare_to: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'Optional path to another super binary to compare versions',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'super_help',
|
|
57
|
+
description: 'Get SuperDB documentation. Call this before writing complex queries or when migrating from zq or earlier versions of SuperDB. Topics: expert (syntax guide), upgrade (zq migration).',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
topic: {
|
|
62
|
+
type: 'string',
|
|
63
|
+
enum: ['expert', 'upgrade', 'upgrade-guide', 'migration'],
|
|
64
|
+
description: 'Documentation topic to retrieve',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ['topic'],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'super_query',
|
|
72
|
+
description: 'Execute a SuperDB/SuperSQL query on data files. Returns structured results without shell escaping issues.',
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
query: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
description: 'The SuperSQL query to execute',
|
|
79
|
+
},
|
|
80
|
+
files: {
|
|
81
|
+
type: 'array',
|
|
82
|
+
items: { type: 'string' },
|
|
83
|
+
description: 'File paths to query (JSON, Parquet, CSV, SUP, etc.)',
|
|
84
|
+
},
|
|
85
|
+
data: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Inline data to query (alternative to files)',
|
|
88
|
+
},
|
|
89
|
+
format: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
enum: ['json', 'sup', 'csv', 'table'],
|
|
92
|
+
description: 'Output format (default: json)',
|
|
93
|
+
},
|
|
94
|
+
inputFormat: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Force input format if auto-detection fails',
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
required: ['query'],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'super_validate',
|
|
104
|
+
description: 'Validate SuperSQL query syntax without executing. Returns diagnostics with position info and migration suggestions for common zq-to-SuperDB errors.',
|
|
105
|
+
inputSchema: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
properties: {
|
|
108
|
+
query: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
description: 'The SuperSQL query to validate',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
required: ['query'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'super_schema',
|
|
118
|
+
description: 'Inspect the schema/types of a data file by finding all unique shapes (record types) with counts and examples.',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
file: {
|
|
123
|
+
type: 'string',
|
|
124
|
+
description: 'Path to the data file',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
required: ['file'],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'super_db_list',
|
|
132
|
+
description: 'List all pools in a SuperDB database.',
|
|
133
|
+
inputSchema: {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
lake: {
|
|
137
|
+
type: 'string',
|
|
138
|
+
description: 'Lake path (default: uses SUPER_DB_LAKE env or ~/.super)',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: 'super_db_query',
|
|
145
|
+
description: 'Query data from a SuperDB database pool.',
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: {
|
|
149
|
+
query: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
description: 'The SuperSQL query to execute',
|
|
152
|
+
},
|
|
153
|
+
pool: {
|
|
154
|
+
type: 'string',
|
|
155
|
+
description: 'Pool name (can also use FROM in query)',
|
|
156
|
+
},
|
|
157
|
+
lake: {
|
|
158
|
+
type: 'string',
|
|
159
|
+
description: 'Lake path (default: uses SUPER_DB_LAKE env or ~/.super)',
|
|
160
|
+
},
|
|
161
|
+
format: {
|
|
162
|
+
type: 'string',
|
|
163
|
+
enum: ['json', 'sup', 'csv', 'table'],
|
|
164
|
+
description: 'Output format (default: json)',
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
required: ['query'],
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
name: 'super_db_load',
|
|
172
|
+
description: 'Load data into a SuperDB database pool.',
|
|
173
|
+
inputSchema: {
|
|
174
|
+
type: 'object',
|
|
175
|
+
properties: {
|
|
176
|
+
pool: {
|
|
177
|
+
type: 'string',
|
|
178
|
+
description: 'Pool name to load data into',
|
|
179
|
+
},
|
|
180
|
+
files: {
|
|
181
|
+
type: 'array',
|
|
182
|
+
items: { type: 'string' },
|
|
183
|
+
description: 'File paths to load',
|
|
184
|
+
},
|
|
185
|
+
data: {
|
|
186
|
+
type: 'string',
|
|
187
|
+
description: 'Inline data to load (alternative to files)',
|
|
188
|
+
},
|
|
189
|
+
lake: {
|
|
190
|
+
type: 'string',
|
|
191
|
+
description: 'Lake path (default: uses SUPER_DB_LAKE env or ~/.super)',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
required: ['pool'],
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
name: 'super_db_create_pool',
|
|
199
|
+
description: 'Create a new pool in a SuperDB database.',
|
|
200
|
+
inputSchema: {
|
|
201
|
+
type: 'object',
|
|
202
|
+
properties: {
|
|
203
|
+
name: {
|
|
204
|
+
type: 'string',
|
|
205
|
+
description: 'Name for the new pool',
|
|
206
|
+
},
|
|
207
|
+
orderBy: {
|
|
208
|
+
type: 'string',
|
|
209
|
+
description: 'Field to order/sort data by',
|
|
210
|
+
},
|
|
211
|
+
lake: {
|
|
212
|
+
type: 'string',
|
|
213
|
+
description: 'Lake path (default: uses SUPER_DB_LAKE env or ~/.super)',
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
required: ['name'],
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'super_test_compat',
|
|
221
|
+
description: 'Test a query against multiple SuperDB versions to detect syntax breaking changes. Useful for migration testing.',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: {
|
|
225
|
+
query: {
|
|
226
|
+
type: 'string',
|
|
227
|
+
description: 'The SuperSQL query to test',
|
|
228
|
+
},
|
|
229
|
+
versions: {
|
|
230
|
+
type: 'array',
|
|
231
|
+
items: { type: 'string' },
|
|
232
|
+
description: 'Paths to different super binaries to test against',
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
required: ['query', 'versions'],
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'super_complete',
|
|
240
|
+
description: 'Get code completions for a SuperSQL query at a position. Requires SUPERDB_LSP_PATH to be set.',
|
|
241
|
+
inputSchema: {
|
|
242
|
+
type: 'object',
|
|
243
|
+
properties: {
|
|
244
|
+
query: {
|
|
245
|
+
type: 'string',
|
|
246
|
+
description: 'The SuperSQL query text',
|
|
247
|
+
},
|
|
248
|
+
line: {
|
|
249
|
+
type: 'number',
|
|
250
|
+
description: 'Line number (0-based)',
|
|
251
|
+
},
|
|
252
|
+
character: {
|
|
253
|
+
type: 'number',
|
|
254
|
+
description: 'Character offset (0-based)',
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
required: ['query', 'line', 'character'],
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: 'super_docs',
|
|
262
|
+
description: 'Get documentation for a symbol at a position in a SuperSQL query. Requires SUPERDB_LSP_PATH to be set.',
|
|
263
|
+
inputSchema: {
|
|
264
|
+
type: 'object',
|
|
265
|
+
properties: {
|
|
266
|
+
query: {
|
|
267
|
+
type: 'string',
|
|
268
|
+
description: 'The SuperSQL query text',
|
|
269
|
+
},
|
|
270
|
+
line: {
|
|
271
|
+
type: 'number',
|
|
272
|
+
description: 'Line number (0-based)',
|
|
273
|
+
},
|
|
274
|
+
character: {
|
|
275
|
+
type: 'number',
|
|
276
|
+
description: 'Character offset (0-based)',
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
required: ['query', 'line', 'character'],
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
];
|
|
283
|
+
// Register resource list handler
|
|
284
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
285
|
+
resources,
|
|
286
|
+
}));
|
|
287
|
+
// Register resource read handler
|
|
288
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
289
|
+
const { uri } = request.params;
|
|
290
|
+
const resourceMap = {
|
|
291
|
+
'superdb://docs/expert': 'superdb-expert.md',
|
|
292
|
+
'superdb://docs/upgrade-guide': 'zq-to-super-upgrades.md',
|
|
293
|
+
};
|
|
294
|
+
const filename = resourceMap[uri];
|
|
295
|
+
if (!filename) {
|
|
296
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
const filepath = join(docsDir, filename);
|
|
300
|
+
const content = readFileSync(filepath, 'utf-8');
|
|
301
|
+
return {
|
|
302
|
+
contents: [
|
|
303
|
+
{
|
|
304
|
+
uri,
|
|
305
|
+
mimeType: 'text/markdown',
|
|
306
|
+
text: content,
|
|
307
|
+
},
|
|
308
|
+
],
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
throw new Error(`Failed to read resource: ${error instanceof Error ? error.message : String(error)}`);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
// Register tool list handler
|
|
316
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
317
|
+
tools,
|
|
318
|
+
}));
|
|
319
|
+
// Register tool call handler
|
|
320
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
321
|
+
const { name, arguments: args } = request.params;
|
|
322
|
+
try {
|
|
323
|
+
switch (name) {
|
|
324
|
+
case 'super_query': {
|
|
325
|
+
const result = await superQuery({
|
|
326
|
+
query: args?.query,
|
|
327
|
+
files: args?.files,
|
|
328
|
+
data: args?.data,
|
|
329
|
+
format: args?.format,
|
|
330
|
+
inputFormat: args?.inputFormat,
|
|
331
|
+
});
|
|
332
|
+
return {
|
|
333
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
case 'super_validate': {
|
|
337
|
+
const result = await superValidate(args?.query);
|
|
338
|
+
return {
|
|
339
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
case 'super_schema': {
|
|
343
|
+
const result = await superSchema(args?.file);
|
|
344
|
+
return {
|
|
345
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
case 'super_db_list': {
|
|
349
|
+
const result = await superDbList(args?.lake);
|
|
350
|
+
return {
|
|
351
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
case 'super_db_query': {
|
|
355
|
+
const result = await superDbQuery({
|
|
356
|
+
query: args?.query,
|
|
357
|
+
pool: args?.pool,
|
|
358
|
+
lake: args?.lake,
|
|
359
|
+
format: args?.format,
|
|
360
|
+
});
|
|
361
|
+
return {
|
|
362
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
case 'super_db_load': {
|
|
366
|
+
const result = await superDbLoad({
|
|
367
|
+
pool: args?.pool,
|
|
368
|
+
files: args?.files,
|
|
369
|
+
data: args?.data,
|
|
370
|
+
lake: args?.lake,
|
|
371
|
+
});
|
|
372
|
+
return {
|
|
373
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
case 'super_db_create_pool': {
|
|
377
|
+
const result = await superDbCreatePool({
|
|
378
|
+
name: args?.name,
|
|
379
|
+
orderBy: args?.orderBy,
|
|
380
|
+
lake: args?.lake,
|
|
381
|
+
});
|
|
382
|
+
return {
|
|
383
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
case 'super_info': {
|
|
387
|
+
const result = superInfo(args?.compare_to);
|
|
388
|
+
return {
|
|
389
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
case 'super_help': {
|
|
393
|
+
const result = superHelp(args?.topic);
|
|
394
|
+
return {
|
|
395
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
case 'super_test_compat': {
|
|
399
|
+
const result = await superTestCompat(args?.query, args?.versions);
|
|
400
|
+
return {
|
|
401
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
case 'super_complete': {
|
|
405
|
+
const result = await superComplete(args?.query, args?.line, args?.character);
|
|
406
|
+
return {
|
|
407
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
case 'super_docs': {
|
|
411
|
+
const result = await superDocs(args?.query, args?.line, args?.character);
|
|
412
|
+
return {
|
|
413
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
default:
|
|
417
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
422
|
+
return {
|
|
423
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }, null, 2) }],
|
|
424
|
+
isError: true,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
// Start the server
|
|
429
|
+
async function main() {
|
|
430
|
+
const transport = new StdioServerTransport();
|
|
431
|
+
await server.connect(transport);
|
|
432
|
+
console.error('SuperDB MCP server running on stdio');
|
|
433
|
+
}
|
|
434
|
+
main().catch((error) => {
|
|
435
|
+
console.error('Fatal error:', error);
|
|
436
|
+
process.exit(1);
|
|
437
|
+
});
|
|
438
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|