Federated protein structure & function across experimental (PDB) and predicted (AlphaFold) models.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Federated protein structure & annotation across experimental (PDB) and predicted (AlphaFold) models via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://protein.caseyjhand.com/mcp
Seven tools spanning the structure-research arc β discover, fetch, find homologs, track ligands, compare, profile the corpus, and annotate β over experimental (PDB) and predicted (AlphaFold) structures from one surface:
| Tool | Description |
|---|---|
protein_search_structures | Search experimental and predicted structures by free text, sequence, or organism/method/resolution filters, with optional facet breakdowns. |
protein_get_structure | Fetch metadata and coordinate-file URLs by ID β experimental (PDB), predicted (AlphaFold), or best-available β with batch partial success and optional coordinate inlining. |
protein_find_similar | Find sequence homologs (RCSB mmseqs2) or fold homologs (Foldseek) from a sequence, PDB ID, or UniProt accession. |
protein_track_ligands | Resolve ligand names/formulas to component IDs, find structures containing a ligand, or map binding-site residues. |
protein_compare_structures | Structurally align multiple structures (TM-align / jFATCAT) to a reference or as a full pairwise matrix. |
protein_analyze_collection | Profile the PDB into distributions and trends with server-side facets β counts, histograms, timelines, and cross-tabs. |
protein_get_annotations | Fetch UniProt features and natural variants plus InterPro domain/family memberships with GO terms. |
protein_search_structuresFederated search across experimental (PDB) and predicted (computed-model) structures via RCSB Search v2.
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 entriessource; 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 accessionstart and limit page through ranked results; nextStart is returned while another page remainsfacets 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 onceprotein_get_structureprotein_get_structureFetch structures with metadata and coordinate-file URLs, resolving across providers by source.
source: experimental takes PDB entry IDs, batched in one RCSB GraphQL call; it also resolves the computed-model IDs search returns (AF_* / MA_*), which come back as source: predicted credited to their modelling providersource: predicted takes UniProt accessions and returns the AlphaFold model with pLDDT/PAE confidencesource: best_available takes UniProt accessions and returns the top federated model (experimental if one exists, else the best prediction)failed[], not a batch-level errorinclude_coords inlines coordinate content; when a batch overflows the response budget it returns a per-structure size outline, so you can re-call with sections: [ids] for specific structuresattribution block naming the upstream data licenses and citations (see Upstream data licensing)protein_find_similarFind structurally or evolutionarily related proteins, by sequence or by fold.
by: sequence runs a synchronous RCSB mmseqs2 search; by: structure runs an asynchronous Foldseek search against experimental and predicted databasesstart with limit and return nextStart while another page remainspdb100 + afdb50; override via databases (e.g. afdb-swissprot, BFVD)status: computing with a ticketId β re-call with ticket_id set to that value to poll the same job instead of resubmittingprotein_track_ligandsLigand discovery and binding-site analysis across the PDB.
mode: find_ligand resolves a name or formula to chemical component IDs with formula, weight, SMILES, and InChIKeymode: structures_with_ligand returns PDB entries containing a ligand by exact component IDmode: structures_with_ligand accepts start with limit and returns nextStart while another page remainsmode: binding_site returns the protein residues lining a ligand's pocket in a structure, with contact distancesPaged RCSB results preserve the upstream order within each response. Resolution ties and changes in the live corpus mean traversal is best-effort across calls, not a stable export snapshot.
protein_compare_structuresStructural alignment of multiple structures (up to the configured PROTEIN_MAX_COMPARE_STRUCTURES cap) via the RCSB Structural Comparison service.
tm-align, fatcat-rigid, fatcat-flexiblereference: first aligns every structure to the first; reference: all_pairs computes the full pairwise matrixchain restricts the alignment to a single chainstructures[] is compared once β the repeat would only add a self-alignment and a mirrored pair, which the resume mechanism cannot tell apart from the originalstatus: computing with its job uuid, and a failed pair degrades its row without sinking the others{ a, b, uuid } entry in resume[] (copied from a prior response's pairs[]) to poll a computing pair's job instead of resubmittingmodeledResidues and coverage β each a [a, b] tuple, with coverage a 0β100 percentage of that structure's own modeled-residue countprotein_analyze_collectionProfile the PDB into distributions and trends over an optional scoping query β backed by RCSB's server-side facet engine (one call, compact buckets, no row pull).
method, organism, polymer_type, resolution, release_year, or molecular_weightgroup_by dimension for a breakdown, or two distinct dimensions for a cross-tab (the first nests the second); a repeated dimension is rejectedinterval sets the bin width for value histograms or the period for date histograms (year / month / quarter)query, organism, method, or max_resolution; content_type selects the structure universebucket_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 totalmissingValueCount β 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)No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/protein-mcp-server)<a href="https://allmcps.com/mcp/protein-mcp-server"><img src="https://allmcps.com/api/badge/protein-mcp-server?style=directory" alt="Protein MCP Server on AllMCPs" /></a>