@oomkapwn/enquire-mcp 2.12.0 → 2.14.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.
@@ -278,7 +278,8 @@ curl -sX POST "$URL" \
278
278
 
279
279
  ## Operational notes
280
280
 
281
- - **Stateless mode.** Every request creates a fresh `McpServer` instance over the **shared** vault + index handles. SQLite stays open; only the per-request server class is recreated. This means session-scoped state (e.g. a paginating cursor) doesn't carry across requests — each request is independent. Stateful sessions (with `Mcp-Session-Id` + persistent SSE streams) are tracked for v2.7+ if there's demand.
281
+ - **Stateless mode (default).** Every request creates a fresh `McpServer` instance over the **shared** vault + index handles. SQLite stays open; only the per-request server class is recreated. This means session-scoped state (e.g. a paginating cursor) doesn't carry across requests — each request is independent. Best choice when your client (claude.ai web, Cursor, Khoj) doesn't need persistent session state.
282
+ - **Stateful mode (v2.14.0, opt-in via `--stateful`).** Sessions keyed by the `Mcp-Session-Id` response header. The first POST without that header is the `initialize` handshake; subsequent POSTs route to the same `McpServer` + `StreamableHTTPServerTransport`. `GET /mcp` opens a long-lived SSE stream for server-initiated notifications. `DELETE /mcp` explicitly terminates a session (idempotent). Required for **ChatGPT custom GPT actions**. `--max-sessions <n>` (default 100) caps concurrency, returning 503 + `Retry-After` on overflow. `--session-idle-timeout-ms <n>` (default 30 min) evicts stale sessions on every request via a lazy sweep — no separate timer thread.
282
283
  - **Cold start.** First request after server start does the FTS5 sync; subsequent requests hit the warm index. `--watch` keeps it warm across vault edits without reboots.
283
284
  - **Rate limit is per-process.** If you run multiple processes (e.g. team-tier with one process per user behind a reverse proxy), each enforces its own bucket. For shared limits use the reverse proxy's rate-limit module.
284
285
  - **Logs go to stderr.** The ready banner, skip-tool warnings, and transport errors all go to stderr — keep it captured by systemd / your tunnel.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oomkapwn/enquire-mcp",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "description": "Drop-in MCP server for Obsidian vaults. Hybrid retrieval (BM25 + TF-IDF + ML embeddings via RRF), wikilinks resolved with aliases and sections, backlinks ranked with snippets, frontmatter typed, Dataview-style queries first-class. Read-only by default; opt-in writes. Works with Claude Code, Cursor, OpenClaw, Codex, Devin, and any MCP-compatible client.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -92,6 +92,7 @@
92
92
  "@huggingface/transformers": "^4.2.0",
93
93
  "@napi-rs/canvas": "^1.0.0",
94
94
  "better-sqlite3": "^12.9.0",
95
+ "hnswlib-node": "^3.0.0",
95
96
  "pdfjs-dist": "^4.10.38",
96
97
  "tesseract.js": "^7.0.0"
97
98
  }