Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

UniProt MCP

PYPI · UNIPROT-MCP-SERVER · SCANNED SEP 21

Verifiable, release-aware protein evidence workflows over UniProt and linked scientific sources.

Available components

−1 this week 64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (Apache Software License) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 17 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability70
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 8907 tokens (~217/item across 41 items; 41 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 93% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 41 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 41 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the UniProt MCP server?

UniProt MCP runs locally as a PyPI package, launched with uvx uniprot-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · uniprot-mcp-server

# add to Claude Code
claude mcp add smaniches-uniprot-mcp -- uvx uniprot-mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "smaniches-uniprot-mcp": {
      "command": "uvx",
      "args": [
        "uniprot-mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "smaniches-uniprot-mcp": {
      "command": "uvx",
      "args": [
        "uniprot-mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add smaniches-uniprot-mcp -- uvx uniprot-mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smaniches-uniprot-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "uniprot-mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add smaniches-uniprot-mcp --command uvx --arg uniprot-mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  smaniches-uniprot-mcp:
    command: "uvx"
    args: ["uniprot-mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "smaniches-uniprot-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "uniprot-mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add smaniches-uniprot-mcp -t stdio -c uvx -a uniprot-mcp-server
// mcp.json
{
  "mcpServers": {
    "smaniches-uniprot-mcp": {
      "command": "uvx",
      "args": [
        "uniprot-mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 20 Sept 26 0
    • Stability: 0.97 → pass security
  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −1
    • Stability: pass → 0.93 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/uniprot-mcp-server@1.3.6

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 29 packages
Packages resolved 29
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 41 exposed · ~8,907 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
uniprot_batch_entries ~159

Fetch multiple entries in a single call. Use this instead of repeated ``uniprot_get_entry`` calls when you already have a list of accessions — one network round-trip instead of N, with invalid accessions reported rather than aborting the batch.

NameTypeReqDescription
accessionsstringyesComma-separated UniProt accessions, e.g. 'P04637,P38398'. Invalid accessions are skipped rather than failing the whole call; only the first 100 valid accessions are fetched.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_compute_properties ~220

Derived sequence chemistry for a UniProt entry: molecular weight, theoretical pI, GRAVY hydrophobicity, aromaticity, net charge at pH 7, extinction coefficient at 280 nm, amino-acid composition. Computed from the canonical FASTA via standard methods (Lehninger pK values, Kyte-Doolittle hydropathy, Pace 1995 ε₂₈₀ formula). Pure-Python — no additional external API call beyond the FASTA fetch.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_features_at_position ~211

List every UniProt feature that overlaps a residue position (1-indexed). Answers the question 'what's at residue 175 of TP53?' by intersecting the entry's features with the given position. Useful for variant-effect interpretation — surfaces every domain, binding site, modification, mutagenesis annotation, and natural variant at a single residue in one call.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
positionintegeryes1-indexed residue position within the protein sequence.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_active_sites ~175

Return the active sites, binding sites, metal-binding residues, and DNA-binding regions annotated on a UniProt entry. Filtered view over the entry's feature array — this is the residue-level chemistry of the protein, the input to enzyme drug-design and antibiotic target-validation workflows.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_alphafold_confidence ~291

Fetch the per-residue confidence (pLDDT) summary for an entry's AlphaFold model, not just its existence. Returns the global mean pLDDT score plus the four-band distribution (very high ≥ 90 / confident 70-90 / low 50-70 / very low < 50) so the agent can decide whether to trust the model: 95% 'very high' is publication-grade, 40% 'very low' is largely disordered and structural inference is unsafe. Call ``uniprot_resolve_alphafold`` first if you only need the model ID and viewer link, not its confidence. This tool calls https://alphafold.ebi.ac.uk — declared in PRIVACY.md as a third party. Provenance carries source = AlphaFoldDB.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_citation ~124

Fetch a UniProt citation record by ID (typically a PubMed ID, e.g. 9840937). Returns title, authors, journal, year, volume, pages, and cross-references.

NameTypeReqDescription
citation_idstringyesCitation ID, typically a numeric PubMed ID, e.g. '9840937'.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_cross_refs ~310

List every external-database cross-reference UniProt has curated for an entry (PDB, Pfam, Ensembl, Reactome, KEGG, STRING, and dozens more), optionally narrowed to one ``database``. For the common single-database cases there are dedicated, richer tools that resolve structured details beyond a bare ID: ``uniprot_resolve_pdb`` (structures with method/resolution), ``uniprot_resolve_alphafold``, ``uniprot_resolve_interpro``, and ``uniprot_resolve_chembl``. Use this tool for any other database or to see the full cross-reference set at once.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
databasestringOptional exact database name to filter to, e.g. 'PDB', 'Pfam', 'Ensembl', 'Reactome', 'KEGG', 'STRING'. Leave empty to return cross-references to every linked database.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_disease_associations ~217

Structured disease associations for a UniProt entry. Returns the diseases recorded in DISEASE-type comments with name, acronym, UniProt disease ID, OMIM cross-reference, description, and the annotation note. Critical for clinical interpretation — distinguishes a UniProt-curated disease association (literature-anchored) from a raw cross-reference. Empty result does not imply disease-irrelevant; see Open Targets / OMIM / DisGeNET for population-level evidence.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_entry ~157

Fetch a UniProt protein entry by accession (e.g. P04637 for p53, P38398 for BRCA1). Returns function, gene, organism, disease associations, cross-references.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_evidence_summary ~304

Summarise and grade the ECO (Evidence and Conclusion Ontology) codes attached to a UniProt entry's annotations. Counts how many features and comments cite each evidence code, then classifies every occurrence as experimental (wet-lab, ECO:0000269), manual (curator-reviewed inference), or automatic (un-reviewed pipeline call) and collapses that into a single 0-100 evidence-confidence score with a high / moderate / low / very-low band. A score near 100 means the entry is dominated by direct experimental evidence; a score near 10 means it is almost entirely computationally inferred. Critical for any downstream agent that must distinguish 'wet-lab confirmed' annotations from 'inferred by similarity'. JSON output adds an ``evidence_confidence`` block (score, band, per-class breakdown, weights) alongside the raw ``evidence_counts``.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_features ~278

Return the full, unfiltered feature array for an entry: domains, binding sites, PTMs, signal peptides, and every other annotated region, optionally narrowed by ``feature_types``. For a residue-specific view ('what's at position 175?') use ``uniprot_features_at_position`` instead; for the curated subsets (active/binding sites, processing, PTMs alone) the dedicated ``uniprot_get_active_sites`` / ``uniprot_get_processing_features`` / ``uniprot_get_ptms`` tools apply the same filter server-side.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
feature_typesstringOptional comma-separated allow-list of UniProt feature type names, e.g. 'Domain,Active site,Binding site,Modified residue'. Leave empty to return every feature on the entry.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_go_terms ~167

Get GO annotations grouped by aspect.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
aspectstringOptional Gene Ontology aspect filter: 'F' (molecular function), 'P' (biological process), 'C' (cellular component), or empty for all three.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_keyword ~140

Fetch a UniProt keyword by ID (e.g. KW-0007 for Acetylation, KW-0539 for Nucleus). Returns name, definition, category, synonyms, GO cross-refs, and parent/child hierarchy.

NameTypeReqDescription
keyword_idstringyesUniProt keyword ID, e.g. 'KW-0007' (Acetylation). Always starts with 'KW-'.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_processing_features ~219

Return the maturation and processing features (signal peptide, propeptide, transit peptide, initiator methionine, chain, peptide). These describe how the translated polypeptide is cleaved and targeted into its mature form — essential for therapeutic-protein engineering and pathogen-secretion-system analysis. A pre-filtered view over ``uniprot_get_features``; for post-translational chemical modifications instead of cleavage/targeting, use ``uniprot_get_ptms``.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_proteome ~147

Fetch a UniProt proteome by UP ID (e.g. UP000005640 = human reference). Returns organism, taxonomy lineage, protein count, gene count, BUSCO completeness score, annotation score, and component breakdown (chromosomes / contigs).

NameTypeReqDescription
proteome_idstringyesUniProt proteome ID, e.g. 'UP000005640' (human reference). Always starts with 'UP'.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_ptms ~246

Return the post-translational modification features (modified residues, glycosylation sites, lipidation sites, disulfide bonds, cross-links). PTMs are functionally critical: they switch enzymes on, target proteins for degradation, anchor them to membranes, and fold them via disulfides. A pre-filtered view over ``uniprot_get_features``; for cleavage/targeting features instead of chemical modifications, use ``uniprot_get_processing_features``. The empty case carries an honest pointer to mass-spec databases (PhosphoSitePlus, GlyConnect) for additional evidence.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_publications ~217

List the publications UniProt cites on an entry, with PubMed IDs, DOIs, titles, authors, journal, year, and the 'reference position' annotation (the experimental work each citation supports — e.g. 'CRYSTALLIZATION', 'PHOSPHORYLATION AT SER-15', 'INVOLVEMENT IN LI-FRAUMENI SYNDROME'). Pure composition over the entry's ``references`` block — no extra HTTP call beyond the entry fetch.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_sequence ~178

Fetch the canonical protein sequence in FASTA format. Use this when you need the raw residue string itself (e.g. for local sequence analysis); for pre-computed chemistry derived from this same sequence (molecular weight, pI, hydrophobicity) call ``uniprot_compute_properties`` instead, which fetches the FASTA internally so you don't have to parse it yourself. Always returns markdown/plain-text FASTA — there is no ``response_format`` parameter because FASTA is already the interchange format.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_subcellular_location ~152

Fetch a UniProt subcellular-location term by ID (e.g. SL-0039 Cell membrane, SL-0086 Cytoplasm, SL-0191 Nucleus). Returns name, definition, category, GO cross-refs, and the is-a / part-of hierarchy.

NameTypeReqDescription
location_idstringyesUniProt subcellular-location ID, e.g. 'SL-0039' (Cell membrane). Always starts with 'SL-'.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_uniparc ~213

Fetch a UniParc sequence-archive record by its known UPI. Returns sequence, MD5/CRC64 checksums, cross-reference counts, linked UniProtKB accessions, and the common-taxa list. UniParc is the non-redundant sequence archive — every protein sequence ever submitted to a major public database has exactly one UniParc record, making this the tool to use when a UniProtKB accession doesn't exist for a sequence you have. Don't have a UPI yet? Use ``uniprot_search_uniparc`` to find one first.

NameTypeReqDescription
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
upistringyesUniParc identifier, e.g. 'UPI000002ED67'. Always starts with 'UPI'.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_uniref ~175

Fetch a UniRef cluster by ID. Examples: UniRef100_P04637 (100 % identity, only exact-match members), UniRef90_P04637 (90 % identity), UniRef50_P04637 (50 %, broadest grouping). Returns representative member, member list, common taxon, last-updated date.

NameTypeReqDescription
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
uniref_idstringyesUniRef cluster ID, e.g. 'UniRef90_P04637'. Prefix is 'UniRef50_'/'UniRef90_'/'UniRef100_' followed by the representative member's accession.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_get_variants ~223

List every literature-described natural variant UniProt has curated for an entry, including disease-associated mutations. Use this to see the full variant catalogue for a protein; to check one specific HGVS-shorthand change (e.g. 'R175H') use ``uniprot_lookup_variant`` instead, which does the position/residue matching for you. UniProt's natural-variant annotations only cover literature-described variants — for population-scale clinical significance data use ``uniprot_resolve_clinvar``.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_id_mapping ~190

Map identifiers between UniProt and external databases (or between two external databases) via UniProt's ID mapping service. Submits an async job and polls it to completion server-side, so the call may take a few seconds for large batches.

NameTypeReqDescription
from_dbstringyesSource database code, e.g. 'UniProtKB_AC-ID', 'PDB', 'Ensembl', 'GeneID' (Entrez), or 'Gene_Name'.
idsstringyesComma-separated identifiers to map, up to 100 per call.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
to_dbstringyesTarget database code, same code set as ``from_db``.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_lookup_variant ~270

Look up an HGVS-shorthand amino-acid change (e.g. ``R175H``, ``V600E``, ``R248*``) in the UniProt entry's natural-variant annotations. Returns the matching variant feature(s) including the UniProt-curated description (often a disease association). A null result here does NOT mean a variant is benign — UniProt only annotates literature-described variants; ClinVar / dbSNP carry population-level data.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
changestringyesHGVS-shorthand amino-acid change, e.g. 'R175H', 'V600E', 'R248*' (stop). Format: <original residue><1-indexed position><alt residue or '*'>.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_provenance_verify ~250

Re-fetch a previously recorded UniProt URL and verify it still returns the same release identifier and the same canonical response body (SHA-256). Pass the values from a prior response's provenance footer (`url`, `release`, `response_sha256`, `accept_header`); empty optional fields skip the corresponding check. Returns a verification report with explicit pass / drift / unreachable verdicts per check. ``accept_header`` must match the Accept header used for the original request (default ``application/json``; use ``text/plain;format=fasta`` for FASTA-originated provenance). Replaying the wrong header causes a guaranteed hash mismatch because the upstream serves different content depending on content negotiation. This is the single tool that converts every prior uniprot-mcp response into an independently auditable artefact — a year from now, a third party can take the recorded provenance footer and confirm the upstream still serves the exact same bytes.

NameTypeReqDescription
accept_headerstring
releasestring
response_formatstring
response_sha256string
urlstringyes
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_replay_from_cache ~148

Read a previously-cached UniProt response without hitting the upstream. The local provenance cache is opt-in via the ``UNIPROT_MCP_CACHE_DIR`` environment variable; when unset, this tool always reports cache-disabled. Useful for: reproducing a year-old answer from a sealed cache snapshot; working offline / behind air-gaps; reducing UniProt's load when running benchmarks twice. Returns the cached body text wrapped in the recorded Provenance. The annotation ``openWorldHint=False`` reflects that this tool consults the local file system only — no upstream call.

NameTypeReqDescription
response_formatstring
urlstringyes
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_alphafold ~149

Resolve the AlphaFoldDB cross-reference for a UniProt entry — typically one canonical model per accession. Includes a direct EBI viewer link.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_chembl ~163

Resolve ChEMBL drug-target cross-references for a UniProt entry. Returns the ChEMBL target IDs with EBI viewer links — empty if the protein has no documented bioactivity data in ChEMBL.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_clinvar ~349

Look up ClinVar records for the gene encoded by a UniProt entry. First fetches the entry to extract the canonical gene symbol, then queries NCBI eutils ClinVar by gene (and optional protein-change filter, e.g. ``R175H``). Returns clinical-significance classification, review status, condition list (trait_set), molecular consequence, and the protein-change list per record. Critical for clinical workflows — UniProt's natural-variant annotations stop at literature-described variants. ClinVar carries every variant submitted by clinical labs, with curated significance classifications. Combine ``uniprot_lookup_variant`` (UniProt side) with ``uniprot_resolve_clinvar`` (population side) for a full variant-effect picture. Calls https://eutils.ncbi.nlm.nih.gov — declared in PRIVACY.md.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
changestringOptional HGVS-shorthand protein change to filter to, e.g. 'R175H'. Leave empty to return all ClinVar records for the gene.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of ClinVar records to return; capped at 50.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_interpro ~147

List InterPro signatures (domain / family classifications) for a UniProt entry, with names extracted from the entry's cross-reference properties.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_orthology ~224

Group every orthology cross-reference in a UniProt entry by source database (KEGG / OMA / OrthoDB / eggNOG / HOGENOM / PhylomeDB / InParanoid / TreeFam / GeneTree / PAN-GO / PANTHER / OrthoInspector). Different databases use different inference methods; surfacing them side-by-side lets the agent reason about consensus when comparing orthologs across species. Pure-Python — no extra HTTP call beyond the entry fetch.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_resolve_pdb ~163

List every PDB structure cross-referenced from a UniProt entry, with method, resolution, and chain coverage. Faster than parsing the raw cross-references blob — returns a structured list typed for downstream analysis.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search ~290

The general-purpose entry point for finding UniProtKB proteins by any combination of gene, organism, keyword, or free text. Use this first when you don't already have an accession; use ``uniprot_get_entry`` once you do. Examples: '(gene:TP53) AND (organism_id:9606)', 'kinase AND reviewed:true'. ``reviewed_only`` and ``organism`` are convenience shortcuts equivalent to adding the corresponding clause to ``query`` yourself.

NameTypeReqDescription
organismstringOptional organism filter: a taxonomy ID ('9606') or a scientific name ('Homo sapiens'). Applied as an additional AND clause on top of ``query``; leave empty to search all organisms.
querystringyesUniProt query-language expression, e.g. '(gene:TP53) AND (organism_id:9606)'. Field syntax follows https://www.uniprot.org/help/query-fields.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
reviewed_onlybooleanIf true, restrict results to reviewed Swiss-Prot entries only.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_citations ~260

Search the UniProt citations index (the literature UniProt references) by title, author, or year. Use this to find a citation's ID (typically a PubMed ID); once you have it, call ``uniprot_get_citation`` for the full record. For the publications attached to one specific protein entry, use ``uniprot_get_publications`` instead. Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'p53 AND author:Vogelstein', 'BRCA1 AND year:[2020 TO 2024]'.

NameTypeReqDescription
querystringyesCitation query using UniProt citation fields, e.g. 'p53 AND author:Vogelstein' or 'BRCA1 AND year:[2020 TO 2024]'. Supports free text plus 'author:', 'title:', and 'year:' ranges.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_keywords ~227

Search UniProt's controlled keyword vocabulary (the ``KW-####`` terms) by name or definition. Use this to discover a keyword ID from a concept; once you have the ``KW-####`` ID, call ``uniprot_get_keyword`` for its full record (definition, category, hierarchy, GO cross-references). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'acetylation', 'nucleus', 'kinase activity'.

NameTypeReqDescription
querystringyesFree-text to match against UniProt keyword names, synonyms, and definitions, e.g. 'acetylation', 'nucleus', 'kinase activity'. Plain words, not a UniProtKB field query.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_proteomes ~261

Search UniProt proteomes (whole-organism protein sets) by organism or proteome field. Use this to find a proteome's ``UP#########`` ID; once you have it, call ``uniprot_get_proteome`` for the full record (protein / gene counts, BUSCO completeness, component breakdown). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'organism_id:9606' for human, 'proteome_type:1' for reference proteomes only, 'taxonomy_name:bacteria' for all bacterial proteomes.

NameTypeReqDescription
querystringyesProteome query using UniProt proteome fields, e.g. 'organism_id:9606' (human), 'proteome_type:1' (reference proteomes only), or 'taxonomy_name:bacteria'. Plain text also matches organism names.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_subcellular_locations ~244

Search UniProt's controlled subcellular-location vocabulary (the ``SL-####`` terms) by name or definition. Use this to discover a location ID from a concept; once you have the ``SL-####`` ID, call ``uniprot_get_subcellular_location`` for its full record (definition, category, hierarchy, GO cross-references). Returns up to ``size`` matches, or an empty list if nothing matches. Examples: 'membrane', 'mitochondrion', 'cytoplasm'.

NameTypeReqDescription
querystringyesFree-text to match against UniProt subcellular-location names, synonyms, and definitions, e.g. 'membrane', 'mitochondrion', 'cytoplasm'. Plain words, not a UniProtKB field query.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_uniparc ~217

Search the UniParc non-redundant sequence archive by taxonomy, source database, or other UniParc query fields — the entry point when you don't already have a UPI. Examples: 'taxonomy_id:9606' for human sequences, 'database:Ensembl' for Ensembl-derived entries. Once you have a UPI from the results, use ``uniprot_get_uniparc`` for the full record.

NameTypeReqDescription
querystringyesUniProt query-language expression, e.g. '(gene:TP53) AND (organism_id:9606)'. Field syntax follows https://www.uniprot.org/help/query-fields.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_search_uniref ~259

Search for UniRef clusters by content (not by a known cluster ID — for that, use ``uniprot_get_uniref`` directly). Example: query='kinase' identity_tier='90' returns the 90% clusters matching 'kinase'. Use a looser tier (50) to find broad homology groups, a tighter tier (100) to find near-identical sequence sets.

NameTypeReqDescription
identity_tierstringCluster identity threshold: '50' (loosest grouping), '90', '100' (tightest, only exact-match members), or empty for all tiers. Higher values return more, smaller, tighter clusters.
querystringyesUniProt query-language expression, e.g. '(gene:TP53) AND (organism_id:9606)'. Field syntax follows https://www.uniprot.org/help/query-fields.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_target_dossier ~323

One-call comprehensive characterisation of a UniProt entry, structured for drug-discovery / clinical workflows. Composes nine views over the same entry plus one FASTA fetch (so two upstream network calls, not nine): Identity · Function · Sequence chemistry · Structural evidence (PDB count + best-resolution + AlphaFold model id + InterPro count) · Drug-target context (ChEMBL ids, DrugBank count) · Disease associations (with MIM IDs) · Variants count · Functional annotations (top GO MF, subcellular, ECO diversity) · Cross-references summary For per-residue pLDDT confidence call ``uniprot_get_alphafold_confidence`` separately. For full disease detail call ``uniprot_get_disease_associations``. The dossier is the entry- level summary that decides which deeper tools are worth calling.

NameTypeReqDescription
accessionstringyesUniProt accession, e.g. 'P04637' (human TP53) or 'P38398' (human BRCA1). Both reviewed (Swiss-Prot) and unreviewed (TrEMBL) accessions are accepted; case-sensitive.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
NameTypeReqDescription
resultstringyes

No examples provided.

uniprot_taxonomy_search ~250

Resolve an organism name to its NCBI taxonomy ID(s) — the numeric ID other UniProt tools expect (e.g. the ``organism`` parameter of ``uniprot_search``, or ``organism_id:`` in a query string). Returns each match's taxonomy ID, scientific name, common name, and rank (species / genus / etc.); a name can resolve to multiple IDs when it's ambiguous (e.g. a genus with several species), so inspect the rank and full scientific name before picking one. Use this before filtering any other search by organism if you only know the name, not the numeric ID.

NameTypeReqDescription
querystringyesOrganism name or partial name to search for, e.g. 'Homo sapiens' or 'coli'. Matches against scientific and common names.
response_formatstring'markdown' (default) for a human-readable report with a provenance footer, or 'json' for a machine-parseable structured payload with the same data. Any other value is rejected.
sizeintegerMaximum number of results to return; capped at 500 server-side.
NameTypeReqDescription
resultstringyes

No examples provided.

Common questions

What is the UniProt MCP server?

UniProt MCP is listed in the public MCP registry as io.github.smaniches/uniprot-mcp. Verifiable, release-aware protein evidence workflows over UniProt and linked scientific sources. This page covers its PyPI package (uniprot-mcp-server).

Is the UniProt MCP server safe to use?

UniProt MCP scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the UniProt MCP server expose?

UniProt MCP exposes 41 tools: uniprot_get_entry, uniprot_search, uniprot_get_sequence, uniprot_get_features, uniprot_get_go_terms, and 36 more. Their descriptions and schemas cost roughly 8,907 tokens of context every time the server is loaded.

Is the UniProt MCP server still maintained?

UniProt MCP is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.