@cyanheads/protein-mcp-server 0.5.3 → 0.6.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/AGENTS.md +5 -5
- package/CLAUDE.md +5 -5
- package/README.md +4 -4
- package/changelog/0.6.x/0.6.0.md +34 -0
- package/dist/mcp-server/tools/definitions/_schemas.d.ts +15 -0
- package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.js +46 -2
- package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.d.ts +3 -7
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js +43 -21
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.d.ts +5 -0
- package/dist/mcp-server/tools/definitions/search-structures.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.js +45 -5
- package/dist/mcp-server/tools/definitions/search-structures.tool.js.map +1 -1
- package/dist/services/rcsb/facets.d.ts +20 -1
- package/dist/services/rcsb/facets.d.ts.map +1 -1
- package/dist/services/rcsb/facets.js +36 -3
- package/dist/services/rcsb/facets.js.map +1 -1
- package/package.json +8 -8
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** protein-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.
|
|
4
|
+
**Version:** 0.6.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.7`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.4
|
|
8
|
+
**Zod:** ^4.5.4
|
|
9
9
|
**TypeScript:** ^7.0.2
|
|
10
10
|
|
|
11
11
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
@@ -204,7 +204,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
204
204
|
|
|
205
205
|
Handlers throw — the framework catches, classifies, and formats.
|
|
206
206
|
|
|
207
|
-
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`) bubble freely and don't need declaring.
|
|
207
|
+
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`, `RequestCancelled`) bubble freely and don't need declaring.
|
|
208
208
|
|
|
209
209
|
```ts
|
|
210
210
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
@@ -386,7 +386,7 @@ security: false # optional — true ONLY for a source
|
|
|
386
386
|
|
|
387
387
|
`agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
|
|
388
388
|
|
|
389
|
-
**Section order
|
|
389
|
+
**Section order:** the Keep a Changelog sequence — Added, Changed, Deprecated, Removed, Fixed, Security — then `Dependencies` last. Include only sections with entries — don't ship empty headers.
|
|
390
390
|
|
|
391
391
|
**Tag annotations** render as GitHub Release bodies via `--notes-from-tag`. They must be structured markdown — never a flat comma-separated string. Subject omits the version number (GitHub prepends it). See `changelog/template.md` for the full format reference.
|
|
392
392
|
|
package/CLAUDE.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** protein-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.
|
|
4
|
+
**Version:** 0.6.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.12.7`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.4
|
|
8
|
+
**Zod:** ^4.5.4
|
|
9
9
|
**TypeScript:** ^7.0.2
|
|
10
10
|
|
|
11
11
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
@@ -204,7 +204,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
204
204
|
|
|
205
205
|
Handlers throw — the framework catches, classifies, and formats.
|
|
206
206
|
|
|
207
|
-
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`) bubble freely and don't need declaring.
|
|
207
|
+
**Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive `ctx.fail(reason, …)` typed against the reason union. TypeScript catches typos at compile time, `data.reason` is auto-populated for observability, linter enforces conformance against the handler body. `recovery` is required (≥ 5 words, lint-validated) — the single source of truth for the agent's next move. Pass `ctx.recoveryFor('reason')` as the throw's data to put it on the wire (`data.recovery.hint`, mirrored into `content[]` text); override with an explicit `{ recovery: { hint: '...' } }` when dynamic runtime context matters. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`, `RequestCancelled`) bubble freely and don't need declaring.
|
|
208
208
|
|
|
209
209
|
```ts
|
|
210
210
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
@@ -386,7 +386,7 @@ security: false # optional — true ONLY for a source
|
|
|
386
386
|
|
|
387
387
|
`agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
|
|
388
388
|
|
|
389
|
-
**Section order
|
|
389
|
+
**Section order:** the Keep a Changelog sequence — Added, Changed, Deprecated, Removed, Fixed, Security — then `Dependencies` last. Include only sections with entries — don't ship empty headers.
|
|
390
390
|
|
|
391
391
|
**Tag annotations** render as GitHub Release bodies via `--notes-from-tag`. They must be structured markdown — never a flat comma-separated string. Subject omits the version number (GitHub prepends it). See `changelog/template.md` for the full format reference.
|
|
392
392
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/protein-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/protein-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -49,7 +49,7 @@ Federated search across experimental (PDB) and predicted (computed-model) struct
|
|
|
49
49
|
- `content_type` scopes the search to `experimental`, `predicted`, or `all` — the default `all` is a genuine union of both universes, so computed models appear alongside PDB entries
|
|
50
50
|
- Every hit names its `source`; experimental sequence hits expose a chainable PDB entry `id` plus the matched polymer `entityId`, with title, method, resolution, and organism enrichment, while computed models retain their complete model ID and parsed UniProt accession
|
|
51
51
|
- `start` and `limit` page through ranked results; `nextStart` is returned while another page remains
|
|
52
|
-
- Optional `facets` return a method / organism / release-year breakdown alongside the hits at no extra call, each reporting how many matches carry no value for that dimension; each dimension may be listed once
|
|
52
|
+
- Optional `facets` return a method / organism / release-year breakdown alongside the hits at no extra call, each reporting how many matches carry no value for that dimension; each dimension may be listed once. A dimension whose buckets hit the server-side cap is named in `notice`, with `protein_analyze_collection` and a larger `bucket_limit` as the route to the long tail (a sequence search gets a narrowing step instead, since that tool has no sequence input)
|
|
53
53
|
- Chain hit IDs straight into `protein_get_structure`
|
|
54
54
|
|
|
55
55
|
---
|
|
@@ -114,9 +114,9 @@ Profile the PDB into distributions and trends over an optional scoping query —
|
|
|
114
114
|
|
|
115
115
|
- Group by `method`, `organism`, `polymer_type`, `resolution`, `release_year`, or `molecular_weight`
|
|
116
116
|
- One `group_by` dimension for a breakdown, or two distinct dimensions for a cross-tab (the first nests the second); a repeated dimension is rejected
|
|
117
|
-
- `interval` sets the bin width for value
|
|
117
|
+
- `interval` sets the bin width for a value histogram (a number, for `resolution` or `molecular_weight`) or the period for a date histogram (`year` — the only period RCSB accepts). It applies to whichever requested `group_by` dimension can consume that value type, primary or nested child, so `["method", "resolution"]` bins its nested `resolution` child; when both dimensions can consume it the primary takes it and the child keeps its default, and when neither can the call is rejected rather than silently ignoring the override
|
|
118
118
|
- Scope with a free-text `query`, `organism`, `method`, or `max_resolution`; `content_type` selects the structure universe
|
|
119
|
-
- `bucket_limit` caps buckets per dimension level, not per response — a cross-tab applies it separately to the parent dimension and to the nested child inside each parent bucket, so up to `bucket_limit × (1 + bucket_limit)` buckets come back. Each level flags its own truncation, and `bucketsReturned` gives the realized total
|
|
119
|
+
- `bucket_limit` caps buckets per dimension level, not per response — a cross-tab applies it separately to the parent dimension and to the nested child inside each parent bucket, so up to `bucket_limit × (1 + bucket_limit)` buckets come back. Each level flags its own truncation, `notice` names every capped position (the top-level dimension and each nested child, with how many parent buckets it was capped under), and `bucketsReturned` gives the realized total
|
|
120
120
|
- Every dimension reports `missingValueCount` — matches in scope carrying no value for that attribute, which therefore fall in no bucket (a `resolution` breakdown does not cover NMR entries, and neither `method` nor `resolution` covers computed models)
|
|
121
121
|
|
|
122
122
|
---
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "protein_analyze_collection's truncation notice covers nested cross-tab children and empty scopes, interval routes to whichever group_by dimension can consume it and is narrowed to RCSB's supported values, and protein_search_structures rejects sequence-only thresholds and surfaces capped-facet recovery guidance."
|
|
3
|
+
breaking: true
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.6.0 — 2026-09-08
|
|
8
|
+
|
|
9
|
+
## Changed
|
|
10
|
+
|
|
11
|
+
- **`protein_analyze_collection` truncation notice** names every capped dimension position — the top-level dimension and each nested cross-tab child — instead of only the first one `Array.prototype.find` happened to reach; a cross-tab can cap a child even when its parent fits under the cap ([#37](https://github.com/cyanheads/protein-mcp-server/issues/37)).
|
|
12
|
+
- **`interval`** applies to whichever requested `group_by` dimension can consume it — primary or nested child — instead of the primary position only; a numeric width binds to `resolution`/`molecular_weight`, `"year"` binds to `release_year` ([#51](https://github.com/cyanheads/protein-mcp-server/issues/51)).
|
|
13
|
+
- **`interval`'s date-histogram arm is narrowed to `"year"`** — the only period RCSB's Search API accepts. `month` and `quarter` previously reached RCSB and failed there as an unclassified upstream error rather than a schema rejection ([#58](https://github.com/cyanheads/protein-mcp-server/issues/58)).
|
|
14
|
+
|
|
15
|
+
## Removed
|
|
16
|
+
|
|
17
|
+
- **`unknown_dimension` error reason** on `protein_analyze_collection` — no reachable input hit its throw site; `group_by`'s enum already rejects an invalid dimension before the handler runs ([#47](https://github.com/cyanheads/protein-mcp-server/issues/47)).
|
|
18
|
+
- **`shown` and `cap` output fields** on `protein_analyze_collection` — redundant with the cap already named in `notice` ([#37](https://github.com/cyanheads/protein-mcp-server/issues/37)).
|
|
19
|
+
|
|
20
|
+
## Fixed
|
|
21
|
+
|
|
22
|
+
- **Zero-match scope** on `protein_analyze_collection` now emits a `notice` explaining every requested dimension came back empty, instead of a bare success with no explanation ([#54](https://github.com/cyanheads/protein-mcp-server/issues/54)).
|
|
23
|
+
- **`protein_search_structures`** rejects `min_identity`/`max_evalue` supplied without `sequence` via a new `sequence_modifier_without_sequence` reason, instead of silently running the request unfiltered ([#56](https://github.com/cyanheads/protein-mcp-server/issues/56)).
|
|
24
|
+
- **`protein_search_structures`** names capped facet dimensions in `notice` with a route to the long tail — `protein_analyze_collection` with a larger `bucket_limit`, or narrowing the request when the search used `sequence` ([#52](https://github.com/cyanheads/protein-mcp-server/issues/52)).
|
|
25
|
+
|
|
26
|
+
## Dependencies
|
|
27
|
+
|
|
28
|
+
- `@cyanheads/mcp-ts-core` ^0.12.3 → ^0.12.7
|
|
29
|
+
- `zod` ^4.4.3 → ^4.5.4
|
|
30
|
+
- `@biomejs/biome` 2.5.10 → 2.5.12
|
|
31
|
+
- `@types/node` 26.2.0 → 26.4.1
|
|
32
|
+
- `ignore` ^7.0.6 → ^7.0.8
|
|
33
|
+
- `tsc-alias` ^1.9.2 → ^1.9.4
|
|
34
|
+
- `vitest` ^4.1.11 → ^5.0.0
|
|
@@ -91,6 +91,21 @@ export declare function renderFacets(facets: FacetDimensionOutput[]): string[];
|
|
|
91
91
|
* report it, and quantifying a 100% gap on top adds nothing.
|
|
92
92
|
*/
|
|
93
93
|
export declare function coverageNotices(facets: FacetDimensionOutput[], total: number): string[];
|
|
94
|
+
/**
|
|
95
|
+
* Advisory fragments for the dimension positions the bucket cap sliced, ready to
|
|
96
|
+
* join into the shared `notice` field alongside a caller's other advisories.
|
|
97
|
+
*
|
|
98
|
+
* Walks the same positions as {@link coverageNotices}: the top-level dimension,
|
|
99
|
+
* then each distinct child dimension aggregated across the parent buckets that
|
|
100
|
+
* carry it. A cross-tab caps each position independently, so the parent can fit
|
|
101
|
+
* under the cap while a child does not — and a child can be capped under some
|
|
102
|
+
* parent buckets and not others, which is what the per-position counts report.
|
|
103
|
+
* A single fragment naming one dimension would misstate all three cases.
|
|
104
|
+
*
|
|
105
|
+
* The list closes with the cap itself and the way past it, so a caller reading
|
|
106
|
+
* only `notice` has the recovery without re-deriving it per position.
|
|
107
|
+
*/
|
|
108
|
+
export declare function truncationNotices(facets: FacetDimensionOutput[], cap: number): string[];
|
|
94
109
|
/** License + citation for one upstream data source that contributed to a response. */
|
|
95
110
|
export declare const attributionSchema: z.ZodObject<{
|
|
96
111
|
source: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;CAIuC,CAAC;AAkDxE;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAgBwB,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAI0D,CAAC;AAE5F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgChF;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAwBtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAOnE;AA0CD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAoBrE;AAuDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAcvF;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB;;;;;iBAWmD,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAM7E"}
|
|
1
|
+
{"version":3,"file":"_schemas.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;CAIuC,CAAC;AAkDxE;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAgBwB,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAI0D,CAAC;AAE5F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAgChF;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAwBtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAOnE;AA0CD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAoBrE;AAuDD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAcvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA8BvF;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB;;;;;iBAWmD,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAM7E"}
|
|
@@ -97,8 +97,8 @@ function withRange(b) {
|
|
|
97
97
|
*
|
|
98
98
|
* - `buckets` must be the UNCAPPED list. Measured after {@link toFacetOutput}
|
|
99
99
|
* slices to the bucket cap, the difference would fold in what the cap removed
|
|
100
|
-
* — a separate condition the response already discloses through
|
|
101
|
-
* `
|
|
100
|
+
* — a separate condition the response already discloses through the
|
|
101
|
+
* per-position `truncated` flags and {@link truncationNotices}.
|
|
102
102
|
* - The result floors at 0. A multi-valued attribute puts one match in several
|
|
103
103
|
* buckets (an entry with two source organisms lands in both), so the sum can
|
|
104
104
|
* legitimately exceed the total. That is over-counting, a different phenomenon
|
|
@@ -280,6 +280,50 @@ export function coverageNotices(facets, total) {
|
|
|
280
280
|
}
|
|
281
281
|
return notices;
|
|
282
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Advisory fragments for the dimension positions the bucket cap sliced, ready to
|
|
285
|
+
* join into the shared `notice` field alongside a caller's other advisories.
|
|
286
|
+
*
|
|
287
|
+
* Walks the same positions as {@link coverageNotices}: the top-level dimension,
|
|
288
|
+
* then each distinct child dimension aggregated across the parent buckets that
|
|
289
|
+
* carry it. A cross-tab caps each position independently, so the parent can fit
|
|
290
|
+
* under the cap while a child does not — and a child can be capped under some
|
|
291
|
+
* parent buckets and not others, which is what the per-position counts report.
|
|
292
|
+
* A single fragment naming one dimension would misstate all three cases.
|
|
293
|
+
*
|
|
294
|
+
* The list closes with the cap itself and the way past it, so a caller reading
|
|
295
|
+
* only `notice` has the recovery without re-deriving it per position.
|
|
296
|
+
*/
|
|
297
|
+
export function truncationNotices(facets, cap) {
|
|
298
|
+
const notices = [];
|
|
299
|
+
for (const f of facets) {
|
|
300
|
+
if (f.truncated) {
|
|
301
|
+
notices.push(`${f.dimension} was capped to the ${f.buckets.length} highest-count buckets.`);
|
|
302
|
+
}
|
|
303
|
+
const children = new Map();
|
|
304
|
+
for (const b of f.buckets) {
|
|
305
|
+
const c = b.child;
|
|
306
|
+
if (!c)
|
|
307
|
+
continue;
|
|
308
|
+
const acc = children.get(c.dimension) ?? { buckets: 0, parents: 0, truncated: 0 };
|
|
309
|
+
acc.parents += 1;
|
|
310
|
+
if (c.truncated) {
|
|
311
|
+
acc.truncated += 1;
|
|
312
|
+
acc.buckets = Math.max(acc.buckets, c.buckets.length);
|
|
313
|
+
}
|
|
314
|
+
children.set(c.dimension, acc);
|
|
315
|
+
}
|
|
316
|
+
for (const [dimension, acc] of children) {
|
|
317
|
+
if (acc.truncated === 0)
|
|
318
|
+
continue;
|
|
319
|
+
notices.push(`${dimension} (nested under ${f.dimension}) was capped to ${acc.buckets} buckets in ${acc.truncated} of the ${acc.parents} ${f.dimension} buckets shown.`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (notices.length === 0)
|
|
323
|
+
return [];
|
|
324
|
+
notices.push(`Each dimension level is capped at ${cap} buckets independently; raise bucket_limit (up to 500) or scope the query tighter to reach the long tail.`);
|
|
325
|
+
return notices;
|
|
326
|
+
}
|
|
283
327
|
/** License + citation for one upstream data source that contributed to a response. */
|
|
284
328
|
export const attributionSchema = z
|
|
285
329
|
.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_schemas.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/_schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,8 +27,6 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
27
27
|
predicted: "predicted";
|
|
28
28
|
}>>;
|
|
29
29
|
interval: z.ZodOptional<z.ZodUnion<readonly [z.ZodCoercedNumber<unknown>, z.ZodEnum<{
|
|
30
|
-
month: "month";
|
|
31
|
-
quarter: "quarter";
|
|
32
30
|
year: "year";
|
|
33
31
|
}>]>>;
|
|
34
32
|
bucket_limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
@@ -57,10 +55,10 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
57
55
|
}, z.core.$strip>>;
|
|
58
56
|
}, z.core.$strip>>;
|
|
59
57
|
}, z.core.$strip>, readonly [{
|
|
60
|
-
readonly reason: "
|
|
58
|
+
readonly reason: "interval_not_applicable";
|
|
61
59
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
62
|
-
readonly when: "
|
|
63
|
-
readonly recovery: "
|
|
60
|
+
readonly when: "interval was supplied but neither requested group_by dimension aggregates by a histogram that accepts a value of that type.";
|
|
61
|
+
readonly recovery: "Group by resolution or molecular_weight for a numeric interval, or release_year for the \"year\" period; otherwise drop interval and let each dimension use its own default.";
|
|
64
62
|
}, {
|
|
65
63
|
readonly reason: "duplicate_dimension";
|
|
66
64
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
@@ -70,8 +68,6 @@ export declare const analyzeCollection: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
70
68
|
readonly scope: z.ZodOptional<z.ZodString>;
|
|
71
69
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
72
70
|
readonly truncated: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
-
readonly shown: z.ZodOptional<z.ZodNumber>;
|
|
74
|
-
readonly cap: z.ZodOptional<z.ZodNumber>;
|
|
75
71
|
readonly bucketsReturned: z.ZodNumber;
|
|
76
72
|
}>;
|
|
77
73
|
//# sourceMappingURL=analyze-collection.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-collection.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze-collection.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAuCjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0M5B,CAAC"}
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
10
10
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
11
11
|
import { getServerConfig } from '../../../config/server-config.js';
|
|
12
|
-
import { buildFacetSpec, FACET_DIMENSION_NAMES, } from '../../../services/rcsb/facets.js';
|
|
12
|
+
import { buildFacetSpec, FACET_DIMENSION_NAMES, INTERVAL_DIMENSION_NAMES, intervalTarget, } from '../../../services/rcsb/facets.js';
|
|
13
13
|
import { getRcsbService } from '../../../services/rcsb/rcsb-service.js';
|
|
14
|
-
import { CONTENT_TYPE_SCOPES, countBuckets, coverageNotices, facetDimensionSchema, renderFacets, toFacetOutput, } from './_schemas.js';
|
|
14
|
+
import { CONTENT_TYPE_SCOPES, countBuckets, coverageNotices, facetDimensionSchema, renderFacets, toFacetOutput, truncationNotices, } from './_schemas.js';
|
|
15
15
|
/**
|
|
16
16
|
* Dimensions RCSB cannot aggregate over computed models: an AlphaFold /
|
|
17
17
|
* ModelArchive record carries no experimental method or resolution, so the
|
|
@@ -19,6 +19,16 @@ import { CONTENT_TYPE_SCOPES, countBuckets, coverageNotices, facetDimensionSchem
|
|
|
19
19
|
* The other four dimensions aggregate normally under predicted content.
|
|
20
20
|
*/
|
|
21
21
|
const EXPERIMENTAL_ONLY_DIMENSIONS = new Set(['method', 'resolution']);
|
|
22
|
+
/**
|
|
23
|
+
* Zero-match advice, per scope. Mirrors `protein_search_structures`: only the two
|
|
24
|
+
* single-universe scopes have a wider one to switch to, so under `all` the advice
|
|
25
|
+
* is to loosen the filters rather than to widen a scope already at its widest.
|
|
26
|
+
*/
|
|
27
|
+
const ZERO_MATCH_NOTICE = {
|
|
28
|
+
experimental: `No experimental structures matched this scope, so every requested dimension aggregated to nothing. Broaden or drop the query, organism, method, and max_resolution filters, or widen content_type to "all" to include computed models.`,
|
|
29
|
+
predicted: `No predicted models matched this scope, so every requested dimension aggregated to nothing. Broaden or drop the query, organism, method, and max_resolution filters, or widen content_type to "all" to include experimental structures.`,
|
|
30
|
+
all: `No structures matched this scope in either the experimental or computed-model universe — content_type "all" is already the widest scope. Broaden or drop the query, organism, method, and max_resolution filters.`,
|
|
31
|
+
};
|
|
22
32
|
export const analyzeCollection = tool('protein_analyze_collection', {
|
|
23
33
|
title: 'protein-mcp-server: analyze collection',
|
|
24
34
|
description: 'Profile the PDB into distributions and trends over an optional scoping query: counts by method, ' +
|
|
@@ -31,10 +41,10 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
31
41
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
32
42
|
errors: [
|
|
33
43
|
{
|
|
34
|
-
reason: '
|
|
44
|
+
reason: 'interval_not_applicable',
|
|
35
45
|
code: JsonRpcErrorCode.InvalidParams,
|
|
36
|
-
when: '
|
|
37
|
-
recovery:
|
|
46
|
+
when: 'interval was supplied but neither requested group_by dimension aggregates by a histogram that accepts a value of that type.',
|
|
47
|
+
recovery: `Group by resolution or molecular_weight for a numeric interval, or release_year for the "year" period; otherwise drop interval and let each dimension use its own default.`,
|
|
38
48
|
},
|
|
39
49
|
{
|
|
40
50
|
reason: 'duplicate_dimension',
|
|
@@ -74,10 +84,15 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
74
84
|
.number()
|
|
75
85
|
.positive()
|
|
76
86
|
.describe('Numeric bin width for a value histogram (e.g. resolution Å).'),
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
// RCSB's date_histogram schema accepts only "year"; month and quarter fail
|
|
88
|
+
// upstream JSON-schema validation, so they are not advertised here.
|
|
89
|
+
z.enum(['year']).describe('Period granularity for a date histogram. Only "year".'),
|
|
90
|
+
],
|
|
91
|
+
// A union reports a bare "Invalid input" by default, so the rejection would
|
|
92
|
+
// name neither arm; spell the accepted set out instead.
|
|
93
|
+
{ error: `Expected a positive number (histogram bin width) or "year" (date period).` })
|
|
79
94
|
.optional()
|
|
80
|
-
.describe(
|
|
95
|
+
.describe(`Bin width for a histogram dimension (a number, for resolution or molecular_weight) or period for a date histogram ("year", for release_year). Applies to whichever requested group_by dimension can consume that value type — primary or nested child — so a cross-tab like ["method","resolution"] bins its nested resolution child. When both requested dimensions can consume it the primary takes it and the child keeps its default. When neither can, the call is rejected rather than silently ignoring the override.`),
|
|
81
96
|
bucket_limit: z.coerce
|
|
82
97
|
.number()
|
|
83
98
|
.int()
|
|
@@ -98,13 +113,11 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
98
113
|
notice: z
|
|
99
114
|
.string()
|
|
100
115
|
.optional()
|
|
101
|
-
.describe('Advisory note (bucket truncation,
|
|
116
|
+
.describe('Advisory note (per-position bucket truncation, a scope that matched nothing, dimensions with no data under the requested content_type, dimensions whose buckets cover materially less than the total). Carries every applicable advisory in one string.'),
|
|
102
117
|
truncated: z
|
|
103
118
|
.boolean()
|
|
104
119
|
.optional()
|
|
105
|
-
.describe('True when
|
|
106
|
-
shown: z.number().optional().describe('Buckets returned for the capped dimension.'),
|
|
107
|
-
cap: z.number().optional().describe('Per-dimension bucket cap that was applied.'),
|
|
120
|
+
.describe('True when at least one dimension position — the top-level dimension or a nested cross-tab child — had more buckets than the applied cap. Which positions, and by how much, is named in notice.'),
|
|
108
121
|
bucketsReturned: z
|
|
109
122
|
.number()
|
|
110
123
|
.describe('Buckets in this response, summed over every dimension level: the top-level buckets plus, for a ' +
|
|
@@ -115,17 +128,19 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
115
128
|
const cfg = getServerConfig();
|
|
116
129
|
const rcsb = getRcsbService();
|
|
117
130
|
const cap = input.bucket_limit ?? cfg.facetBucketCap;
|
|
131
|
+
// `.min(1)` on the schema guarantees a primary; the array type does not carry
|
|
132
|
+
// that, and an out-of-enum or empty group_by is rejected before the handler runs.
|
|
118
133
|
const [primary, secondary] = input.group_by;
|
|
119
|
-
if (!primary)
|
|
120
|
-
throw ctx.fail('unknown_dimension', 'group_by requires at least one dimension.', {
|
|
121
|
-
...ctx.recoveryFor('unknown_dimension'),
|
|
122
|
-
});
|
|
123
134
|
// A repeated dimension would nest a facet inside itself upstream. RCSB answers
|
|
124
135
|
// that with same-attribute overlap, not a cross-tab between two dimensions —
|
|
125
136
|
// an undocumented shape no caller can read, so reject before the call.
|
|
126
137
|
const duplicate = input.group_by.find((d, i, all) => all.indexOf(d) !== i);
|
|
127
138
|
if (duplicate)
|
|
128
139
|
throw ctx.fail('duplicate_dimension', `group_by lists "${duplicate}" twice; a cross-tab needs two distinct dimensions.`, { ...ctx.recoveryFor('duplicate_dimension') });
|
|
140
|
+
// An override no requested position can consume would reach RCSB as nothing at
|
|
141
|
+
// all — the call would succeed with default bins, looking like a filtered result.
|
|
142
|
+
if (input.interval !== undefined && !intervalTarget(input.interval, primary, secondary))
|
|
143
|
+
throw ctx.fail('interval_not_applicable', `interval ${input.interval} does not apply to ${input.group_by.join(' or ')}; only ${INTERVAL_DIMENSION_NAMES.join(', ')} bin by an interval, and a numeric width needs resolution or molecular_weight while "year" needs release_year.`, { ...ctx.recoveryFor('interval_not_applicable') });
|
|
129
144
|
const spec = buildFacetSpec(primary, input.interval, secondary);
|
|
130
145
|
const { total, facets } = await rcsb.analyzeFacets({
|
|
131
146
|
...(input.query ? { text: input.query } : {}),
|
|
@@ -144,12 +159,19 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
144
159
|
// through it and is last-wins), and a cross-tab under predicted content can
|
|
145
160
|
// trip several at once — collect the fragments and emit them as ONE notice.
|
|
146
161
|
const notices = [];
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
162
|
+
// Every position the cap sliced is named, not just the first one `.find()` would
|
|
163
|
+
// reach: a cross-tab caps the parent and each nested child independently.
|
|
164
|
+
const truncations = truncationNotices(out, cap);
|
|
165
|
+
if (truncations.length > 0) {
|
|
166
|
+
ctx.enrich({ truncated: true });
|
|
167
|
+
notices.push(...truncations);
|
|
168
|
+
}
|
|
169
|
+
if (total === 0) {
|
|
170
|
+
// A scope that matched nothing explains every empty dimension by itself.
|
|
171
|
+
// Stacking the predicted-content caveat on top would misattribute the cause.
|
|
172
|
+
notices.push(ZERO_MATCH_NOTICE[input.content_type]);
|
|
151
173
|
}
|
|
152
|
-
if (input.content_type === 'predicted') {
|
|
174
|
+
else if (input.content_type === 'predicted') {
|
|
153
175
|
const blind = input.group_by.filter((d) => EXPERIMENTAL_ONLY_DIMENSIONS.has(d));
|
|
154
176
|
if (blind.length > 0) {
|
|
155
177
|
notices.push(`${blind.join(' and ')} ${blind.length > 1 ? 'are' : 'is'} empty under content_type "predicted": computed models carry no experimental method or resolution metadata. Use content_type "experimental" or "all", or group by organism, polymer_type, release_year, or molecular_weight.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-collection.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,qBAAqB,
|
|
1
|
+
{"version":3,"file":"analyze-collection.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,qBAAqB,EAErB,wBAAwB,EACxB,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAE3F;;;;GAIG;AACH,MAAM,iBAAiB,GAAG;IACxB,YAAY,EAAE,wOAAwO;IACtP,SAAS,EAAE,yOAAyO;IACpP,GAAG,EAAE,mNAAmN;CAC1J,CAAC;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,EAAE;IAClE,KAAK,EAAE,wCAAwC;IAC/C,WAAW,EACT,kGAAkG;QAClG,wGAAwG;QACxG,uGAAuG;QACvG,wGAAwG;QACxG,yGAAyG;QACzG,yGAAyG;QACzG,gFAAgF;IAClF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAExD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,yBAAyB;YACjC,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,IAAI,EAAE,6HAA6H;YACnI,QAAQ,EAAE,4KAA4K;SACvL;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,IAAI,EAAE,qFAAqF;YAC3F,QAAQ,EACN,8GAA8G;SACjH;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC;aACR,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,wIAAwI,CACzI;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0EAA0E,CAAC;QACvF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC7E,cAAc,EAAE,CAAC,CAAC,MAAM;aACrB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;QACrD,YAAY,EAAE,CAAC;aACZ,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aAC1C,OAAO,CAAC,cAAc,CAAC;aACvB,QAAQ,CACP,sFAAsF;YACpF,mFAAmF,CACtF;QACH,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ;YACE,2EAA2E;YAC3E,0EAA0E;YAC1E,+EAA+E;YAC/E,CAAC,CAAC,MAAM;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,2EAA2E;YAC3E,oEAAoE;YACpE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SACnF;QACD,4EAA4E;QAC5E,wDAAwD;QACxD,EAAE,KAAK,EAAE,2EAA2E,EAAE,CACvF;aACA,QAAQ,EAAE;aACV,QAAQ,CACP,8fAA8f,CAC/f;QACH,YAAY,EAAE,CAAC,CAAC,MAAM;aACnB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,mGAAmG;YACjG,+EAA+E;YAC/E,iGAAiG;YACjG,uFAAuF,CAC1F;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACrE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC9E,CAAC;IAEF,UAAU,EAAE;QACV,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QACtF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,yPAAyP,CAC1P;QACH,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CACP,gMAAgM,CACjM;QACH,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,CACP,iGAAiG;YAC/F,6FAA6F;YAC7F,+FAA+F,CAClG;KACJ;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,CAAC;QACrD,8EAA8E;QAC9E,kFAAkF;QAClF,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAqD,CAAC;QACzF,+EAA+E;QAC/E,6EAA6E;QAC7E,uEAAuE;QACvE,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,IAAI,SAAS;YACX,MAAM,GAAG,CAAC,IAAI,CACZ,qBAAqB,EACrB,mBAAmB,SAAS,qDAAqD,EACjF,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAC9C,CAAC;QACJ,+EAA+E;QAC/E,kFAAkF;QAClF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;YACrF,MAAM,GAAG,CAAC,IAAI,CACZ,yBAAyB,EACzB,YAAY,KAAK,CAAC,QAAQ,sBAAsB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,gHAAgH,EACxO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,CAClD,CAAC;QACJ,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAChD;YACE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;gBAC1C,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;YACP,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;SACrD,EACD,CAAC,IAAI,CAAC,EACN,GAAG,CACJ,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAE5D,+EAA+E;QAC/E,6EAA6E;QAC7E,GAAG,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEnD,6EAA6E;QAC7E,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,iFAAiF;QACjF,0EAA0E;QAC1E,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,yEAAyE;YACzE,6EAA6E;YAC7E,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,8NAA8N,CACxR,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa,CAAC,2BAA2B,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -61,6 +61,11 @@ export declare const searchStructures: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
61
61
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
62
62
|
readonly when: "No query, sequence, organism, method, or maximum resolution was provided — nothing to search on.";
|
|
63
63
|
readonly recovery: "Provide a free-text query, protein sequence, organism name, experimental method, or maximum resolution.";
|
|
64
|
+
}, {
|
|
65
|
+
readonly reason: "sequence_modifier_without_sequence";
|
|
66
|
+
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
67
|
+
readonly when: "min_identity or max_evalue was supplied with no sequence, so the threshold would never reach a sequence search.";
|
|
68
|
+
readonly recovery: "Add a sequence to run a similarity search these thresholds can filter, or drop min_identity and max_evalue and search on the remaining criteria.";
|
|
64
69
|
}, {
|
|
65
70
|
readonly reason: "duplicate_dimension";
|
|
66
71
|
readonly code: JsonRpcErrorCode.InvalidParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-structures.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-structures.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"search-structures.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-structures.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAwDjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsR3B,CAAC"}
|
|
@@ -30,6 +30,24 @@ function isPredictedId(id) {
|
|
|
30
30
|
function accessionFromCsm(id) {
|
|
31
31
|
return /AF_AF([A-Z0-9]+?)F\d+$/i.exec(id)?.[1]?.toUpperCase();
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Advisory for the facet dimensions the bucket cap sliced, naming every one of
|
|
35
|
+
* them rather than the first. The cap here is fixed server-side with no per-call
|
|
36
|
+
* override, so the route to the long tail is another tool: every dimension this
|
|
37
|
+
* tool facets is also a `protein_analyze_collection` `group_by` value, and that
|
|
38
|
+
* tool takes a `bucket_limit` up to 500.
|
|
39
|
+
*
|
|
40
|
+
* A sequence search has no such route — `protein_analyze_collection` has no
|
|
41
|
+
* sequence input, so it cannot reproduce the result set the facet describes.
|
|
42
|
+
* Pointing there would hand back a different distribution under the same name,
|
|
43
|
+
* so that case is told to narrow the request instead.
|
|
44
|
+
*/
|
|
45
|
+
function truncationNotice(dimensions, cap, sequenceSearch) {
|
|
46
|
+
const named = `${dimensions.join(' and ')} ${dimensions.length > 1 ? 'were' : 'was'} capped at ${cap} buckets`;
|
|
47
|
+
return sequenceSearch
|
|
48
|
+
? `${named}. protein_analyze_collection cannot reproduce a sequence search, so narrow this request instead: drop sequence, or add organism, method, max_resolution, or query filters to shrink the distribution before the cap.`
|
|
49
|
+
: `${named}. Call protein_analyze_collection with ${dimensions.length > 1 ? 'each dimension' : 'that dimension'} in group_by and a bucket_limit above ${cap} (up to 500) to reach the long tail.`;
|
|
50
|
+
}
|
|
33
51
|
export const searchStructures = tool('protein_search_structures', {
|
|
34
52
|
title: 'protein-mcp-server: search structures',
|
|
35
53
|
description: 'Search experimental (PDB) and predicted (computed-model) protein structures by free text, ' +
|
|
@@ -49,6 +67,12 @@ export const searchStructures = tool('protein_search_structures', {
|
|
|
49
67
|
when: 'No query, sequence, organism, method, or maximum resolution was provided — nothing to search on.',
|
|
50
68
|
recovery: 'Provide a free-text query, protein sequence, organism name, experimental method, or maximum resolution.',
|
|
51
69
|
},
|
|
70
|
+
{
|
|
71
|
+
reason: 'sequence_modifier_without_sequence',
|
|
72
|
+
code: JsonRpcErrorCode.InvalidParams,
|
|
73
|
+
when: 'min_identity or max_evalue was supplied with no sequence, so the threshold would never reach a sequence search.',
|
|
74
|
+
recovery: 'Add a sequence to run a similarity search these thresholds can filter, or drop min_identity and max_evalue and search on the remaining criteria.',
|
|
75
|
+
},
|
|
52
76
|
{
|
|
53
77
|
reason: 'duplicate_dimension',
|
|
54
78
|
code: JsonRpcErrorCode.InvalidParams,
|
|
@@ -83,12 +107,12 @@ export const searchStructures = tool('protein_search_structures', {
|
|
|
83
107
|
.min(0)
|
|
84
108
|
.max(1)
|
|
85
109
|
.optional()
|
|
86
|
-
.describe('Minimum sequence identity (0–1) for a sequence search. Default 0.'),
|
|
110
|
+
.describe('Minimum sequence identity (0–1) for a sequence search. Requires sequence — supplying it without one is rejected, since the threshold would never reach RCSB. Default 0.'),
|
|
87
111
|
max_evalue: z
|
|
88
112
|
.number()
|
|
89
113
|
.positive()
|
|
90
114
|
.optional()
|
|
91
|
-
.describe('Maximum E-value for a sequence search. Default 1.'),
|
|
115
|
+
.describe('Maximum E-value for a sequence search. Requires sequence — supplying it without one is rejected, since the threshold would never reach RCSB. Default 1.'),
|
|
92
116
|
content_type: z
|
|
93
117
|
.enum(['experimental', 'predicted', 'all'])
|
|
94
118
|
.default('all')
|
|
@@ -166,6 +190,18 @@ export const searchStructures = tool('protein_search_structures', {
|
|
|
166
190
|
...ctx.recoveryFor('no_criteria'),
|
|
167
191
|
});
|
|
168
192
|
}
|
|
193
|
+
// buildQuery() reads these two only inside its sequence branch, so without a
|
|
194
|
+
// sequence they never reach RCSB and the response looks like a filtered search
|
|
195
|
+
// that was never filtered. Rejected here rather than in the schema so the
|
|
196
|
+
// caller gets a data.reason and the declared recovery hint alongside -32602.
|
|
197
|
+
const sequenceModifiers = [
|
|
198
|
+
typeof input.min_identity === 'number' ? 'min_identity' : undefined,
|
|
199
|
+
typeof input.max_evalue === 'number' ? 'max_evalue' : undefined,
|
|
200
|
+
].filter((name) => name !== undefined);
|
|
201
|
+
if (!input.sequence && sequenceModifiers.length > 0) {
|
|
202
|
+
const many = sequenceModifiers.length > 1;
|
|
203
|
+
throw ctx.fail('sequence_modifier_without_sequence', `${sequenceModifiers.join(' and ')} ${many ? 'are sequence-search thresholds' : 'is a sequence-search threshold'}, but this request has no sequence — ${many ? 'they' : 'it'} would never reach RCSB.`, { ...ctx.recoveryFor('sequence_modifier_without_sequence') });
|
|
204
|
+
}
|
|
169
205
|
// RCSB collapses two identically-named facet requests into one raw facet, and
|
|
170
206
|
// the attribute-keyed lookup maps both specs back onto it — a repeated
|
|
171
207
|
// dimension would return the same breakdown twice and double-count on any sum.
|
|
@@ -207,13 +243,17 @@ export const searchStructures = tool('protein_search_structures', {
|
|
|
207
243
|
});
|
|
208
244
|
if (input.query)
|
|
209
245
|
ctx.enrich.echo(input.query);
|
|
210
|
-
// `notice` is a single last-wins field, so the zero-hit advice
|
|
211
|
-
// fragment per under-covered facet dimension compose into ONE string.
|
|
246
|
+
// `notice` is a single last-wins field, so the zero-hit advice, the capped-facet
|
|
247
|
+
// advice, and one fragment per under-covered facet dimension compose into ONE string.
|
|
212
248
|
const notices = [];
|
|
213
249
|
if (hits.length === 0)
|
|
214
250
|
notices.push(ZERO_HIT_NOTICE[input.content_type]);
|
|
215
|
-
if (facets)
|
|
251
|
+
if (facets) {
|
|
252
|
+
const capped = facets.filter((f) => f.truncated).map((f) => f.dimension);
|
|
253
|
+
if (capped.length > 0)
|
|
254
|
+
notices.push(truncationNotice(capped, cfg.facetBucketCap, Boolean(input.sequence)));
|
|
216
255
|
notices.push(...coverageNotices(facets, result.total));
|
|
256
|
+
}
|
|
217
257
|
if (notices.length > 0)
|
|
218
258
|
ctx.enrich.notice(notices.join(' '));
|
|
219
259
|
return { hits, ...(facets ? { facets } : {}) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-structures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-structures.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,MAAM,eAAe,GAAG;IACtB,YAAY,EACV,iIAAiI;IACnI,SAAS,EACP,uJAAuJ;IACzJ,GAAG,EAAE,kKAAkK;CACzG,CAAC;AAEjE,2FAA2F;AAC3F,SAAS,aAAa,CAAC,EAAU;IAC/B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,6GAA6G;AAC7G,SAAS,gBAAgB,CAAC,EAAU;IAClC,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE;IAChE,KAAK,EAAE,uCAAuC;IAC9C,WAAW,EACT,4FAA4F;QAC5F,yFAAyF;QACzF,iGAAiG;QACjG,iGAAiG;QACjG,kGAAkG;QAClG,mGAAmG;QACnG,mGAAmG;QACnG,qGAAqG;QACrG,uEAAuE;IACzE,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAExD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,IAAI,EAAE,kGAAkG;YACxG,QAAQ,EACN,yGAAyG;SAC5G;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,IAAI,EAAE,iFAAiF;YACvF,QAAQ,EAAE,8EAA8E;SACzF;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iEAAiE,CAAC;QAC9E,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,sFAAsF,CACvF;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kFAAkF,CAAC;QAC/F,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,iFAAiF,CAAC;QAC9F,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CAAC,mEAAmE,CAAC;QAChF,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;QAChE,YAAY,EAAE,CAAC;aACZ,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aAC1C,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,8FAA8F,CAC/F;QACH,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;aACpC,QAAQ,EAAE;aACV,QAAQ,CACP,mIAAmI,CACpI;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC/F,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,uEAAuE,CAAC;KACrF,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC;aACJ,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YACpF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG,CACnG;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;iBACnC,QAAQ,CAAC,mCAAmC,CAAC;YAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC9D,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACtF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,uDAAuD,CAAC;SACrE,CAAC;aACD,QAAQ,CAAC,2DAA2D,CAAC,CACzE;aACA,QAAQ,CAAC,wBAAwB,CAAC;QACrC,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,wBAAwB,CAAC;aAC/B,QAAQ,EAAE;aACV,QAAQ,CACP,4KAA4K,CAC7K;KACJ,CAAC;IAEF,UAAU,EAAE;QACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACrE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iEAAiE,CAAC;QAC9E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACxF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,6LAA6L,CAC9L;KACJ;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,IACE,CAAC,KAAK,CAAC,KAAK;YACZ,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,KAAK,CAAC,MAAM;YACb,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EACxC,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,CACZ,aAAa,EACb,kFAAkF,EAClF;gBACE,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC;aAClC,CACF,CAAC;QACJ,CAAC;QACD,8EAA8E;QAC9E,uEAAuE;QACvE,+EAA+E;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,SAAS;YACX,MAAM,GAAG,CAAC,IAAI,CACZ,qBAAqB,EACrB,iBAAiB,SAAS,sDAAsD,EAChF,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAC9C,CAAC;QACJ,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B;YACE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;gBAC1C,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;YACpD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,EACD,GAAG,EACH,UAAU,CACX,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACxF,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC9C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7F,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,KAAK;YAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9C,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa,CAAC,yBAAyB,MAAM,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC;QAC7E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG;gBACX,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/C,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC3C,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI;gBAC7E,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjD,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI;gBAChE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;aACxE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC;AAEH,2EAA2E;AAC3E,SAAS,KAAK,CAAC,GAAc,EAAE,QAAgC,EAAE,cAAuB;IACtF,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,MAAM,EAAE,WAAoB;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO;QACL,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACrC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,EAAE,cAAuB;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,OAAO,IAAI,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"search-structures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-structures.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,25 @@ export declare const FACET_DIMENSIONS: {
|
|
|
45
45
|
export type FacetDimensionName = keyof typeof FACET_DIMENSIONS;
|
|
46
46
|
/** All supported dimension names (for Zod enums). */
|
|
47
47
|
export declare const FACET_DIMENSION_NAMES: [FacetDimensionName, ...FacetDimensionName[]];
|
|
48
|
-
/**
|
|
48
|
+
/** The histogram / date-histogram dimensions, in enum order — the set an `interval` can reach. */
|
|
49
|
+
export declare const INTERVAL_DIMENSION_NAMES: ("method" | "molecular_weight" | "organism" | "polymer_type" | "release_year" | "resolution")[];
|
|
50
|
+
/**
|
|
51
|
+
* Which requested dimension can consume an `interval` override, or `undefined`
|
|
52
|
+
* when neither can. Compatibility is by value type rather than merely "not
|
|
53
|
+
* terms": a numeric bin width belongs to a `histogram` dimension, the `year`
|
|
54
|
+
* period to a `date_histogram` one. The primary position wins when both could
|
|
55
|
+
* take it, so an ambiguous override lands where the caller can predict.
|
|
56
|
+
*/
|
|
57
|
+
export declare function intervalTarget(interval: number | string, dimension: FacetDimensionName, child?: FacetDimensionName): FacetDimensionName | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Build a {@link FacetSpec} for a dimension, with an optional interval override
|
|
60
|
+
* and nested child. The override reaches whichever of the two positions can
|
|
61
|
+
* consume it ({@link intervalTarget}) — RCSB honours a per-position `interval`
|
|
62
|
+
* on a nested facet, so a histogram child is not stuck on its default just
|
|
63
|
+
* because the parent aggregates by terms. The position that cannot consume it
|
|
64
|
+
* keeps its own default, and an override no position accepts is dropped rather
|
|
65
|
+
* than sent upstream; callers that must reject that case ask
|
|
66
|
+
* {@link intervalTarget} first.
|
|
67
|
+
*/
|
|
49
68
|
export declare function buildFacetSpec(dimension: FacetDimensionName, interval?: number | string, child?: FacetDimensionName): FacetSpec;
|
|
50
69
|
//# sourceMappingURL=facets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/services/rcsb/facets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWnD,gFAAgF;AAChF,eAAO,MAAM,gBAAgB;;iBAEzB,SAAS,EAAE,cAAc;iBACzB,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,qBAAqB;;;iBAG5B,SAAS,EAAE,kDAAkD;iBAC7D,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,iBAAiB;;;iBAGxB,SAAS,EAAE,qCAAqC;iBAChD,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,qBAAqB;;;iBAG5B,SAAS,EAAE,qCAAqC;iBAChD,WAAW,EAAE,WAAW;iBACxB,eAAe,EAAE,GAAG;iBACpB,KAAK,EAAE,gBAAgB;;;iBAGvB,SAAS,EAAE,0CAA0C;iBACrD,WAAW,EAAE,gBAAgB;iBAC7B,eAAe,EAAE,MAAM;iBACvB,KAAK,EAAE,cAAc;;;iBAGrB,SAAS,EAAE,kCAAkC;iBAC7C,WAAW,EAAE,WAAW;iBACxB,eAAe,EAAE,EAAE;iBACnB,KAAK,EAAE,wBAAwB;;CAEc,CAAC;AAElD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE/D,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,EAAoC,CACpE,kBAAkB,EAClB,GAAG,kBAAkB,EAAE,CACxB,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/services/rcsb/facets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWnD,gFAAgF;AAChF,eAAO,MAAM,gBAAgB;;iBAEzB,SAAS,EAAE,cAAc;iBACzB,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,qBAAqB;;;iBAG5B,SAAS,EAAE,kDAAkD;iBAC7D,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,iBAAiB;;;iBAGxB,SAAS,EAAE,qCAAqC;iBAChD,WAAW,EAAE,OAAO;iBACpB,KAAK,EAAE,qBAAqB;;;iBAG5B,SAAS,EAAE,qCAAqC;iBAChD,WAAW,EAAE,WAAW;iBACxB,eAAe,EAAE,GAAG;iBACpB,KAAK,EAAE,gBAAgB;;;iBAGvB,SAAS,EAAE,0CAA0C;iBACrD,WAAW,EAAE,gBAAgB;iBAC7B,eAAe,EAAE,MAAM;iBACvB,KAAK,EAAE,cAAc;;;iBAGrB,SAAS,EAAE,kCAAkC;iBAC7C,WAAW,EAAE,WAAW;iBACxB,eAAe,EAAE,EAAE;iBACnB,KAAK,EAAE,wBAAwB;;CAEc,CAAC;AAElD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE/D,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,EAAoC,CACpE,kBAAkB,EAClB,GAAG,kBAAkB,EAAE,CACxB,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,wBAAwB,iGAEpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,SAAS,EAAE,kBAAkB,EAC7B,KAAK,CAAC,EAAE,kBAAkB,GACzB,kBAAkB,GAAG,SAAS,CAKhC;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAC1B,KAAK,CAAC,EAAE,kBAAkB,GACzB,SAAS,CAMX"}
|
|
@@ -42,8 +42,25 @@ export const FACET_DIMENSIONS = {
|
|
|
42
42
|
};
|
|
43
43
|
/** All supported dimension names (for Zod enums). */
|
|
44
44
|
export const FACET_DIMENSION_NAMES = Object.keys(FACET_DIMENSIONS);
|
|
45
|
-
/**
|
|
46
|
-
export
|
|
45
|
+
/** The histogram / date-histogram dimensions, in enum order — the set an `interval` can reach. */
|
|
46
|
+
export const INTERVAL_DIMENSION_NAMES = FACET_DIMENSION_NAMES.filter((d) => FACET_DIMENSIONS[d].aggregation !== 'terms');
|
|
47
|
+
/**
|
|
48
|
+
* Which requested dimension can consume an `interval` override, or `undefined`
|
|
49
|
+
* when neither can. Compatibility is by value type rather than merely "not
|
|
50
|
+
* terms": a numeric bin width belongs to a `histogram` dimension, the `year`
|
|
51
|
+
* period to a `date_histogram` one. The primary position wins when both could
|
|
52
|
+
* take it, so an ambiguous override lands where the caller can predict.
|
|
53
|
+
*/
|
|
54
|
+
export function intervalTarget(interval, dimension, child) {
|
|
55
|
+
const wanted = typeof interval === 'number' ? 'histogram' : 'date_histogram';
|
|
56
|
+
if (FACET_DIMENSIONS[dimension].aggregation === wanted)
|
|
57
|
+
return dimension;
|
|
58
|
+
if (child && FACET_DIMENSIONS[child].aggregation === wanted)
|
|
59
|
+
return child;
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
/** Build one position's {@link FacetSpec}, falling back to its default bin width or period. */
|
|
63
|
+
function specFor(dimension, interval) {
|
|
47
64
|
const def = FACET_DIMENSIONS[dimension];
|
|
48
65
|
const resolvedInterval = interval ?? def.defaultInterval;
|
|
49
66
|
return {
|
|
@@ -53,7 +70,23 @@ export function buildFacetSpec(dimension, interval, child) {
|
|
|
53
70
|
...(def.aggregation !== 'terms' && resolvedInterval !== undefined
|
|
54
71
|
? { interval: resolvedInterval }
|
|
55
72
|
: {}),
|
|
56
|
-
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build a {@link FacetSpec} for a dimension, with an optional interval override
|
|
77
|
+
* and nested child. The override reaches whichever of the two positions can
|
|
78
|
+
* consume it ({@link intervalTarget}) — RCSB honours a per-position `interval`
|
|
79
|
+
* on a nested facet, so a histogram child is not stuck on its default just
|
|
80
|
+
* because the parent aggregates by terms. The position that cannot consume it
|
|
81
|
+
* keeps its own default, and an override no position accepts is dropped rather
|
|
82
|
+
* than sent upstream; callers that must reject that case ask
|
|
83
|
+
* {@link intervalTarget} first.
|
|
84
|
+
*/
|
|
85
|
+
export function buildFacetSpec(dimension, interval, child) {
|
|
86
|
+
const target = interval === undefined ? undefined : intervalTarget(interval, dimension, child);
|
|
87
|
+
return {
|
|
88
|
+
...specFor(dimension, target === dimension ? interval : undefined),
|
|
89
|
+
...(child ? { child: specFor(child, target === child ? interval : undefined) } : {}),
|
|
57
90
|
};
|
|
58
91
|
}
|
|
59
92
|
//# sourceMappingURL=facets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/services/rcsb/facets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,SAAS,EAAE,cAAc;QACzB,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,qBAAqB;KAC7B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,kDAAkD;QAC7D,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,iBAAiB;KACzB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,qCAAqC;QAChD,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,qBAAqB;KAC7B;IACD,UAAU,EAAE;QACV,SAAS,EAAE,qCAAqC;QAChD,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,GAAG;QACpB,KAAK,EAAE,gBAAgB;KACxB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,0CAA0C;QACrD,WAAW,EAAE,gBAAgB;QAC7B,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,cAAc;KACtB;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,kCAAkC;QAC7C,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,EAAE;QACnB,KAAK,EAAE,wBAAwB;KAChC;CAC8C,CAAC;AAKlD,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAGhE,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/services/rcsb/facets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,SAAS,EAAE,cAAc;QACzB,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,qBAAqB;KAC7B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,kDAAkD;QAC7D,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,iBAAiB;KACzB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,qCAAqC;QAChD,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,qBAAqB;KAC7B;IACD,UAAU,EAAE;QACV,SAAS,EAAE,qCAAqC;QAChD,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,GAAG;QACpB,KAAK,EAAE,gBAAgB;KACxB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,0CAA0C;QACrD,WAAW,EAAE,gBAAgB;QAC7B,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,cAAc;KACtB;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,kCAAkC;QAC7C,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,EAAE;QACnB,KAAK,EAAE,wBAAwB;KAChC;CAC8C,CAAC;AAKlD,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAGhE,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,MAAM,CAClE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CACnD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAyB,EACzB,SAA6B,EAC7B,KAA0B;IAE1B,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC7E,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACzE,IAAI,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+FAA+F;AAC/F,SAAS,OAAO,CAAC,SAA6B,EAAE,QAA0B;IACxE,MAAM,GAAG,GAAiB,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,QAAQ,IAAI,GAAG,CAAC,eAAe,CAAC;IACzD,OAAO;QACL,SAAS;QACT,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO,IAAI,gBAAgB,KAAK,SAAS;YAC/D,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA6B,EAC7B,QAA0B,EAC1B,KAA0B;IAE1B,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/F,OAAO;QACL,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/protein-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"mcpName": "io.github.cyanheads/protein-mcp-server",
|
|
5
5
|
"description": "Federated protein structure & annotation across experimental (PDB) and predicted (AlphaFold) models via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -91,18 +91,18 @@
|
|
|
91
91
|
"access": "public"
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
|
-
"@cyanheads/mcp-ts-core": "^0.12.
|
|
94
|
+
"@cyanheads/mcp-ts-core": "^0.12.7",
|
|
95
95
|
"pino-pretty": "^13.1.3",
|
|
96
|
-
"zod": "^4.4
|
|
96
|
+
"zod": "^4.5.4"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
|
-
"@biomejs/biome": "2.5.
|
|
99
|
+
"@biomejs/biome": "2.5.12",
|
|
100
100
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
101
|
-
"@types/node": "26.
|
|
101
|
+
"@types/node": "26.4.1",
|
|
102
102
|
"depcheck": "^1.4.7",
|
|
103
|
-
"ignore": "^7.0.
|
|
104
|
-
"tsc-alias": "^1.9.
|
|
103
|
+
"ignore": "^7.0.8",
|
|
104
|
+
"tsc-alias": "^1.9.4",
|
|
105
105
|
"typescript": "^7.0.2",
|
|
106
|
-
"vitest": "^
|
|
106
|
+
"vitest": "^5.0.0"
|
|
107
107
|
}
|
|
108
108
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/protein-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.6.0",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/protein-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.6.0",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
49
49
|
"identifier": "@cyanheads/protein-mcp-server",
|
|
50
50
|
"runtimeHint": "node",
|
|
51
|
-
"version": "0.
|
|
51
|
+
"version": "0.6.0",
|
|
52
52
|
"packageArguments": [
|
|
53
53
|
{
|
|
54
54
|
"type": "positional",
|