protein-mcp-server: find similar
protein_find_similarFind 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.
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": {
"by": "<by>"
},
"name": "protein_find_similar"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Similarity axis: sequence (mmseqs2) or structure (Foldseek). | |
| chain | No | Author chain ID (auth_asym_id, case-sensitive) of pdb_id selecting the protein entity whose sequence by:"sequence" searches, e.g. "B" for the beta chain of 4HHB. Requires pdb_id. Default: the lowest-numbered protein entity of at least 10 residues; DNA and RNA chains never qualify. | |
| limit | No | Maximum hits to return (1–100). | |
| query | No | Zero-based Foldseek query index (by:structure). Default 0. Foldseek splits a multichain structure into one query per chain, in file order; queryCount in the response says how many the job holds. Pass the same value with ticket_id to resume or re-page that query. | |
| start | No | Zero-based result offset. Pages a by:sequence search, and a completed by:structure job when re-called with its ticket_id. | |
| pdb_id | No | PDB entry ID to derive the query from. by:"sequence" searches one of its protein entities (see chain); by:"structure" uploads its mmCIF file, up to 16,000,000 characters. | |
| uniprot | No | UniProt identifier to derive the query from: a canonical accession (e.g. P69905), an isoform accession (e.g. P04637-2), or a UniProtKB entry name (e.g. HBA_HUMAN), which resolves to its entry’s accession. by:"sequence" searches its UniProt sequence, by:"structure" its AlphaFold DB model. A merged accession answers for its successor, with a notice. | |
| sequence | No | Protein sequence for by:sequence: at least 10 residues in A–I or K–Z (J excluded; B/O/U/X/Z accepted). Whitespace is removed and ASCII lowercase normalized. | |
| databases | No | Foldseek target databases (by:structure), by exact name. Default pdb100 + afdb50. pdb100: experimental PDB entries; afdb50, afdb-swissprot, afdb-proteome: AlphaFold DB models; cath50: CATH domains of PDB chains and AlphaFold models; bfvd_v3: predicted viral proteins; mgnify_esm30, gmgcl_id: predicted metagenomic proteins; bfmd: predicted complexes. | |
| ticket_id | No | Foldseek ticket ID from a prior by:structure response whose status was "computing". When set, polls that existing job instead of submitting a new search (by:structure only) — pdb_id/uniprot/databases are ignored. | |
| max_evalue | No | Maximum E-value (by:sequence). Default 1. | |
| min_identity | No | Minimum sequence identity 0–1 (by:sequence). Default 0. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Echoed similarity axis. | |
| hits | No | Similar proteins, best first. Structure hits are ranked by score across all searched databases (hits without a score last, ties by database then target). | |
| error | No | Present when the call failed. Absent on success. | |
| query | No | Zero-based Foldseek query index the hits belong to (by:structure). | |
| start | No | Zero-based offset of the returned result page. | |
| engine | No | The engine that answered (e.g. "RCSB mmseqs2", "Foldseek"). | |
| notice | No | Advisory note: a structure job still computing, or one the call’s time budget cut off after submitting (with how to resume it), no matches, a start past the end of the results, a sequence search at RCSB’s 2,000-hit ceiling, other queries in a multichain structure job, the default protein entity a pdb_id sequence query searched alongside the entry’s other protein entities, or a merged UniProt accession answered for its successor. | |
| status | No | complete with hits, or computing (async — re-call with ticket_id to resume). | |
| ticketId | No | Async job ticket ID (by:structure). Present while status is computing, and also on a complete response — re-call with ticket_id plus a different start/limit to page the same finished job instead of resubmitting. | |
| nextStart | No | Offset for the next result page; absent on the final or past-end page. | |
| queryCount | No | Number of queries the Foldseek job holds, one per chain of the submitted structure (by:structure, complete). Valid query values run from 0 to queryCount - 1. | |
| totalCount | No | Total upstream matches before pagination. | |
| queryLength | No | Length in residues of the query sequence that queryStart and queryEnd index into on every hit (complete responses whose hits carry aligned ranges; for by:structure, the chain of the selected query). | |
| queryEntityId | No | Polymer entity of pdb_id whose sequence by:"sequence" searched (e.g. 4HHB_1). Present only when the query came from pdb_id. |