@functional-systems/lambdadb-mcp 0.1.5 → 0.1.6-dev.20

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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Pin the LambdaDB SDK to 0.10.0. Expand Query/Fetch/List and rerank limits to
6
+ 1000 on supporting servers, retaining facet and collection-list limits of 100.
7
+ Vector dimensions now require integers from 64 to 4096 and similarity accepts
8
+ only cosine/euclidean; invalid requests and existing out-of-contract collection
9
+ metadata fail SDK validation. Update vector fixtures and native source guidance.
10
+
11
+ - Synchronize the 0.1.5 release history and start the 0.1.6 development line.
12
+
5
13
  ## [0.1.5] - 2026-10-25
6
14
 
7
15
  - Pin MCP SDK 1.32.2, raise the Zod minimum to 4.6.7, and refresh the affected
package/README.md CHANGED
@@ -14,18 +14,16 @@ MCP server for LambdaDB using the official TypeScript MCP SDK and the official L
14
14
  Package: `@functional-systems/lambdadb-mcp`. Executable: `lambdadb-mcp`.
15
15
  Requires Node.js >=22.14.0; CI tests the minimum and current Node 22/24 LTS.
16
16
 
17
- As verified on 2026-10-25 (KST), npm `latest` resolves to `0.1.4`. This checkout
18
- prepares `0.1.5`; it is not yet published. The `dev` channel advances separately.
19
- Use an exact published version for reproducibility or the stable channel for
20
- initial setup. See [release status and policy](RELEASING.md).
21
-
22
- [MCP 0.1.4](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.4) is published
23
- with LambdaDB SDK `0.8.1`, native embedding and native reranking terminology, and
24
- MCP SDK `1.31.0`. The MCP SDK update includes a 10 MiB stdio receive-buffer limit
25
- and revised schema-validation error formatting. Existing tool names, wire fields
26
- and read-only defaults remain unchanged.
27
- Existing installations need an MCP release containing these changes; upgrading
28
- the SDK separately does not update them.
17
+ As verified on 2026-10-25 (KST), npm `latest` resolves to `0.1.5`; `dev` advances
18
+ separately. Use an exact published version for reproducibility or the stable
19
+ channel for initial setup. See [release status and policy](RELEASING.md).
20
+
21
+ [MCP 0.1.5](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.5) is published
22
+ with LambdaDB SDK `0.8.1`, MCP SDK `1.32.2`, patched dependencies and Kiro/Claude
23
+ query-schema compatibility. This checkout starts the next `0.1.6-dev.1` source
24
+ base; check npm for the current published dev version. Existing direct MCP
25
+ installations need the new MCP version and an agent restart. CLI 0.1.5 still pins
26
+ MCP 0.1.4 and needs a subsequent CLI release with an updated pin.
29
27
 
30
28
  This checkout pins MCP SDK `1.32.2` and requires Zod `^4.6.7`, with patched
31
29
  transitive dependencies in the lockfile. It replaces the query tool's top-level
@@ -39,7 +37,7 @@ those features to this stdio-only server. See the
39
37
  ```sh
40
38
  npx --yes @functional-systems/lambdadb-mcp
41
39
  # Pin the stable release:
42
- npx --yes @functional-systems/lambdadb-mcp@0.1.4
40
+ npx --yes @functional-systems/lambdadb-mcp@0.1.5
43
41
  # Or install globally:
44
42
  npm install -g @functional-systems/lambdadb-mcp
45
43
  lambdadb-mcp
@@ -114,8 +112,8 @@ Optional write tools:
114
112
 
115
113
  ## API contract and tool inputs
116
114
 
117
- The LambdaDB SDK is pinned to `@functional-systems/lambdadb@0.8.1`, checked against
118
- the published package and [v0.8.1 release](https://github.com/lambdadb/lambdadb-typescript-client/releases/tag/v0.8.1).
115
+ The LambdaDB SDK is pinned to `@functional-systems/lambdadb@0.10.0`, checked against
116
+ the published package and [v0.10.0 changelog](https://github.com/lambdadb/lambdadb-typescript-client/blob/v0.10.0/CHANGELOG.md).
119
117
  This dependency update applies to builds containing this change. Publishing the SDK
120
118
  alone does not update previously published or installed MCP packages.
121
119
 
@@ -126,11 +124,13 @@ alone does not update previously published or installed MCP packages.
126
124
  Omitting `ref` reads from `main`. `consistentRead: true` is supported only by
127
125
  Query/Fetch with an omitted ref or a direct Branch ref. List has no `consistentRead`.
128
126
  - Query may omit `query` for match-all and accepts `facets` for keyword bucket counts
129
- across all matches. Document `size` is 1–100, or 0 when at least one facet is supplied.
127
+ across all matches. Document `size` is 1–1000, or 0 when at least one facet is supplied.
130
128
  Up to five facet fields (including dotted paths) are allowed. Each field's options
131
129
  accept only `size`: an integer from 1–100, omitted, or `null`. Omitted/null bucket
132
130
  size uses the server default of 10; MCP forwards it unchanged. Empty `facets: {}`
133
131
  is accepted except with `size: 0`. Facet results survive inline and `docsUrl` responses.
132
+ - Fetch accepts up to 1000 IDs; List accepts `size` from 1–1000 (server default 100).
133
+ These expanded read and rerank limits require a supporting server deployment.
134
134
  - List also accepts `filter`, `fields`, `includeVectors`, and `partitionFilter`.
135
135
  The SDK selects the extended POST endpoint when needed and preserves pagination tokens.
136
136
  - Upsert/Delete accept an optional `branch`; omitting it writes to `main`.
@@ -208,7 +208,7 @@ Bayesian requires exactly two signals. Boolean subqueries may combine clauses
208
208
  within a signal, but explicit boosts (even `1`) on either signal or its Boolean
209
209
  descendants and nested rank-fusion queries are unsupported. Do not supply fusion
210
210
  weights. Without rerank, top-level `candidateSize` is required and must satisfy
211
- `1 <= size <= candidateSize <= 100`; omitted `size` retains the server default of
211
+ `1 <= size <= candidateSize <= 1000`; omitted `size` retains the server default of
212
212
  10. The budget is per signal, independent of final output size and `knn.k`.
213
213
 
214
214
  With rerank, omit top-level `candidateSize` and use `rerank.candidateSize`:
@@ -272,7 +272,7 @@ With write tools enabled, call `lambdadb_create_collection` with:
272
272
 
273
273
  Then call `lambdadb_upsert_docs` with
274
274
  `{"collectionName":"native-articles","docs":[{"id":"one","body":"Restore a saved version."}]}`.
275
- The source must be a text field; omit the generated vector from documents.
275
+ The source may be an unindexed stored string path; omit the generated vector from documents.
276
276
  Use `knn.queryText` instead of `queryVector` for this field, including in either
277
277
  Bayesian example above. For example, call `lambdadb_query_collection` with:
278
278
 
@@ -285,6 +285,9 @@ Bayesian example above. For example, call `lambdadb_query_collection` with:
285
285
  ```
286
286
 
287
287
  Native embedding dimensions and similarity are optional and belong inside `embedding`.
288
+ Supplied vector dimensions must be integers from 64 to 4096; similarity supports
289
+ only `cosine` or `euclidean`. Model-specific native maxima remain server-validated.
290
+ Existing collections with out-of-contract vector metadata fail SDK response validation.
288
291
  MCP does not infer a flag, provider, model or native embedding dimensions/similarity default.
289
292
  The SDK rejects `managedEmbedding: false` with `embedding`, and native embedding
290
293
  with top-level dimensions/similarity. Caller-provided vectors continue to use
@@ -327,7 +330,7 @@ ordered from lowest to highest relevance (2 KiB each, 8 KiB total UTF-8).
327
330
  Omitted/null criteria uses defaults; text, order, nulls and omission are preserved.
328
331
 
329
332
  Final `size`, vector-leg `knn.k`, and merged `rerank.candidateSize` are separate.
330
- Require `1 <= size <= candidateSize <= 100`; omitted/null candidateSize defaults
333
+ Require `1 <= size <= candidateSize <= 1000`; omitted/null candidateSize defaults
331
334
  on the server to `max(50, size)`, with final size defaulting to 10. MCP never
332
335
  increases `k`. Reranking requires a scoring retrieval query, forbids `sort`,
333
336
  match-all and filter-only Boolean requests, and preserves ref/consistentRead
package/RELEASING.md CHANGED
@@ -1,27 +1,33 @@
1
1
  # Releasing LambdaDB MCP
2
2
 
3
- ## Prepared stable candidate: 0.1.5 (2026-10-25 KST)
4
-
5
- The `release/0.1.5` branch promotes reviewed develop commit
6
- `bf4536f5a8256a4193e8dcea86f1ecedc626294d`, including
7
- [Kiro schema PR #25](https://github.com/lambdadb/lambdadb-mcp/pull/25) and
8
- [dependency PR #26](https://github.com/lambdadb/lambdadb-mcp/pull/26), into main.
9
- Candidate-only changes are package/lock versions and release documentation;
10
- application source, tests, dependencies and CI match that reviewed source.
11
- See the [candidate validation record](docs/validation/2026-10-25-0.1.5.md).
12
-
13
- As checked on 2026-10-25 (KST), `latest` remains 0.1.4 and no `v0.1.5` tag
14
- exists. Candidate validation does not publish a package. After review, merge into
15
- main while preserving ancestry, then obtain explicit authorization before
16
- creating the annotated `v0.1.5` tag and publishing its non-prerelease GitHub
17
- Release. The release workflow must test and publish its exact artifact; verify
18
- registry identity, integrity, provenance and clean-consumer behavior afterward.
19
-
20
- The LambdaDB CLI still pins MCP 0.1.4. Stable CLI users receive this fix only
21
- after a separate CLI pin update and release. After MCP publication, synchronize
22
- main back into develop with the next dev base through a PR.
23
-
24
- ## Current stable release: 0.1.4 (2026-10-07 KST)
3
+ ## Current stable release: 0.1.5 (2026-10-25 KST)
4
+
5
+ [v0.1.5](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.5) tags main
6
+ commit `1ae40dcbebea734e34ddde024e0991c8bf3fda64`, which merged
7
+ [release PR #27](https://github.com/lambdadb/lambdadb-mcp/pull/27) with preserved
8
+ ancestry. The user explicitly authorized the annotated tag, non-prerelease
9
+ GitHub Release and npm latest publication. The
10
+ [release workflow](https://github.com/lambdadb/lambdadb-mcp/actions/runs/40169478215)
11
+ passed Node.js 22.14.0 / 22 / 24 validation and published its exact tested artifact
12
+ with OIDC and provenance. Registry snapshot: `latest=0.1.5`, `dev=0.1.5-dev.18`.
13
+
14
+ The downloaded 15-file stable artifact matched the tagged source and registry
15
+ integrity, passed 37 installed-package tests, and had zero consumer audit
16
+ findings. `npm audit signatures` reported no invalid or missing signatures;
17
+ provenance repository, workflow, tag, commit and artifact digest matched.
18
+ Actual Kiro V2/Sonnet called the published MCP directly against a synthetic
19
+ backend without a resolver substitution. A separate actual development-service
20
+ check verified authentication and collection-list access only. No writes or
21
+ search readiness are claimed. See the
22
+ [validation record](docs/validation/2026-10-25-0.1.5.md). Do not repeat publication
23
+ or move the immutable tag.
24
+
25
+ `release/sync-0.1.5` brings this main history back into develop with the next
26
+ `0.1.6-dev.1` source base. Merge with preserved ancestry. Eligible develop merges
27
+ can publish dev versions while latest stays on 0.1.5. CLI 0.1.5 still pins MCP
28
+ 0.1.4; its separate pin update/release is required for stable CLI users.
29
+
30
+ ## Previous stable release: 0.1.4 (2026-10-07 KST)
25
31
 
26
32
  [v0.1.4](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.4) tags main
27
33
  commit `f84038962bbdc6f5375b873727d0cf54d843c7b2`, which merged
@@ -17,7 +17,7 @@ const rerankSchema = z.strictObject({
17
17
  queryText: z.string().min(1).describe("Required nonblank query text, at most 8 KiB UTF-8, including for raw vector queries."),
18
18
  fields: z.array(z.string().min(1)).min(1).max(8).meta({ uniqueItems: true })
19
19
  .describe("Unique stored scalar text paths in model input order; separate from returned fields projection."),
20
- candidateSize: z.number().int().min(1).max(100).nullable().optional()
20
+ candidateSize: z.number().int().min(1).max(1000).nullable().optional()
21
21
  .describe("Merged candidate cap, at least final size. Omitted/null defaults to max(50, size); never changes knn.k."),
22
22
  onFailure: z.enum(["error", "returnOriginal"]).nullable().optional()
23
23
  .describe("Omitted/null defaults to error. returnOriginal covers only eligible provider failures."),
@@ -75,10 +75,10 @@ export function registerReadTools(server, config) {
75
75
  },
76
76
  inputSchema: z.strictObject({
77
77
  collectionName: nameSchema,
78
- size: z.number().int().min(0).max(100).optional()
79
- .describe("Documents to return (1–100), or 0 with nonempty facets."),
78
+ size: z.number().int().min(0).max(1000).optional()
79
+ .describe("Documents to return (1–1000), or 0 with nonempty facets."),
80
80
  // Preserve SDK/server validation and error classification for free-form queries.
81
- candidateSize: z.number().int().optional().describe("Bayesian without rerank requires 1 <= size <= candidateSize <= 100 (size defaults to 10 on the server). With rerank, omit this field and use rerank.candidateSize, whose default is unchanged. Unsupported for other queries; server validates these combinations."),
81
+ candidateSize: z.number().int().optional().describe("Bayesian without rerank requires 1 <= size <= candidateSize <= 1000 (size defaults to 10 on the server). With rerank, omit this field and use rerank.candidateSize, whose default is unchanged. Unsupported for other queries; server validates these combinations."),
82
82
  query: z.record(z.string(), z.any()).optional().describe("Free-form query; omit for match-all. Top-level bayesian is an array of exactly two subqueries, with no explicit boosts on either subquery or its Boolean descendants. Nested rank fusion and fusion weights are unsupported. Server validates the query contract."),
83
83
  facets: facetsSchema.optional(),
84
84
  rerank: rerankSchema,
@@ -138,7 +138,7 @@ export function registerReadTools(server, config) {
138
138
  },
139
139
  inputSchema: z.strictObject({
140
140
  collectionName: nameSchema,
141
- size: z.number().int().min(1).max(100).optional(),
141
+ size: z.number().int().min(1).max(1000).optional(),
142
142
  pageToken: z.string().optional(),
143
143
  ref: readRefSchema.optional(),
144
144
  filter: z.record(z.string(), z.any()).optional(),
@@ -173,7 +173,7 @@ export function registerReadTools(server, config) {
173
173
  },
174
174
  inputSchema: z.strictObject({
175
175
  collectionName: nameSchema,
176
- ids: z.array(z.string().min(1)).min(1).max(100),
176
+ ids: z.array(z.string().min(1)).min(1).max(1000),
177
177
  ref: readRefSchema.optional(),
178
178
  consistentRead: z.boolean().optional().describe("true requires a direct branch ref or omitted ref (main)."),
179
179
  includeVectors: z.boolean().optional(),
@@ -12,7 +12,7 @@ export function registerWriteTools(server, config) {
12
12
  },
13
13
  inputSchema: z.strictObject({
14
14
  collectionName: nameSchema,
15
- indexConfigs: z.record(z.string(), z.any()).refine((value) => Object.keys(value).length > 0, "indexConfigs must contain at least one field.").describe("Field configurations validated by the SDK/server. Native embedding vectors: {type: 'vector', embedding: {provider, model, sourceField, dimensions?, similarity?}}; declare sourceField as text. Native embedding dimensions/similarity belong inside embedding, never at the field top level. Do not combine embedding with managedEmbedding: false. Legacy true is preserved; no provider/model or native embedding defaults are inferred. Caller-provided vectors retain top-level dimensions/similarity."),
15
+ indexConfigs: z.record(z.string(), z.any()).refine((value) => Object.keys(value).length > 0, "indexConfigs must contain at least one field.").describe("Field configurations validated by the SDK/server. Native embedding vectors: {type: 'vector', embedding: {provider, model, sourceField, dimensions?, similarity?}}; sourceField may be an unindexed stored string path. Native embedding dimensions/similarity belong inside embedding, never at the field top level. Do not combine embedding with managedEmbedding: false. Legacy true is preserved; no provider/model or native embedding defaults are inferred. Caller-provided vectors retain top-level dimensions/similarity. Supplied dimensions must be integers from 64 to 4096; similarity supports only cosine or euclidean. Model-specific native dimension maxima are server-validated."),
16
16
  description: z.string().max(255).optional(),
17
17
  tags: z.record(z.string().regex(/^[A-Za-z0-9_.-]{1,63}$/), z.string().min(1).max(127).regex(/^[^:#,]+$/))
18
18
  .refine((value) => Object.keys(value).length <= 5, "At most five tags are allowed.")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functional-systems/lambdadb-mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.6-dev.20",
4
4
  "private": false,
5
5
  "description": "MCP server for LambdaDB data plane",
6
6
  "type": "module",
@@ -24,7 +24,7 @@
24
24
  "test:package": "node scripts/test-package.mjs"
25
25
  },
26
26
  "dependencies": {
27
- "@functional-systems/lambdadb": "0.8.1",
27
+ "@functional-systems/lambdadb": "0.10.0",
28
28
  "@modelcontextprotocol/sdk": "1.32.2",
29
29
  "zod": "^4.6.7"
30
30
  },
@@ -62,5 +62,5 @@
62
62
  "access": "public",
63
63
  "registry": "https://registry.npmjs.org"
64
64
  },
65
- "gitHead": "1ae40dcbebea734e34ddde024e0991c8bf3fda64"
65
+ "gitHead": "3d73730f700f785062ba59832a1e506857992dbd"
66
66
  }