@cyanheads/protein-mcp-server 0.8.4 → 0.8.6
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 +15 -18
- package/CLAUDE.md +15 -18
- package/Dockerfile +92 -36
- package/README.md +75 -90
- package/changelog/0.8.x/0.8.5.md +16 -0
- package/changelog/0.8.x/0.8.6.md +22 -0
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/analyze-collection.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-structures.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/compare-structures.tool.js +3 -5
- package/dist/mcp-server/tools/definitions/compare-structures.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-similar.tool.js +5 -7
- package/dist/mcp-server/tools/definitions/find-similar.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-annotations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-annotations.tool.js +4 -10
- package/dist/mcp-server/tools/definitions/get-annotations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-structure.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-structure.tool.js +3 -3
- package/dist/mcp-server/tools/definitions/get-structure.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-structures.tool.js +3 -5
- package/dist/mcp-server/tools/definitions/search-structures.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/track-ligands.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/track-ligands.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/track-ligands.tool.js +78 -31
- package/dist/mcp-server/tools/definitions/track-ligands.tool.js.map +1 -1
- package/dist/services/rcsb/rcsb-service.d.ts +13 -3
- package/dist/services/rcsb/rcsb-service.d.ts.map +1 -1
- package/dist/services/rcsb/rcsb-service.js +50 -12
- package/dist/services/rcsb/rcsb-service.js.map +1 -1
- package/dist/services/rcsb/types.d.ts +22 -4
- package/dist/services/rcsb/types.d.ts.map +1 -1
- package/package.json +10 -9
- package/server.json +10 -24
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
|
|
|
@@ -29,118 +29,98 @@
|
|
|
29
29
|
|
|
30
30
|
## Overview
|
|
31
31
|
|
|
32
|
-
Experimental (PDB) and predicted (AlphaFold) protein structures
|
|
32
|
+
Experimental (PDB) and predicted (AlphaFold) protein structures behind one surface. Search, fetch, align, and annotate structures and their ligands across RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro, and Foldseek, all keyless. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
|
|
33
33
|
|
|
34
34
|
### Tools
|
|
35
35
|
|
|
36
36
|
| Tool | Description |
|
|
37
37
|
|:---|:---|
|
|
38
|
-
| `protein_search_structures` | Search experimental and predicted structures by
|
|
39
|
-
| `protein_get_structure` | Fetch metadata and coordinate
|
|
40
|
-
| `protein_find_similar` | Find sequence homologs (RCSB mmseqs2) or fold homologs (Foldseek)
|
|
41
|
-
| `protein_track_ligands` | Resolve
|
|
42
|
-
| `protein_compare_structures` |
|
|
43
|
-
| `protein_analyze_collection` | Profile the PDB
|
|
44
|
-
| `protein_get_annotations` | Fetch UniProt features and
|
|
38
|
+
| `protein_search_structures` | Search experimental and predicted structures by text, sequence, or organism/method/resolution, with optional facets |
|
|
39
|
+
| `protein_get_structure` | Fetch metadata and coordinate URLs for experimental, predicted, or best-available structures |
|
|
40
|
+
| `protein_find_similar` | Find sequence homologs (RCSB mmseqs2) or fold homologs (Foldseek) |
|
|
41
|
+
| `protein_track_ligands` | Resolve ligands to component IDs, find structures containing one, or map its binding site |
|
|
42
|
+
| `protein_compare_structures` | Align structures with TM-align or jFATCAT, against a reference or all pairs |
|
|
43
|
+
| `protein_analyze_collection` | Profile the PDB as counts, histograms, timelines, and cross-tabs |
|
|
44
|
+
| `protein_get_annotations` | Fetch UniProt features and variants plus InterPro domains with GO terms |
|
|
45
45
|
|
|
46
46
|
### Resources
|
|
47
47
|
|
|
48
48
|
| Resource | Description |
|
|
49
49
|
|:---|:---|
|
|
50
|
-
| `pdb://{entry_id}` | Experimental structure summary for a PDB entry
|
|
51
|
-
| `af://{uniprot}` |
|
|
50
|
+
| `pdb://{entry_id}` | Experimental structure summary for a PDB entry |
|
|
51
|
+
| `af://{uniprot}` | AlphaFold DB predicted-structure summary for a UniProt accession |
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
Both resources are also reachable through `protein_get_structure`, for clients that don't surface resources.
|
|
54
54
|
|
|
55
55
|
## Capability reference
|
|
56
56
|
|
|
57
57
|
### `protein_search_structures` <sub>tool</sub>
|
|
58
58
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
- `start` and `limit` page through ranked results; `nextStart` is returned while another page remains, and an empty page past the end names the offset in `notice` rather than reporting no matches
|
|
63
|
-
- Optional `facets` return a method / organism / release-year breakdown alongside the hits — each dimension may be listed once and reports how many matches carry no value for it; a capped dimension is named in `notice`, with `protein_analyze_collection` (larger `bucket_limit`) as the route to the long tail
|
|
64
|
-
- Chain hit IDs straight into `protein_get_structure`
|
|
59
|
+
- At least one of `query`, `sequence` (an mmseqs2 search; `min_identity` / `max_evalue` apply only with it), `organism`, `method`, or `max_resolution`; `content_type` is `experimental`, `predicted`, or `all` (default); up to 100 hits per page (default 25) via `limit` / `start`
|
|
60
|
+
- Each hit names its `source` and a chainable entry `id` (sequence hits add `entityId`); experimental hits carry title, method, resolution, and organism, AlphaFold models their `uniprotAccession`
|
|
61
|
+
- Optional `facets` (`method`, `organism`, `polymer_type`, `resolution`, `release_year`, `molecular_weight`) add a flat breakdown capped at `PROTEIN_FACET_BUCKET_CAP` buckets per dimension; for non-sequence searches, `protein_analyze_collection` reaches the long tail
|
|
65
62
|
|
|
66
63
|
---
|
|
67
64
|
|
|
68
65
|
### `protein_get_structure` <sub>tool</sub>
|
|
69
66
|
|
|
70
|
-
- `source: experimental`
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
- `coordinateUrls` lists only files that exist: BinaryCIF comes from RCSB's ModelServer, the PDB format is omitted for large mmCIF-only entries, and a computed model's files come from its provider (all three formats from AlphaFold DB, mmCIF from ModelArchive) — an AlphaFold model whose provider lookup fails keeps only its RCSB BinaryCIF, named in `notice`
|
|
74
|
-
- `include_coords` inlines coordinate content, subject to a response budget — an over-budget batch returns a per-structure size outline (re-call with `sections: [ids]`), and a single oversized file is withheld with a pointer to its `coordinateUrls`
|
|
75
|
-
- Every response carries an `attribution` block naming upstream data licenses and citations
|
|
67
|
+
- `source: experimental` (default) takes PDB entry IDs and the `AF_*` / `MA_*` computed-model IDs search returns (these come back as `source: predicted`); `predicted` takes UniProt accessions for AlphaFold models with pLDDT/PAE; `best_available` takes UniProt accessions and returns the highest-resolution experimental structure, else the best prediction. Up to `PROTEIN_MAX_BATCH_IDS` IDs per call (default 25)
|
|
68
|
+
- Unresolved IDs land in `failed[]`, and `requested` / `processed` show IDs dropped past the cap; the call fails as `all_failed` when nothing resolves and `mixed_id_types` when the IDs don't fit `source`. Experimental-source records add `polymerEntities`, `ligands`, `molecularWeight`, and `releaseDate`, and `coordinateUrls` lists only files that exist
|
|
69
|
+
- `include_coords` inlines coordinate text within a response budget; an over-budget batch returns an `overflow` size outline to re-call with `sections: [ids]`, and a lone oversized file is withheld in favor of its `coordinateUrls`
|
|
76
70
|
|
|
77
71
|
---
|
|
78
72
|
|
|
79
73
|
### `protein_find_similar` <sub>tool</sub>
|
|
80
74
|
|
|
81
|
-
- `by: sequence` runs a synchronous RCSB mmseqs2 search
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- An async job that exceeds the poll budget returns `status: computing` with a `ticketId` — re-call with `ticket_id` to resume; a completed structure search returns the same ticket so a new `start` pages the finished job
|
|
85
|
-
- Foldseek searches each chain of a multichain structure as its own query: a structure response covers one query (`query`, 0-based, default `0`) and reports `queryCount`, with a `notice` naming the other queries; pass `query` with `ticket_id` to read another chain's hits from the same job. An out-of-range `query` is rejected (`query_out_of_range`), not answered with an empty list
|
|
86
|
-
- Structure hits are ranked best first by `score` across every searched database (hits without a score last, ties by database then target) before `start`/`limit` paging
|
|
87
|
-
- Each mode reads only its own controls (`sequence`, `max_evalue`, `min_identity` under `by: sequence`; `ticket_id`, `databases`, `query` under `by: structure`) — a field the selected mode can't consume is rejected, not ignored
|
|
88
|
-
- Each hit names the engine and source database it came from
|
|
75
|
+
- `by: sequence` runs a synchronous RCSB mmseqs2 search from `sequence`, `pdb_id`, or `uniprot`, filtered by `max_evalue` / `min_identity`; `by: structure` runs an async Foldseek search from `pdb_id` or `uniprot` against `pdb100` + `afdb50` unless `databases` says otherwise. A field only the other mode reads fails as `mode_mismatched_field`; up to 100 hits per page (default 25)
|
|
76
|
+
- Hits name their `source` and, for structure hits, the `database`, ranked by `score` across all searched databases; responses report `totalCount` and `nextStart`
|
|
77
|
+
- A structure job still running at the poll budget returns `status: computing` with a `ticketId`; re-call with `ticket_id` to resume it or re-page a finished job. A multichain structure is one query per chain: each response covers `query` (0-based, default 0) out of `queryCount`
|
|
89
78
|
|
|
90
79
|
---
|
|
91
80
|
|
|
92
81
|
### `protein_track_ligands` <sub>tool</sub>
|
|
93
82
|
|
|
94
|
-
- `mode
|
|
95
|
-
-
|
|
96
|
-
- `
|
|
97
|
-
- `mode: binding_site` returns the protein residues lining a ligand's pocket in a structure, with contact distances
|
|
98
|
-
- Binding sites are experimental-only — computed from deposited coordinates; predicted models carry no bound ligands
|
|
83
|
+
- `mode` is `find_ligand` (`query`: a name or formula), `structures_with_ligand` (`comp_id`), or `binding_site` (`pdb_id`, optional `comp_id`); a missing mode input fails as `missing_param`. `limit` is 1–100 (default 25), and `start` pages the last two modes
|
|
84
|
+
- `find_ligand` returns component IDs with formula, weight, SMILES, and InChIKey, ranked by `depositionCount`, with `totalCount` and `candidatesConsidered` showing when the candidate pool was cut short; `structures_with_ligand` lists entries highest resolution first
|
|
85
|
+
- `binding_site` returns pocket residues with contact distances, numbered in both label (`asymId`, `seqId`) and author (`authAsymId`, `authSeqId`) namespaces; it works on experimental structures only
|
|
99
86
|
|
|
100
87
|
---
|
|
101
88
|
|
|
102
89
|
### `protein_compare_structures` <sub>tool</sub>
|
|
103
90
|
|
|
104
|
-
-
|
|
105
|
-
- `
|
|
106
|
-
-
|
|
107
|
-
- Re-call with a matching `{ a, b, uuid }` entry in `resume[]` to poll a computing pair instead of resubmitting; a resumed pair reports `a`/`b` in the order its job was submitted, whatever the current `structures[]` order, and a resume under a different `method` is rejected
|
|
108
|
-
- Returns TM-score, RMSD, and aligned-residue count per pair, plus each structure's `modeledResidues` and 0–100 `coverage`, ordered `[a, b]`; TM-score is normalized by `a`'s length, so the same pair scores differently when reversed
|
|
91
|
+
- 2 structures up to `PROTEIN_MAX_COMPARE_STRUCTURES` (default 10, max 25), each a `pdb_id` with an optional label-namespace `chain`; `method` is `tm-align` (default), `fatcat-rigid`, or `fatcat-flexible`; `reference` is `first` (default) or `all_pairs`; `timeout_s` (5–120) sets the per-pair poll budget
|
|
92
|
+
- Each pair row has a `status` (`complete`, `computing`, `failed`), `tmScore`, `rmsd`, `alignedResidues`, and `[a, b]`-ordered `modeledResidues` and `coverage`; TM-score is normalized by `a`'s length, so reversing a pair changes it
|
|
93
|
+
- A computing pair returns its job `uuid`; re-call with `{ a, b, uuid }` in `resume[]` to poll it instead of resubmitting. A resume under a different `method` or for another pair fails as `resume_method_mismatch` or `resume_job_mismatch`
|
|
109
94
|
|
|
110
95
|
---
|
|
111
96
|
|
|
112
97
|
### `protein_analyze_collection` <sub>tool</sub>
|
|
113
98
|
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
- `
|
|
117
|
-
- Scope with a free-text `query`, `organism`, `method`, or `max_resolution`; `content_type` selects the structure universe
|
|
118
|
-
- `bucket_limit` caps buckets per dimension level, not per response — a cross-tab applies it separately to the parent and each nested child, up to `bucket_limit × (1 + bucket_limit)` buckets; `notice` names every capped position and `bucketsReturned` gives the realized total
|
|
119
|
-
- Every dimension reports `missingValueCount` — matches carrying no value for that attribute (e.g. a `resolution` breakdown excludes NMR entries; computed models have neither `method` nor `resolution`)
|
|
99
|
+
- `group_by` takes one of `method`, `organism`, `polymer_type`, `resolution`, `release_year`, `molecular_weight`, or two distinct ones for a cross-tab; scope with `query`, `organism`, `method`, `max_resolution`, and `content_type` (default `experimental`). `interval` sets a numeric bin width for `resolution` / `molecular_weight` or `"year"` for `release_year`
|
|
100
|
+
- Returns `total` and `bucketsReturned`; buckets carry `label` and `count` (numeric bins add `rangeFrom` / `rangeTo`), and every dimension reports `missingValueCount`
|
|
101
|
+
- `bucket_limit` (1–500, default `PROTEIN_FACET_BUCKET_CAP`) caps each dimension level separately, so a cross-tab can return `bucket_limit × (1 + bucket_limit)` buckets; `truncated` and `notice` name the capped positions
|
|
120
102
|
|
|
121
103
|
---
|
|
122
104
|
|
|
123
105
|
### `protein_get_annotations` <sub>tool</sub>
|
|
124
106
|
|
|
125
|
-
- UniProt
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
- `include` scopes which classes are fetched (`features`, `domains`, `variants`, `all`); `limit` caps each class independently (1–200, default 50), with a truncated class disclosed in `notice`
|
|
129
|
-
- Every response carries an `attribution` block naming the upstream data licenses and citations (see [Upstream data licensing](#upstream-data-licensing))
|
|
107
|
+
- A `uniprot` accession, or a `pdb_id` resolved through its UniProt cross-reference (author `chain` picks one accession); `include` is `features`, `domains`, `variants`, or `all` (default); `limit` caps each class separately (1–200, default 50)
|
|
108
|
+
- Returns UniProt features and natural variants plus InterPro domains with GO terms; a PDB entry mapping to several accessions defaults to the lowest author chain and lists the rest in `ambiguity`
|
|
109
|
+
- Capped classes set `truncated` and are named in `notice`; failures are typed as `missing_identifier`, `invalid_accession`, `no_uniprot_mapping`, or `chain_not_found`
|
|
130
110
|
|
|
131
111
|
---
|
|
132
112
|
|
|
133
113
|
### `pdb://{entry_id}` <sub>resource</sub>
|
|
134
114
|
|
|
135
|
-
-
|
|
136
|
-
-
|
|
115
|
+
- `entry_id` is a PDB entry ID (e.g. `4HHB`); returns `application/json` with title, methods, resolution, organisms, ligands, and `polymerEntities` carrying both `authAsymIds` and `labelAsymIds`
|
|
116
|
+
- Same data as `protein_get_structure` with `source: experimental`
|
|
137
117
|
|
|
138
118
|
---
|
|
139
119
|
|
|
140
120
|
### `af://{uniprot}` <sub>resource</sub>
|
|
141
121
|
|
|
142
|
-
-
|
|
143
|
-
-
|
|
122
|
+
- `uniprot` is a UniProt accession or an AlphaFold DB entry ID (e.g. `AF-P69905-F1`); returns `application/json` with `meanPlddt`, `confidenceBuckets`, `cifUrl` / `pdbUrl` / `bcifUrl`, and `modelVersion`
|
|
123
|
+
- Same data as `protein_get_structure` with `source: predicted`
|
|
144
124
|
|
|
145
125
|
## Features
|
|
146
126
|
|
|
@@ -148,27 +128,28 @@ Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): s
|
|
|
148
128
|
|
|
149
129
|
PDB / AlphaFold-specific:
|
|
150
130
|
|
|
151
|
-
-
|
|
152
|
-
- Keyless across
|
|
153
|
-
-
|
|
154
|
-
-
|
|
131
|
+
- Search, fetch, and comparison treat experimental (PDB) and predicted (AlphaFold DB, ModelArchive, 3D-Beacons providers) structures the same way
|
|
132
|
+
- Keyless across RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro, and Foldseek
|
|
133
|
+
- Collection analytics run on RCSB's facet engine and return bucket counts, not matching entries
|
|
134
|
+
- Foldseek and alignment jobs poll for up to `PROTEIN_ASYNC_POLL_TIMEOUT_MS` (default 30 s), then hand back a resume handle (`ticketId`, per-pair `uuid`) instead of blocking
|
|
135
|
+
- Chain namespaces stay separate: `authAsymIds` feed `protein_get_annotations` `chain`, `labelAsymIds` feed `protein_compare_structures` `chain`
|
|
155
136
|
|
|
156
137
|
Agent-friendly output:
|
|
157
138
|
|
|
158
|
-
- Provenance
|
|
159
|
-
- Graceful partial failure
|
|
160
|
-
-
|
|
139
|
+
- Provenance: every hit names its `source` (`experimental` / `predicted`) and the engine or database behind it, and `protein_get_structure` and `protein_get_annotations` carry an `attribution` block (see [Upstream data licensing](#upstream-data-licensing))
|
|
140
|
+
- Graceful partial failure: `failed[]` rows and per-pair `status` keep one bad ID or pair from failing the request
|
|
141
|
+
- Paging and advisories: paged tools return `totalCount` and `nextStart`, a `start` past the end is flagged in `notice` separately from zero matches, and every advisory joins into that one `notice`
|
|
161
142
|
|
|
162
143
|
## Getting started
|
|
163
144
|
|
|
164
145
|
### Public Hosted Instance
|
|
165
146
|
|
|
166
|
-
A public instance is available at `https://protein.caseyjhand.com/mcp
|
|
147
|
+
A public instance is available at `https://protein.caseyjhand.com/mcp`, no installation required. Point any MCP client at it via Streamable HTTP:
|
|
167
148
|
|
|
168
149
|
```json
|
|
169
150
|
{
|
|
170
151
|
"mcpServers": {
|
|
171
|
-
"protein": {
|
|
152
|
+
"protein-mcp-server": {
|
|
172
153
|
"type": "streamable-http",
|
|
173
154
|
"url": "https://protein.caseyjhand.com/mcp"
|
|
174
155
|
}
|
|
@@ -178,7 +159,7 @@ A public instance is available at `https://protein.caseyjhand.com/mcp` — no in
|
|
|
178
159
|
|
|
179
160
|
### Self-Hosted / Local
|
|
180
161
|
|
|
181
|
-
Add the following to your MCP client configuration file. No API key is
|
|
162
|
+
Add the following to your MCP client configuration file. No API key is needed.
|
|
182
163
|
|
|
183
164
|
```json
|
|
184
165
|
{
|
|
@@ -238,7 +219,7 @@ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
|
|
|
238
219
|
### Prerequisites
|
|
239
220
|
|
|
240
221
|
- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
241
|
-
- No accounts or API keys
|
|
222
|
+
- No accounts or API keys: every upstream is public.
|
|
242
223
|
|
|
243
224
|
### Installation
|
|
244
225
|
|
|
@@ -260,28 +241,32 @@ cd protein-mcp-server
|
|
|
260
241
|
bun install
|
|
261
242
|
```
|
|
262
243
|
|
|
244
|
+
4. **Configure environment (optional):**
|
|
245
|
+
|
|
246
|
+
```sh
|
|
247
|
+
cp .env.example .env
|
|
248
|
+
# every variable has a working default
|
|
249
|
+
```
|
|
250
|
+
|
|
263
251
|
## Configuration
|
|
264
252
|
|
|
265
|
-
|
|
253
|
+
Every variable is optional.
|
|
266
254
|
|
|
267
255
|
| Variable | Description | Default |
|
|
268
256
|
|:---|:---|:---|
|
|
269
|
-
| `PROTEIN_ASYNC_POLL_TIMEOUT_MS` |
|
|
270
|
-
| `PROTEIN_MAX_BATCH_IDS` |
|
|
271
|
-
| `PROTEIN_MAX_COMPARE_STRUCTURES` |
|
|
272
|
-
| `PROTEIN_FACET_BUCKET_CAP` |
|
|
273
|
-
| `PROTEIN_FANOUT_CONCURRENCY` | Max concurrent upstream requests for per-ID
|
|
274
|
-
| `RCSB_SEARCH_BASE_URL` | Base URL for the RCSB Search API v2. | `https://search.rcsb.org` |
|
|
275
|
-
| `ALPHAFOLD_BASE_URL` | Base URL for the AlphaFold Protein Structure Database API. | `https://alphafold.ebi.ac.uk` |
|
|
276
|
-
| `FOLDSEEK_BASE_URL` | Base URL for the Foldseek structural-similarity search service. | `https://search.foldseek.com` |
|
|
257
|
+
| `PROTEIN_ASYNC_POLL_TIMEOUT_MS` | Poll budget for an async alignment or Foldseek job before it returns `computing` (min 1000). | `30000` |
|
|
258
|
+
| `PROTEIN_MAX_BATCH_IDS` | Max IDs per `protein_get_structure` call (1–100). | `25` |
|
|
259
|
+
| `PROTEIN_MAX_COMPARE_STRUCTURES` | Max structures per `protein_compare_structures` call (2–25). | `10` |
|
|
260
|
+
| `PROTEIN_FACET_BUCKET_CAP` | Buckets per dimension for `protein_search_structures` facets, and the `protein_analyze_collection` default (1–500). | `50` |
|
|
261
|
+
| `PROTEIN_FANOUT_CONCURRENCY` | Max concurrent upstream requests for per-ID and per-pair fan-out (1–16). | `5` |
|
|
277
262
|
| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |
|
|
278
|
-
| `MCP_HTTP_PORT` |
|
|
279
|
-
| `MCP_SESSION_MODE` | HTTP session mode: `stateless`, `stateful`, or `auto`.
|
|
280
|
-
| `MCP_AUTH_MODE` |
|
|
263
|
+
| `MCP_HTTP_PORT` | HTTP server port. | `3010` |
|
|
264
|
+
| `MCP_SESSION_MODE` | HTTP session mode: `stateless`, `stateful`, or `auto`. Overrides the `stateless` mode the server declares in code. | `stateless` |
|
|
265
|
+
| `MCP_AUTH_MODE` | Authentication: `none`, `jwt`, or `oauth`. | `none` |
|
|
281
266
|
| `MCP_LOG_LEVEL` | Log level (RFC 5424). | `info` |
|
|
282
|
-
| `OTEL_ENABLED` | Enable [OpenTelemetry
|
|
267
|
+
| `OTEL_ENABLED` | Enable [OpenTelemetry](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry). | `false` |
|
|
283
268
|
|
|
284
|
-
See [`.env.example`](./.env.example) for the full list of
|
|
269
|
+
Each upstream's base URL can also be pointed at a mirror: `RCSB_SEARCH_BASE_URL`, `RCSB_DATA_BASE_URL`, `RCSB_FILES_BASE_URL`, `RCSB_MODELS_BASE_URL`, `RCSB_ALIGNMENT_BASE_URL`, `BEACONS_BASE_URL`, `ALPHAFOLD_BASE_URL`, `MODELARCHIVE_BASE_URL`, `FOLDSEEK_BASE_URL`, `UNIPROT_BASE_URL`, `INTERPRO_BASE_URL`. See [`.env.example`](./.env.example) for their defaults and the full list of optional overrides.
|
|
285
270
|
|
|
286
271
|
## Running the server
|
|
287
272
|
|
|
@@ -311,20 +296,20 @@ See [`.env.example`](./.env.example) for the full list of provider base-URL over
|
|
|
311
296
|
|
|
312
297
|
```sh
|
|
313
298
|
docker build -t protein-mcp-server .
|
|
314
|
-
docker run --rm -
|
|
299
|
+
docker run --rm -p 3010:3010 protein-mcp-server
|
|
315
300
|
```
|
|
316
301
|
|
|
317
|
-
The Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/protein-mcp-server`. OpenTelemetry peer dependencies are installed by default
|
|
302
|
+
The Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/protein-mcp-server`. OpenTelemetry peer dependencies are installed by default; build with `--build-arg OTEL_ENABLED=false` to omit them.
|
|
318
303
|
|
|
319
304
|
## Project structure
|
|
320
305
|
|
|
321
306
|
| Directory | Purpose |
|
|
322
307
|
|:---|:---|
|
|
323
|
-
| `src/index.ts` | `createApp()` entry point
|
|
308
|
+
| `src/index.ts` | `createApp()` entry point: registers tools and resources, inits the provider services. |
|
|
324
309
|
| `src/config` | Server-specific environment variable parsing and validation with Zod. |
|
|
325
|
-
| `src/mcp-server/tools` | Tool definitions (`*.tool.ts`). |
|
|
310
|
+
| `src/mcp-server/tools` | Tool definitions (`*.tool.ts`) and shared schemas (`_schemas.ts`). |
|
|
326
311
|
| `src/mcp-server/resources` | Resource definitions (`*.resource.ts`). |
|
|
327
|
-
| `src/services` |
|
|
312
|
+
| `src/services` | Upstream clients: `rcsb/` (search, data, facets), `alphafold/`, `beacons/` (3D-Beacons), `uniprot/` (UniProt, InterPro, GO), `alignment/` (RCSB Structural Comparison), `foldseek/`, and `shared/` HTTP, concurrency, identifier, and attribution helpers. |
|
|
328
313
|
| `tests/` | Unit and integration tests mirroring `src/`. |
|
|
329
314
|
|
|
330
315
|
## Development guide
|
|
@@ -333,12 +318,12 @@ See [`CLAUDE.md`/`AGENTS.md`](./CLAUDE.md) for development guidelines and archit
|
|
|
333
318
|
|
|
334
319
|
- Handlers throw, framework catches — no `try/catch` in tool logic
|
|
335
320
|
- Use `ctx.log` for request-scoped logging, `ctx.state` for tenant-scoped storage
|
|
336
|
-
-
|
|
321
|
+
- Export new definitions from the barrels in `src/mcp-server/*/definitions/index.ts` and register them in the `createApp()` arrays in `src/index.ts`
|
|
337
322
|
- Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields
|
|
338
323
|
|
|
339
324
|
## Upstream data licensing
|
|
340
325
|
|
|
341
|
-
Structure and annotation data comes from public
|
|
326
|
+
Structure and annotation data comes from public databases, each under its own license. `protein_get_structure` and `protein_get_annotations` return an `attribution` block with the license, citation, and homepage of every source that contributed to that response. CC BY and CC BY-SA sources require attribution on redistribution; CC0 sources ask only for citation.
|
|
342
327
|
|
|
343
328
|
| Source | Contributes to | License |
|
|
344
329
|
|:---|:---|:---|
|
|
@@ -351,7 +336,7 @@ Structure and annotation data comes from public upstream databases, each under i
|
|
|
351
336
|
| [InterPro](https://www.ebi.ac.uk/interpro/) | `protein_get_annotations` — domain/family data | CC0 1.0 Universal |
|
|
352
337
|
| [GO](https://geneontology.org/) | `protein_get_annotations` — GO terms | CC BY 4.0 |
|
|
353
338
|
|
|
354
|
-
`best_available`
|
|
339
|
+
`best_available` models arrive through [3D-Beacons](https://3d-beacons.org/), so the block credits the provider that actually supplied the model; a provider with no curated entry gets a `See provider terms` fallback instead of a guessed license. InterPro and GO are credited separately, each only when it contributes. This table covers upstream data; the server's own code is licensed separately (see [License](#license)).
|
|
355
340
|
|
|
356
341
|
## Contributing
|
|
357
342
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "protein_track_ligands find_ligand reports candidate-pool totals, binding_site adds author residue numbering and pages ligand instances."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.8.5 — 2026-09-22
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`protein_track_ligands` `binding_site`** — pocket residues now carry author numbering (`authAsymId`/`authSeqId`) beside the mmCIF label numbering (`asymId`/`seqId`), and the ligand instance adds its author residue number (`ligandAuthSeqId`). The author chain comes from the entry's per-instance label/author chain pairs; field descriptions and the rendered text name each namespace, including `ligandAsymId` as an author chain ID (#69).
|
|
12
|
+
|
|
13
|
+
## Fixed
|
|
14
|
+
|
|
15
|
+
- **`protein_track_ligands` `find_ligand`** — responses now report `totalCount` (the upstream match total) and `candidatesConsidered` (the components pulled into the deposition-frequency ranking), with a `notice` to narrow the query when a broad name's matches exceed that pool; previously the total was discarded and the truncation went undisclosed (#67).
|
|
16
|
+
- **`protein_track_ligands` `binding_site`** — ligand instances now page with `start`/`limit`, reporting `totalCount`/`start`/`nextStart`, naming the next `start` in the notice, and giving a past-end `start` its own notice; previously `start` was ignored in this mode and the notice pointed at a `limit` above its 100 cap, so instances past the first 100 were unreachable (#75).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Framework ^0.13.6 → ^0.13.13: tool errors carry a request ID, declared recovery hints are filled in by the framework, and error data no longer carries stacks or request context; Docker builds install in a build-platform deps stage, and the registry's npm entries launch through npx with the HTTP entry pinned to HTTP."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.8.6 — 2026-10-07
|
|
8
|
+
|
|
9
|
+
## Changed
|
|
10
|
+
|
|
11
|
+
- **Framework `@cyanheads/mcp-ts-core` ^0.13.6 → ^0.13.13** — tool error results carry `data.requestId` and end with `request <id>` (0.13.10); declared recovery hints are filled by the framework, hint text unchanged (0.13.10); a JSON-stringified object or an integer sent for a string field is repaired before validation (0.13.9); stack traces, request context, and `rootCause` no longer reach error `data` (0.13.7, 0.13.8, 0.13.13); MCP SDK `@modelcontextprotocol/server` ^2.0.0 → ^2.2.0 (0.13.9, 0.13.11).
|
|
12
|
+
- **Tool error recovery forwards** — the `ctx.recoveryFor(...)` arguments are gone from every `ctx.fail` call in the seven tool definitions, because the framework now attaches the declared hint itself. The recovery hints shipped before 0.8.6 too; what callers see is unchanged except for the added request ID.
|
|
13
|
+
- **Dockerfile** (0.13.10, 0.13.11) — production dependencies install in a `deps` stage on the build platform, cross-installing for the target architecture, so multi-arch builds no longer run Bun under QEMU. Musl-only packages are pruned from the glibc image, the production stage no longer carries `bunfig.toml` or an install step, and the unread `ENV MCP_FORCE_CONSOLE_LOGGING` is gone. Bun base images 1.4.0 → 1.4.2.
|
|
14
|
+
- **`server.json`** (0.13.11) — npm entries drop the `run start:*` arguments a registry client would hand the bin and set `runtimeHint: "npx"`; the `streamable-http` entry sets `MCP_TRANSPORT_TYPE` `value: "http"`, so a registry client launching it gets the HTTP transport.
|
|
15
|
+
- **Packaging and docs** — `.env.example` documents the newer framework variables; `.env*` ignore rules, `!dist/*.mcpb` in `files`, and `/.cache/` and `/logs/` in `.mcpbignore` follow the 0.13.11 scaffold; the README tool and resource sections are condensed.
|
|
16
|
+
- **Framework skills and scripts** resynced; `.github/workflows/codeql.yml` updated to the template's per-language jobs.
|
|
17
|
+
|
|
18
|
+
## Dependencies
|
|
19
|
+
|
|
20
|
+
- `@cyanheads/mcp-ts-core` ^0.13.6 → ^0.13.13
|
|
21
|
+
- `@biomejs/biome` 2.5.14 → 2.5.15, `@socketsecurity/bun-security-scanner` ^1.1.2 → ^1.1.3, `@types/node` 26.6.2 → 26.6.4, `ignore` ^7.0.9 → ^7.0.12, `tsc-alias` ^1.9.5 → ^1.9.7, `vitest` ^5.0.1 → ^5.0.3 (all dev)
|
|
22
|
+
- Bun 1.4.0 → 1.4.2 (`packageManager`, Docker base images)
|
|
@@ -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;AAuCjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4L5B,CAAC"}
|
|
@@ -124,11 +124,11 @@ export const analyzeCollection = tool('protein_analyze_collection', {
|
|
|
124
124
|
// an undocumented shape no caller can read, so reject before the call.
|
|
125
125
|
const duplicate = input.group_by.find((d, i, all) => all.indexOf(d) !== i);
|
|
126
126
|
if (duplicate)
|
|
127
|
-
throw ctx.fail('duplicate_dimension', `group_by lists "${duplicate}" twice; a cross-tab needs two distinct dimensions
|
|
127
|
+
throw ctx.fail('duplicate_dimension', `group_by lists "${duplicate}" twice; a cross-tab needs two distinct dimensions.`);
|
|
128
128
|
// An override no requested position can consume would reach RCSB as nothing at
|
|
129
129
|
// all — the call would succeed with default bins, looking like a filtered result.
|
|
130
130
|
if (input.interval !== undefined && !intervalTarget(input.interval, primary, secondary))
|
|
131
|
-
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
|
|
131
|
+
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.`);
|
|
132
132
|
const spec = buildFacetSpec(primary, input.interval, secondary);
|
|
133
133
|
const { total, facets } = await rcsb.analyzeFacets({
|
|
134
134
|
...(input.query ? { text: input.query } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-collection.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analyze-collection.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/analyze-collection.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-structures.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/compare-structures.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6HjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"compare-structures.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/compare-structures.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6HjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsL5B,CAAC"}
|
|
@@ -144,7 +144,7 @@ export const compareStructures = tool('protein_compare_structures', {
|
|
|
144
144
|
}
|
|
145
145
|
if (unique.length < 2) {
|
|
146
146
|
const [only] = unique;
|
|
147
|
-
throw ctx.fail('no_distinct_pair', `Every entry in structures[] denotes ${only ? label(only) : 'one structure'}; there is no second structure to align it against
|
|
147
|
+
throw ctx.fail('no_distinct_pair', `Every entry in structures[] denotes ${only ? label(only) : 'one structure'}; there is no second structure to align it against.`);
|
|
148
148
|
}
|
|
149
149
|
const structures = unique.slice(0, cfg.maxCompareStructures);
|
|
150
150
|
if (unique.length > cfg.maxCompareStructures) {
|
|
@@ -162,7 +162,7 @@ export const compareStructures = tool('protein_compare_structures', {
|
|
|
162
162
|
for (const r of input.resume) {
|
|
163
163
|
const key = pairKey(r.a, r.b);
|
|
164
164
|
if (!validKeys.has(key)) {
|
|
165
|
-
throw ctx.fail('resume_pair_unmatched', `Resume entry ${r.a} ↔ ${r.b} matches no pair in the current structures/reference set
|
|
165
|
+
throw ctx.fail('resume_pair_unmatched', `Resume entry ${r.a} ↔ ${r.b} matches no pair in the current structures/reference set.`);
|
|
166
166
|
}
|
|
167
167
|
resumeByPair.set(key, r.uuid);
|
|
168
168
|
}
|
|
@@ -209,9 +209,7 @@ export const compareStructures = tool('protein_compare_structures', {
|
|
|
209
209
|
return { ...base, status: 'failed', error: outcome.error };
|
|
210
210
|
});
|
|
211
211
|
if (rejection) {
|
|
212
|
-
throw ctx.fail(rejection.reason, rejection.message
|
|
213
|
-
...ctx.recoveryFor(rejection.reason),
|
|
214
|
-
});
|
|
212
|
+
throw ctx.fail(rejection.reason, rejection.message);
|
|
215
213
|
}
|
|
216
214
|
const computing = rows.filter((r) => r.status === 'computing').length;
|
|
217
215
|
const failed = rows.filter((r) => r.status === 'failed').length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-structures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/compare-structures.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare-structures.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/compare-structures.tool.ts"],"names":[],"mappings":"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"}
|