protein-mcp-server: get structure
protein_get_structureFetch structures with metadata and coordinate-file URLs. source "experimental" takes PDB entry IDs, and also resolves the computed-model IDs protein_search_structures returns (AF_*/MA_*), which come back marked source "predicted" with their modelling provider; "predicted" takes UniProt accessions, isoform accessions (P04637-2), or AlphaFold DB entry IDs (AF-P04637-2-F1) (AlphaFold, with pLDDT/PAE confidence); "best_available" takes the same identifiers, an entry ID reduced to its accession, and returns the top federated model — the PDB entry with the widest UniProt coverage, ties going to the finest resolution (coverage measures the mapped span, so the pick can be an engineered mutant over the wild-type entry), else the model with the highest confidence on the lDDT scale (pLDDT/100 or QMEANDisCo), unscored models last, which can include an experimental model outside the PDB such as a SASBDB fit; best_available records carry coverage and the UniProt span. Under predicted and best_available, a UniProt accession merged into another entry resolves to its successor's model with a notice naming the merge, and a demerged or deleted accession lands in failed[] with its replacements. Records fetched under source "experimental", computed models included, also carry polymer entities with both chain namespaces (labelAsymIds for protein_compare_structures, authAsymIds for protein_get_annotations; each lists an entity's first 100 chains beside its chainCount, or every chain with all_chains), bound ligands, molecular weight, and release date. Resolves up to the configured batch cap per call with per-ID partial success: IDs are trimmed and repeats looked up once, missed IDs are listed in failed[] with their reasons, and IDs beyond the cap are listed in ignored, never looked up. Upstream lookups share one time budget per call; under predicted and best_available, an ID not finished within it, or whose upstream lookup failed, lands in failed[] with a reason to re-call it. Set include_coords to inline coordinate text, held to 24000 characters per response on both surfaces: a lone selected file arrives in 24000-character windows, each giving coordinatesNextOffset to pass back as coords_offset; several selected files inline whole when they total 24000 characters or fewer, and otherwise overflow lists each file's length — re-call with sections naming one structure to page through its file. coordinateUrls always link the complete files.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"ids": "<ids>"
},
"name": "protein_get_structure"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | PDB entry IDs or computed-model IDs such as AF_AFP69905F1 (source experimental); UniProt accessions, isoform accessions such as P04637-2, or AlphaFold DB entry IDs such as AF-P04637-2-F1 (predicted / best_available). Trimmed, and a repeat (case-insensitive) is looked up once. | |
| source | No | Where to fetch: experimental (PDB), predicted (AlphaFold), or best_available (federated pick). | experimental |
| sections | No | Structure IDs to inline coordinates for, in place of include_coords — from an overflow outline, or one ID to page through its file with coords_offset. Each must match the id of a structure this call resolves. | |
| all_chains | No | List every chain ID of each polymer entity. Off by default: authAsymIds and labelAsymIds hold an entity's first 100 chains, and chainCount its full count. Applies to source experimental; the other sources return no polymer entities. | |
| coords_offset | No | Character offset of the window to return when exactly one structure is selected (sections naming one ID, or include_coords on a one-ID call): the window is characters [coords_offset, coords_offset + 24000). Pass the coordinatesNextOffset a previous window returned. | |
| include_coords | No | Inline coordinate text for every resolved structure — mmCIF, or PDB format when no mmCIF URL is available; coordinateFormat names which. A lone file arrives in 24000-character windows. Off by default — URLs are always returned. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | Present when the call failed. Absent on success. | |
| failed | No | IDs that could not be resolved (partial success). | |
| notice | No | Every applicable advisory joined into one string: repeated IDs counted once, batch cap, partial failures, a UniProt merge that resolved an accession to its successor, an unavailable PDB check behind a best_available pick, a computed model whose provider coordinate lookup failed (only its BinaryCIF URL listed), chain-ID lists capped at 100 per polymer entity, the re-call for the next coordinate window, a coords_offset past the end of the file, a sections entry that matched no structure, coordinate-budget overflow, and failed coordinate inlining. | |
| ignored | No | IDs past the batch cap, never looked up — trimmed, repeats dropped, in input order. Pass them as ids in a follow-up call with the same source. Absent when the cap dropped nothing. | |
| overflow | No | Present only when two or more selected coordinate files together exceed 24000 characters, the budget for one response; their coordinates are then withheld from both surfaces. | |
| resolved | No | Number of processed IDs that resolved to a structure. | |
| processed | No | Number of distinct IDs looked up: a repeated ID counts once, and IDs past the batch cap are listed in ignored instead. | |
| requested | No | Number of IDs in the original request, repeats included, before de-duplication and the batch cap. | |
| structures | No | Resolved structures (metadata always present). | |
| attribution | No | Upstream data-source licenses and citations for every source present in structures[] — RCSB PDB for PDB entries, the providing database (AlphaFold DB, ModelArchive, SWISS-MODEL, SASBDB, …) for any other model. Always present — the attribution obligation travels with the data. |