accueil / serveurs / Recherche & Web / io.github.cyanheads/uniprot-mcp-server
io.github.cyanheads/uniprot-mcp-server
serveur MCP (Model Context Protocol) · uniprot-mcp-server 0.2.6
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.cyanheads/uniprot-mcp-server est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.cyanheads/uniprot-mcp-server » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 6 outils
- uniprot_get_entry≈ 4488 tokens
Fetch full curated UniProtKB entries by accession in one batch (up to 20). Each entry carries function, catalytic activity, cofactors, subcellular location, disease involvement, PTMs, natural variants, isoforms, domains, GO terms, keywords, and cross-references. Partial failures do not abort the batch — resolved entries land in succeeded[] and unknown or inactive (merged, demerged, deleted) accessions in failed[], where the error for an inactive accession names the accession to retry with or the UniParc ID that keeps its sequence. Pass fields to trim the upstream projection. A single oversized record returns kind: "outline" (a section listing with byte sizes) instead of overflowing context — re-call the same accession with sections:[...] (e.g. ["disease","variants"]) to pull only those. sections takes exactly one accession; trim a batch with fields instead. A list section too large on its own (the natural variants of p53, over a thousand) pages with section_limit/section_offset on a re-call naming that one section. This tool does not search: accessions come from uniprot_search_proteins.results[].accession or uniprot_map_ids. Strip any isoform suffix (P04637-2 to P04637) before calling.
Paramètres, retour & exemple (5)
Paramètresfields· string · optionnel
Comma-separated UniProtKB field names to project, e.g. "accession,gene_names,cc_function,ft_variant". Omit for the full curated default set. Use this on the initial call to trim payload.sections· array · optionnel
Only used to re-call one accession after a kind: "outline" response — pass a subset of the outlined section keys to fetch just those sections. Requires exactly one accession: a batch with sections is rejected, so trim a batch with fields. A requested section the record lacks is named in absentSections, not an error. Do not pass on the initial call.accessions· array · requis
Accessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids.section_limit· integer · optionnel
Window size for one list section on a sections re-call: return at most this many items of it (1–500). Requires sections naming exactly one list section, e.g. ["variants"] (or ptms, domains, goTerms). Omit together with section_offset to return the whole section.section_offset· integer · optionnel
Zero-based index of the first item in the windowed section. Defaults to 0. Pass the previous response's nextOffset to page forward. Same requirements as section_limit; set without section_limit, returns every item from this index on.
Exemple d'appel{"name": "uniprot_get_entry", "arguments": {"accessions": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "kind": "full", "error": {}, "shown": 1, "failed": [], "notice": "texte", "window": {}, "sections": [], "succeeded": [], "truncated": true, "nextOffset": 1, "totalCount": 1}} - uniprot_get_proteome≈ 2062 tokens
Fetch the reference proteome for an organism by UPID (e.g. "UP000005640") or NCBI taxon ID (e.g. 9606) — provide exactly one. Returns metadata inline: proteome type, total protein count, BUSCO completeness (score, complete/fragmented/missing counts, lineage dataset), and the genome assembly accession. The protein set is opt-in via include_proteins (it is large — human is ~147,506) and returns a capped page with a forward cursor; narrow it with the query filter (UniProtKB Lucene syntax) for a subset. Resolve an organism name to a taxon ID first with uniprot_get_taxonomy.
Paramètres, retour & exemple (6)
Paramètressize· integer · optionnel
Proteins per page when include_proteins is true (max 500). Omit for the server default.upid· ? · optionnel
Proteome UPID. Provide this OR taxon_id, not both.query· string · optionnel
Optional UniProtKB Lucene filter to narrow the protein list, e.g. "reviewed:true AND keyword:KW-0067". Only applies when include_proteins is true.cursor· string · optionnel
Forward-pagination cursor from a prior protein page. Only meaningful with include_proteins.taxon_id· integer · optionnel
NCBI taxon ID, e.g. 9606 for human. Resolves to the reference proteome. Provide this OR upid, not both.include_proteins· boolean · optionnel
When true, also return a capped, cursor-paginated page of the proteome's proteins. Defaults to false — metadata alone is the common case.
Exemple d'appel{"name": "uniprot_get_proteome", "arguments": {"size": 1, "upid": "texte", "query": "texte", "cursor": "texte", "taxon_id": 1, "include_proteins": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "cursor": "texte", "notice": "texte", "proteins": [], "proteome": {}, "truncated": true, "totalProteinsMatched": 1}} - uniprot_get_sequence≈ 1120 tokens
Fetch the canonical amino-acid sequence (FASTA) for a UniProtKB accession, with length and the parsed header. Set include_isoforms to also return the alternatively-spliced isoform sequences. This is the cheap sequence-only path — for the full functional record use uniprot_get_entry. A merged accession returns the sequences of its merge target, labelled with the target accession and the requested one in mergedFrom; a demerged or deleted accession fails not_found naming its replacements or UniParc ID. Accessions come from uniprot_search_proteins or uniprot_map_ids; strip any "-N" isoform suffix (P04637-2 to P04637) before calling.
Paramètres, retour & exemple (2)
Paramètresaccession· string · requis
UniProtKB primary accession, e.g. "P04637". Canonical form only — strip any "-N" isoform suffix.include_isoforms· boolean · optionnel
When true, also return the isoform sequences. Defaults to false (canonical only).
Exemple d'appel{"name": "uniprot_get_sequence", "arguments": {"accession": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "isoforms": [], "accession": "texte", "canonical": {}, "mergedFrom": "texte"}} - uniprot_get_taxonomy≈ 1571 tokens
Resolve a taxonomy record by NCBI taxon ID (e.g. 9606) or scientific name (e.g. "Homo sapiens") — provide exactly one. Returns the scientific and common name, mnemonic, rank, parent, and the full lineage. Set include_children to also fetch immediate child taxa (a separate lookup — not inline on the record) in pages of 100 with the total child count; when more remain, pass the returned cursor to fetch the next page. Use this to turn an organism name into the taxon ID that uniprot_search_proteins (organism_id) and uniprot_get_proteome (taxon_id) expect.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Organism scientific name, e.g. "Homo sapiens". Provide this OR taxon_id, not both. Matched against the scientific name.cursor· string · optionnel
Forward-pagination cursor from a prior children page, for the next page of the same taxon; a cursor issued for another taxon is rejected. Only meaningful with include_children.taxon_id· integer · optionnel
NCBI taxonomy ID, e.g. 9606. Provide this OR name, not both.include_children· boolean · optionnel
When true, also fetch a page of up to 100 immediate child taxa via a follow-up search. Defaults to false.
Exemple d'appel{"name": "uniprot_get_taxonomy", "arguments": {"name": "texte", "cursor": "texte", "taxon_id": 1, "include_children": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "taxon": {}, "cursor": "texte", "notice": "texte", "lineage": [], "children": [], "truncated": true, "childCount": 1, "totalChildren": 1}} - uniprot_map_ids≈ 2032 tokens
Translate identifiers across databases via UniProt's ID-mapping service — gene names to accessions, accession to PDB / Ensembl / RefSeq / ChEMBL / GeneID, and back. The job runs asynchronously; this tool submits it and polls within a budget. A running job returns status "running" with a ticket; pass that ticket alone to poll the same job. A completed call returns status "finished" with one results page; when continuation is present, pass it alone to fetch the next completed page without re-submitting or polling the job. A gene name often maps to one reviewed Swiss-Prot accession plus dozens of unreviewed TrEMBL ones, so target UniProtKB-Swiss-Prot (reviewed only) for the usual intent, or UniProtKB to include TrEMBL. Pair a gene-symbol from_db with tax_id to disambiguate species. A row whose UniProtKB target is inactive (merged, demerged, or deleted) carries an inactive marker naming its replacements. Chain the resulting active accessions into uniprot_get_entry.
Paramètres, retour & exemple (6)
Paramètresids· array · optionnel
Identifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.to_db· string · optionnel · UniProtKB | UniProtKB-Swiss-Prot | Gene_Name | GeneID | Ensembl | Ensembl_Protein | PDB | RefSeq_Nucleotide
Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB also includes unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.tax_id· integer · optionnel
NCBI taxon ID to disambiguate ambiguous source IDs (e.g. a gene symbol across species). Recommended with Gene_Name; e.g. 9606 for human.ticket· string · optionnel
Running-job ticket from a prior status "running" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs.from_db· string · optionnel · UniProtKB_AC-ID | Gene_Name | GeneID | Ensembl | Ensembl_Protein | PDB | RefSeq_Nucleotide | RefSeq_Protein
Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.continuation· object · optionnel
Completed-page continuation from a prior status "finished" response. Pass it alone to fetch the next page without polling or re-submitting.
Exemple d'appel{"name": "uniprot_map_ids", "arguments": {"ids": [], "to_db": "UniProtKB", "tax_id": 1, "ticket": "texte", "from_db": "UniProtKB_AC-ID", "continuation": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "notice": "texte", "status": "finished", "ticket": "texte", "results": [], "mappedCount": 1, "unmappedIds": [], "continuation": {}}} - uniprot_search_proteins≈ 2414 tokens
Search UniProtKB and return curated protein records. Pass text_search for a plain-language query (the 80% case) or query for the full Lucene field syntax (gene:TP53 AND organism_id:9606 AND reviewed:true) — exactly one is required. Reviewed (Swiss-Prot) entries are manually curated; unreviewed (TrEMBL) are computationally predicted and ~30x more numerous, so reviewed defaults to true to avoid drowning in predictions — set it false to search both tiers together (for TrEMBL only, put reviewed:false in query). The organism_id and reviewed filters apply to the whole query. Request facets (e.g. reviewed, model_organism) for server-side count breakdowns. Results page forward with an opaque cursor; UniProtKB has no offset paging. An inactive accession the query matches (merged, demerged, or deleted) comes back in inactive[] with the accessions that replace it, never as a result. This is the discovery entry point — chain results[].accession into uniprot_get_entry for full records, or uniprot_get_sequence for FASTA.
Paramètres, retour & exemple (8)
Paramètressize· integer · optionnel
Number of hits per page (max 500). Omit for the server default.query· string · optionnel
UniProtKB Lucene query with field prefixes — gene, organism_id, keyword (KW-xxxx), go (GO id), reviewed, protein_name, family, length, existence, accession. Example: "gene:BRCA1 AND organism_id:9606 AND reviewed:true". Provide this OR text_search, not both.cursor· string · optionnel
Opaque forward-pagination cursor from a prior response. Walk pages with this; random access to page N is not supported.facets· string · optionnel
Comma-separated upstream facet names for count breakdowns, e.g. "reviewed,model_organism,proteins_with". Returns a facets array alongside the hits.fields· string · optionnel
Comma-separated UniProtKB field names to project, e.g. "accession,gene_names,cc_function". Omit for a sensible default set covering name, gene, organism, length, reviewed, score, and a function snippet.reviewed· boolean · optionnel
Restrict to reviewed Swiss-Prot entries. Defaults to true (curated only). false applies no tier filter, returning reviewed and unreviewed TrEMBL entries together; for TrEMBL only, put reviewed:false in query. Ignored when query or text_search already contains a reviewed: clause.organism_id· integer · optionnel
Restrict to an NCBI taxon ID, e.g. 9606 for human. A convenience filter ANDed onto the whole query; resolve names with uniprot_get_taxonomy.text_search· string · optionnel
Plain-language search across protein names, gene names, and function, e.g. "kinase apoptosis". Provide this OR query, not both.
Exemple d'appel{"name": "uniprot_search_proteins", "arguments": {"size": 1, "query": "texte", "cursor": "texte", "facets": "texte", "fields": "texte", "reviewed": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "cursor": "texte", "facets": [], "notice": "texte", "results": [], "inactive": [], "totalResults": 1, "effectiveQuery": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».