You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,9 @@ Future releases are managed automatically by [release-please](https://github.com
10
10
11
11
### Added
12
12
13
+
-`registerBuiltinUrlGenerators()` for built-in URL generators; `setupServer()` invokes it so CLI/library parity stays default.
14
+
- Discriminated result type for `listNamespacesFromKeywordIndex()` (`KeywordIndexNamespacesResult`).
15
+
- Unit tests for `withRetry` / `withTimeout` in `src/server/retry.test.ts`.
13
16
-`SERVER_VERSION` is now read from `package.json` at runtime so MCP `serverInfo` always matches the published package version.
14
17
-`--version` CLI flag prints the package version and exits.
15
18
-`list_namespaces` response now includes `expires_at_iso` so clients see the cache expiry as an ISO-8601 timestamp without converting `cache_ttl_seconds`.
@@ -22,6 +25,13 @@ Future releases are managed automatically by [release-please](https://github.com
22
25
23
26
### Changed
24
27
28
+
-**Breaking (MCP):** Single hybrid `query` tool with `preset` (`fast` | `detailed` | `full`); removed separate `query_fast` / `query_detailed` tool registrations.
29
+
-**Breaking (library):** Stopped re-exporting `withRetry` / `withTimeout` from the package entry (`server.ts`).
30
+
-`withTimeout` aborts an internal `AbortSignal` on deadline (cooperative cancellation).
31
+
-`PineconeClient`: shared hit-field extraction, safer merge dedup without empty `_id` collisions, metadata sampling skips zero-vector probe when dimension is unknown, `listNamespacesFromKeywordIndex` surfaces errors via `{ ok: false }`.
32
+
- Metadata filter manual validation accepts primitive arrays for `$in`/`$nin` including numbers (matches Zod).
33
+
- README: deployment model for process-global gate/cache/registry; adjusted feature wording vs pre-1.0 semver.
34
+
-`.npmignore` no longer excludes `dist/` (still shipped via `package.json``files`).
25
35
-`.env.example` log-level options corrected to the four levels actually supported (`DEBUG`, `INFO`, `WARN`, `ERROR`); the stale `WARNING`/`CRITICAL` values are gone.
26
36
- README Slack URL example now matches the generator output (`https://app.slack.com/client/{team_id}/{channel_id}/p{messageId}`).
27
37
- README "Comparison with Python Version" no longer claims an identical API interface; the new TypeScript-only tools (`guided_query`, `query_documents`, `keyword_search`, `namespace_router`, `suggest_query_params`, `count`, `generate_urls`) are listed explicitly.
Copy file name to clipboardExpand all lines: README.md
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,8 +27,8 @@ A Model Context Protocol (MCP) server that provides semantic search over Pinecon
27
27
-**Semantic Reranking**: Uses BGE reranker model for improved precision
28
28
-**Dynamic Namespace Discovery**: Automatically discovers available namespaces in your Pinecone index
29
29
-**Metadata Filtering**: Supports optional metadata filters for refined searches
30
-
-**Fast & Optimized**: Lazy initialization, connection pooling, and efficient result merging
31
-
-**Production Ready**: Input validation, error handling, and configurable logging
30
+
-**Fast presets**: Lazy initialization, connection pooling, and efficient result merging; use the `query` tool `preset=fast` / `detailed` to trade latency vs quality (no published benchmarks yet — treat descriptions as qualitative).
31
+
-**Production-oriented defaults**: Input validation, error handling, and configurable logging (semantic versioning is pre-1.0 — review CHANGELOG before upgrading).
32
32
-**TypeScript Support**: Full TypeScript support with type definitions
33
33
34
34
## Installation
@@ -82,6 +82,10 @@ Quick reference:
82
82
83
83
Run `pinecone-read-only-mcp --help` for CLI equivalents (`--cache-ttl-seconds`, `--request-timeout-ms`, `--disable-suggest-flow`, etc.).
84
84
85
+
### Deployment model
86
+
87
+
The server uses **process-global** memory for the suggest-flow gate (`suggest_query_params` context), namespaces cache, URL generator registry, and active configuration. **Stdio MCP (one client per Node process)** matches this model. If you embed `setupServer` behind a multi-tenant HTTP transport, isolate those structures per session yourself or treat the suggest-flow guard as best-effort only.
88
+
85
89
### Claude Desktop Configuration
86
90
87
91
Add to your `claude_desktop_config.json`:
@@ -254,7 +258,7 @@ Discovers and lists all available namespaces in the configured Pinecone index, i
254
258
255
259
### `suggest_query_params`
256
260
257
-
Suggests which **fields** to request and which tool to use (`count`, `query_fast`, or `query_detailed`), based on the namespace’s schema (from `list_namespaces`) and the user’s natural language query. This is a mandatory flow step before `count`/`query` tools.
261
+
Suggests which **fields** to request and which path to use (`count`, or hybrid query as **fast** vs **detailed** — implemented via the `query` tool `preset` argument), based on the namespace’s schema (from `list_namespaces`) and the user’s natural language query. This is a mandatory flow step before `count` / `query` tools.
258
262
259
263
**Parameters:**
260
264
@@ -286,7 +290,7 @@ Single orchestrator tool that runs the full flow in one call:
286
290
287
291
1. namespace routing (if namespace is omitted),
288
292
2. query param suggestion,
289
-
3. execution via `count`, `query_fast`, or `query_detailed`.
293
+
3. execution via `count`or hybrid `query` (fast vs detailed behavior).
290
294
291
295
It returns both the final result and a `decision_trace` for transparency.
292
296
@@ -298,7 +302,7 @@ It returns both the final result and a `decision_trace` for transparency.
exportconstSERVER_INSTRUCTIONS=`Quickstart for AI clients: for most user questions, call \`guided_query\` with the user's question — it does namespace routing, suggestion, and execution in one shot and returns a decision_trace you can show the user. For manual flows, call \`list_namespaces\` -> \`suggest_query_params\` -> \`query_fast\` / \`query_detailed\` / \`count\` (the suggest step is a mandatory gate). Use \`query_documents\` for full-document reading, \`keyword_search\` for exact-keyword retrieval against the sparse index, and \`generate_urls\` when records need URLs synthesized from metadata.
37
+
exportconstSERVER_INSTRUCTIONS=`Quickstart for AI clients: for most user questions, call \`guided_query\` with the user's question — it does namespace routing, suggestion, and execution in one shot and returns a decision_trace you can show the user. For manual flows, call \`list_namespaces\` -> \`suggest_query_params\` -> \`query\` (use preset fast/detailed/full per suggestion) or \`count\` (the suggest step is a mandatory gate). Use \`query_documents\` for full-document reading, \`keyword_search\` for exact-keyword retrieval against the sparse index, and \`generate_urls\` when records need URLs synthesized from metadata.
38
38
39
39
A semantic search server that provides hybrid search capabilities over Pinecone vector indexes with automatic namespace discovery.
40
40
@@ -53,7 +53,7 @@ Usage:
53
53
1. Use list_namespaces (cached) to discover available namespaces in the index. The response includes \`expires_at_iso\` so you know when to refresh.
54
54
2. Optionally use namespace_router to choose candidate namespace(s) from user intent.
55
55
3. Call suggest_query_params before query/count/query_documents tools (mandatory flow gate) to get suggested_fields and recommended_tool.
56
-
4. Use count for count questions, query_fast/query_detailed for chunk-level retrieval, or query_documents for full-document content.
56
+
4. Use count for count questions, \`query\` with the appropriate preset for chunk-level retrieval, or query_documents for full-document content.
57
57
58
58
Notes:
59
59
- Result rows include both \`document_id\` (canonical) and \`paper_number\` (deprecated alias kept for one minor cycle; will be removed in the next major release). Prefer \`document_id\` in new code.
0 commit comments