protein-mcp-server
Server Details
Federated protein structure & annotation across experimental (PDB) and predicted (AlphaFold) models.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/protein-mcp-server
- GitHub Stars
- 6
- Server Listing
- protein-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool has a distinct primary purpose (search, fetch, compare, similarity search, annotations, ligands, aggregate stats), and the descriptions explicitly cross-reference each other to clarify boundaries (e.g., sequence search in protein_search_structures vs. protein_find_similar). The only mild overlap is between protein_search_structures' optional facets and protein_analyze_collection's aggregation, but the descriptions distinguish them well.
Every tool follows a consistent protein_<verb>_<noun> snake_case pattern (analyze_collection, compare_structures, find_similar, get_annotations, get_structure, search_structures, track_ligands). No naming inconsistencies or mixed conventions.
Seven tools is well-scoped for a structural-biology server, covering the natural workflow stages (search, fetch, compare, annotate, ligand analysis, aggregate) without redundancy. Each tool clearly earns its place.
The surface covers search, retrieval with coordinates, structural alignment, similarity search, functional annotation, ligand/binding-site analysis, and collection-level statistics—a broad lifecycle. Minor gaps exist, such as no explicit standalone sequence/FASTA retrieval or dedicated export, but core workflows are fully supported.
Available Tools
7 toolsprotein_analyze_collectionprotein-mcp-server: analyze collectionARead-onlyInspect
Profile the PDB into distributions and trends over an optional scoping query: counts by method, organism, or polymer composition; resolution and molecular-weight histograms; release-year timelines; and multidimensional cross-tabs (e.g. method × release_year). Aggregation runs at RCSB, so the response carries compact counts per bucket rather than the matching entries. Pass one group_by dimension for a single breakdown, or two distinct dimensions for a cross-tab (the first nests the second). bucket_limit caps each dimension level separately rather than the response, so a cross-tab returns up to that many nested buckets under each of its capped parent buckets; bucketsReturned reports the realized total.
Inputs: group_by (required), query, method, interval, +4 more. Returns: error, scope, total, facets, +3 more
protein_compare_structuresprotein-mcp-server: compare structuresARead-onlyInspect
Structurally align multiple structures (up to the configured batch cap; structures past it are returned in ignored) via the RCSB Structural Comparison service (TM-align / jFATCAT). reference:"first" aligns every structure to the first; reference:"all_pairs" computes the full pairwise matrix. Each pair is an independent async alignment job with per-pair partial success — a pair still computing when its poll budget or the call's 50 s budget runs out returns status "computing" with its job UUID, and a failed pair degrades its row without sinking the others, keeping its job UUID when the job was submitted. Re-call with a matching entry in resume[] to poll a pair's job UUID instead of resubmitting; a resumed pair reports a and b in the order its job was submitted, and a resume under a different method is rejected. Returns TM-score, RMSD, and aligned-residue count per pair, plus each structure's modeled-residue count and alignment coverage. TM-score is length-normalized and can shift sharply between structures that differ only by a terminal residue or two — the greedy superposition can settle into a worse local optimum — so read tmScore alongside rmsd, alignedResidues, modeledResidues and coverage, the columns that make such cases diagnosable.
Inputs: structures (required), method, resume, reference, +1 more. Returns: error, pairs, method, notice, +4 more
protein_find_similarprotein-mcp-server: find similarARead-onlyInspect
Find structurally or evolutionarily related proteins. by:"sequence" runs an RCSB mmseqs2 sequence-similarity search (synchronous; experimental PDB entries only — protein_search_structures with a sequence also reaches computed models) over a sequence — supplied directly, taken from one protein entity of a PDB entry (chain picks it; by default the lowest-numbered protein entity of at least 10 residues; queryEntityId names it), or pulled from a UniProt accession (isoforms included) or entry name (HBA_HUMAN); each hit carries its identity, E-value, bit score, and aligned range. by:"structure" runs a Foldseek fold-similarity search (asynchronous) against experimental and predicted databases, uploading the PDB entry's mmCIF file or the accession's AlphaFold DB model, up to 16,000,000 characters; if the job is still computing when the poll budget elapses, or the call's 50 s budget runs out after Foldseek accepted the job, the response reports status "computing" with a ticket — re-call with ticket_id set to that value to resume the same job instead of resubmitting, and a complete response carries the same ticket so a finished job can be re-paged with a different start. Foldseek searches each chain of a multichain structure as its own query: a response covers one query (query, default 0), reports queryCount, and ranks that query's hits by score across all searched databases. Each mode reads only its own controls: sequence, chain, max_evalue and min_identity belong to by:"sequence"; ticket_id, databases and query belong to by:"structure"; pdb_id, uniprot, start and limit are shared. A field the selected mode cannot consume is rejected rather than silently ignored. A UniProt accession merged into another entry answers for its successor with a notice; a demerged or deleted one fails with its replacements. Output names the engine and database each hit came from; a structure hit also carries its Foldseek target name, and an id only where that name maps to a PDB entry or UniProt accession that protein_get_structure resolves.
Inputs: by (required), chain, limit, query, +8 more. Returns: by, hits, error, query, +10 more
protein_get_annotationsprotein-mcp-server: get annotationsARead-onlyInspect
Sequence and functional annotation for a protein: UniProt positional features (domains, binding and active sites, PTMs including cross-links and lipidation, topology, DNA binding, processing products such as chains and signal peptides, mutagenesis), natural variants, and InterPro domain/family memberships (Pfam, PROSITE, …) with GO terms. Provide a canonical UniProt accession directly, or a PDB ID — it is resolved to its UniProt accession via the structure's sequence cross-reference. A multi-chain PDB entry can map to several accessions; the default pick is deterministic (lowest author chain ID) and the alternatives are listed in "ambiguity" — pass "chain" to select a specific one. An accession UniProt merged into another entry answers for that successor with a notice; a demerged or deleted one fails with its replacement accessions. Use "include" to scope which annotation classes are fetched. Every response carries an "attribution" block with the upstream data licenses and citations.
Inputs: chain, limit, pdb_id, include, +4 more. Returns: error, notice, domains, features, +14 more
protein_get_structureprotein-mcp-server: get structureARead-onlyInspect
Fetch 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.
Inputs: ids (required), source, sections, all_chains, +2 more. Returns: error, failed, notice, ignored, +6 more
protein_search_structuresprotein-mcp-server: search structuresARead-onlyInspect
Search experimental (PDB) and predicted (computed-model) protein structures by free text, protein sequence (triggers an mmseqs2 similarity search), and/or organism, method, resolution, and bound-ligand filters. Returns ranked hits; the experimental page is enriched with title, method, resolution, and source organisms (for a sequence hit, those of the matched entity), and every sequence hit carries its identity, E-value, bit score, and aligned range against the query. Chain hit IDs into protein_get_structure. Optionally returns a facet breakdown (counts by method / organism / release year / …) alongside the hits in the same response. Facets count the filtered result set, so an active organism or method filter also constrains its own facet: the facet lists only the values found in the matching entries (other organisms in the same complexes, other methods deposited with the same entries), never the alternatives the filter excluded. Numeric histogram buckets (resolution, molecular weight) carry explicit rangeFrom/rangeTo bounds so a boundary label is unambiguous.
Inputs: limit, query, start, facets, +8 more. Returns: hits, error, start, facets, +5 more
protein_track_ligandsprotein-mcp-server: track ligandsARead-onlyInspect
Ligand discovery and binding-site analysis across the PDB. mode "find_ligand" resolves a name or formula to chemical component IDs with metadata (formula, weight, SMILES), ranked by deposition frequency — most-deposited component first, so the top hit is the most common match for the name, not necessarily an exact name-string match. The ranking runs in blocks of max(limit, 25) candidates in RCSB's name-match order: start pages through the ranked blocks (keep limit fixed while paging), and totalCount and candidatesConsidered report how many components matched and how many the page ranked. mode "structures_with_ligand" returns PDB entries holding a bound copy of a ligand (by exact component ID — get the ID from find_ligand first), highest-resolution first, each with its resolution in Å, title, method, and the polymer entities whose chains carry the ligand. This mode and find_ligand's depositionCount count bound copies only: a component present only as a residue inside a polymer chain (e.g. MSE in a selenomethionine protein) or a sugar inside a branched glycan is not counted. mode "binding_site" returns the polymer residues lining a ligand's pocket in a given structure — amino acids, or nucleotides where the ligand binds DNA or RNA — with contact distances, each numbered in both the mmCIF label namespace (asymId, seqId) and the author namespace (authAsymId, authSeqId) used by deposited coordinates and most literature. Binding sites are experimental-only (computed from deposited coordinates; predicted models carry no bound ligands) and cover non-polymer ligands only: a peptide-like ligand deposited as a polymer chain (a BIRD molecule such as cyclosporin A in 1CWA) has none, and a miss names the components and polymer-chain ligands the entry does hold.
Inputs: mode (required), limit, query, start, +2 more. Returns: mode, error, start, notice, +7 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
UniProt protein data: find proteins, map genes to proteins, function and disease links
Protein research over UniProtKB: search by function, fetch curated records, map IDs, proteomes.
AlphaFold DB MCP — predicted protein structures.
MCP gateway federating 22 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that provides access to the AlphaFold Protein Structure Database through a rich set of tools and resources for protein structure prediction analysis.1937MIT
- AlicenseNot gradedqualityCmaintenanceUnified MCP server providing AI-agent-ready access to AlphaFold, PubMed, ChEMBL, Ensembl, and 37+ scientific databases.MIT
- FlicenseNot gradedqualityCmaintenanceProvides access to the AlphaFold Protein Structure Database with tools for structure retrieval, confidence analysis, batch processing, and visualization.-
- AlicenseNot gradedqualityBmaintenanceProvides access to AlphaFold predicted protein 3D structures from EBI, enabling retrieval of prediction metadata, summaries, annotations, and UniProt data.101 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.