hyperdb-mcp 1.0.0-rc.1 → 1.0.0-rc.2
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 +26 -19
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
An MCP (Model Context Protocol) server that turns the Hyper columnar database into an instant SQL analytics engine. Data flows in from other MCP plugins or files, lands in Hyper automatically, and becomes queryable with SQL — no setup, no schema files, no database management.
|
|
6
6
|
|
|
7
|
-
Built on the pure-Rust [`hyperdb-api`](../hyperdb-api/) crate for maximum performance
|
|
7
|
+
Built on the pure-Rust [`hyperdb-api`](../hyperdb-api/) crate for maximum performance. On a single connection that crate benchmarks at 68.9M rows/sec inserts with the async `AsyncArrowInserter`, 25.0M rows/sec with the sync `Inserter`, and 31.1M rows/sec full-scan queries, with constant memory for billion-row results — see [docs/BENCHMARK_GUIDE.md](../docs/BENCHMARK_GUIDE.md).
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -237,7 +237,14 @@ describe({ database: "persistent" })
|
|
|
237
237
|
sample({ table: "customers", database: "persistent" })
|
|
238
238
|
```
|
|
239
239
|
|
|
240
|
-
The `database` parameter is available on `query`, `execute`, `load_data`,
|
|
240
|
+
The `database` parameter is available on `query`, `execute`, `load_data`,
|
|
241
|
+
`load_file`, `load_files`, `watch_directory`, `describe`, `sample`, `chart`,
|
|
242
|
+
`export`, and `set_table_metadata`. The shorthand `persist: true` (sugar for
|
|
243
|
+
`database: "persistent"`) is available on `load_data`, `load_file`,
|
|
244
|
+
`load_files`, and `watch_directory`. Read tools generally accept a read-only
|
|
245
|
+
user attachment; write tools require a writable one. The exception is the KV
|
|
246
|
+
family: every `kv_*` call to a user attachment requires it to be writable
|
|
247
|
+
because the backing table may need initialization.
|
|
241
248
|
|
|
242
249
|
Every successful database-routed response includes the canonical
|
|
243
250
|
`resolved_database`: `"local"`, `"persistent"`, or the lowercase attached
|
|
@@ -332,7 +339,7 @@ If hyperd repeatedly fails to start (3 attempts within 60 seconds — e.g., misc
|
|
|
332
339
|
|
|
333
340
|
Ingest inline data and run a SQL query in a single call.
|
|
334
341
|
|
|
335
|
-
```
|
|
342
|
+
```text
|
|
336
343
|
query_data(data: '[{"region":"West","revenue":1200},...]', sql: 'SELECT region, SUM(revenue) FROM data GROUP BY region')
|
|
337
344
|
```
|
|
338
345
|
|
|
@@ -348,7 +355,7 @@ query_data(data: '[{"region":"West","revenue":1200},...]', sql: 'SELECT region,
|
|
|
348
355
|
|
|
349
356
|
Ingest a file and run a SQL query in a single call. Streams from disk — handles files of any size.
|
|
350
357
|
|
|
351
|
-
```
|
|
358
|
+
```text
|
|
352
359
|
query_file(path: '/tmp/sales.parquet', sql: 'SELECT TOP 10 * FROM sales ORDER BY amount DESC')
|
|
353
360
|
```
|
|
354
361
|
|
|
@@ -365,7 +372,7 @@ query_file(path: '/tmp/sales.parquet', sql: 'SELECT TOP 10 * FROM sales ORDER BY
|
|
|
365
372
|
|
|
366
373
|
Load inline data into a named local, persistent, or attached-database table.
|
|
367
374
|
|
|
368
|
-
```
|
|
375
|
+
```text
|
|
369
376
|
load_data(table: 'customers', data: '[{"id":1,"name":"Alice"},...]')
|
|
370
377
|
```
|
|
371
378
|
|
|
@@ -381,7 +388,7 @@ load_data(table: 'customers', data: '[{"id":1,"name":"Alice"},...]')
|
|
|
381
388
|
|
|
382
389
|
Load a file into a named local, persistent, or attached-database table.
|
|
383
390
|
|
|
384
|
-
```
|
|
391
|
+
```text
|
|
385
392
|
load_file(table: 'orders', path: '/tmp/orders.csv')
|
|
386
393
|
```
|
|
387
394
|
|
|
@@ -404,7 +411,7 @@ local table. Pass the absolute path to the Iceberg table root (the
|
|
|
404
411
|
directory containing `metadata/` and `data/`); hyperd's native Iceberg
|
|
405
412
|
reader derives the schema and resolves the snapshot.
|
|
406
413
|
|
|
407
|
-
```
|
|
414
|
+
```text
|
|
408
415
|
load_iceberg(table: 'sales', path: '/lake/warehouse/db/sales')
|
|
409
416
|
```
|
|
410
417
|
|
|
@@ -423,7 +430,7 @@ Iceberg table metadata.
|
|
|
423
430
|
|
|
424
431
|
Run a **read-only** SQL query against local (default), persistent, or an attached database. Accepts `SELECT`, `WITH`, `EXPLAIN`, `SHOW`, `VALUES`. For DDL/DML use `execute`.
|
|
425
432
|
|
|
426
|
-
```
|
|
433
|
+
```text
|
|
427
434
|
query(sql: 'SELECT c.name, SUM(o.amount) FROM orders o JOIN customers c ON o.customer_id = c.id GROUP BY c.name')
|
|
428
435
|
```
|
|
429
436
|
|
|
@@ -431,7 +438,7 @@ query(sql: 'SELECT c.name, SUM(o.amount) FROM orders o JOIN customers c ON o.cus
|
|
|
431
438
|
|
|
432
439
|
Execute one or more **mutating** SQL statements as an atomic batch: `CREATE TABLE`, `INSERT`, `UPDATE`, `DELETE`, `DROP TABLE`, `ALTER`, `COPY`, etc. `sql` is an array of statements; multi-element batches run inside a transaction (all commit or all roll back). Single-element batches auto-commit, same as a one-off statement. Returns the per-statement affected row counts plus a total. Disabled in read-only mode.
|
|
433
440
|
|
|
434
|
-
```
|
|
441
|
+
```text
|
|
435
442
|
// Single statement (auto-commit)
|
|
436
443
|
execute(sql: ['CREATE TABLE archived_orders AS SELECT * FROM orders WHERE year < 2024'])
|
|
437
444
|
|
|
@@ -459,7 +466,7 @@ List all tables in the selected database with their schemas, column types, and r
|
|
|
459
466
|
|
|
460
467
|
Return the schema, total row count, and first N rows of a table in a single call.
|
|
461
468
|
|
|
462
|
-
```
|
|
469
|
+
```text
|
|
463
470
|
sample(table: 'orders', n: 10)
|
|
464
471
|
```
|
|
465
472
|
|
|
@@ -483,7 +490,7 @@ Use it **before** `load_file` whenever you are unsure about types, or **after**
|
|
|
483
490
|
reported `type` + `min` / `max` directly into a partial `schema` override on the
|
|
484
491
|
subsequent `load_file` call.
|
|
485
492
|
|
|
486
|
-
```
|
|
493
|
+
```text
|
|
487
494
|
inspect_file(path: '/tmp/owid-population.csv')
|
|
488
495
|
```
|
|
489
496
|
|
|
@@ -531,7 +538,7 @@ only for the lifetime of the server process.
|
|
|
531
538
|
|
|
532
539
|
#### `save_query`
|
|
533
540
|
|
|
534
|
-
```
|
|
541
|
+
```text
|
|
535
542
|
save_query(name: 'top_5_customers', sql: 'SELECT customer, SUM(amount) AS total FROM orders GROUP BY customer ORDER BY total DESC LIMIT 5', description: 'Biggest spenders this year')
|
|
536
543
|
```
|
|
537
544
|
|
|
@@ -547,7 +554,7 @@ first if you intend to overwrite. Non-read-only SQL is rejected with
|
|
|
547
554
|
|
|
548
555
|
#### `delete_query`
|
|
549
556
|
|
|
550
|
-
```
|
|
557
|
+
```text
|
|
551
558
|
delete_query(name: 'top_5_customers')
|
|
552
559
|
```
|
|
553
560
|
|
|
@@ -584,7 +591,7 @@ Nine tools cover the surface:
|
|
|
584
591
|
| `kv_pop` | Destructively read-and-remove the lowest-keyed entry (atomic) | `store`, `database`, `persist` |
|
|
585
592
|
| `kv_clear` | Delete all keys in a store (returns count removed) | `store`, `database`, `persist` |
|
|
586
593
|
|
|
587
|
-
```
|
|
594
|
+
```text
|
|
588
595
|
kv_set(store: 'session', key: 'last_report', value: '{"rows": 4210}', database: 'persistent')
|
|
589
596
|
kv_get(store: 'session', key: 'last_report')
|
|
590
597
|
```
|
|
@@ -607,7 +614,7 @@ Key properties:
|
|
|
607
614
|
|
|
608
615
|
Write query results or a table to a file.
|
|
609
616
|
|
|
610
|
-
```
|
|
617
|
+
```text
|
|
611
618
|
export(table: 'orders', path: '~/Desktop/orders.parquet', format: 'parquet')
|
|
612
619
|
export(sql: 'SELECT ...', path: '~/Desktop/analysis.hyper', format: 'hyper')
|
|
613
620
|
```
|
|
@@ -630,7 +637,7 @@ destination and materializes every user table from the selected source into it.
|
|
|
630
637
|
Render a bounded quick diagnostic from a SQL query. This convenience tool is
|
|
631
638
|
for inspecting or sharing one chart, not for dashboard/layout composition.
|
|
632
639
|
|
|
633
|
-
```
|
|
640
|
+
```text
|
|
634
641
|
chart(sql: 'SELECT product, SUM(revenue) as total FROM sales GROUP BY product', chart_type: 'bar', x: 'product', y: 'total', title: 'Revenue by Product')
|
|
635
642
|
```
|
|
636
643
|
|
|
@@ -684,7 +691,7 @@ bound, never zero.
|
|
|
684
691
|
|
|
685
692
|
Monitor a directory for data files and auto-append them to a target table.
|
|
686
693
|
|
|
687
|
-
```
|
|
694
|
+
```text
|
|
688
695
|
watch_directory(path: '/tmp/inbox', table: 'events')
|
|
689
696
|
unwatch_directory(path: '/tmp/inbox')
|
|
690
697
|
```
|
|
@@ -899,7 +906,7 @@ Hyper uses the Salesforce Data Cloud SQL dialect (PostgreSQL-compatible with ext
|
|
|
899
906
|
|
|
900
907
|
Hyper does **not** support `ON CONFLICT` or `INSERT ... ON DUPLICATE KEY`. Use the `execute` tool's atomic batch shape instead:
|
|
901
908
|
|
|
902
|
-
```
|
|
909
|
+
```text
|
|
903
910
|
execute(sql: [
|
|
904
911
|
"UPDATE settings SET value = 'dark' WHERE key = 'theme'",
|
|
905
912
|
"INSERT INTO settings (key, value) SELECT 'theme', 'dark' \
|
|
@@ -927,7 +934,7 @@ Full reference: [Data Cloud SQL Reference](https://developer.salesforce.com/docs
|
|
|
927
934
|
|
|
928
935
|
## CLI Reference
|
|
929
936
|
|
|
930
|
-
```
|
|
937
|
+
```text
|
|
931
938
|
hyperdb-mcp [OPTIONS] [COMMAND]
|
|
932
939
|
|
|
933
940
|
Commands:
|
package/package.json
CHANGED
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"engines": {
|
|
30
30
|
"node": ">= 21"
|
|
31
31
|
},
|
|
32
|
-
"version": "1.0.0-rc.
|
|
32
|
+
"version": "1.0.0-rc.2",
|
|
33
33
|
"optionalDependencies": {
|
|
34
|
-
"hyperdb-mcp-darwin-arm64": "1.0.0-rc.
|
|
35
|
-
"hyperdb-mcp-linux-x64-gnu": "1.0.0-rc.
|
|
36
|
-
"hyperdb-mcp-win32-x64-msvc": "1.0.0-rc.
|
|
34
|
+
"hyperdb-mcp-darwin-arm64": "1.0.0-rc.2",
|
|
35
|
+
"hyperdb-mcp-linux-x64-gnu": "1.0.0-rc.2",
|
|
36
|
+
"hyperdb-mcp-win32-x64-msvc": "1.0.0-rc.2"
|
|
37
37
|
}
|
|
38
38
|
}
|