A side-by-side look at the Uniprot MCP and Uniprot MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Uniprot MCP for biology & bioinformatics work as a local process; choose Uniprot MCP Server for biology & bioinformatics as a local process. You can also run both side by side in one mcpServers block.
UNIPROT_MCP_CACHE_DIR.uniprot_get_entry, uniprot_search, uniprot_get_sequence.uniprot_search_proteins, uniprot_get_entry, uniprot_map_ids.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Biology & Bioinformatics | Biology & Bioinformatics |
| Quality signal | 61/100 · Good | 53/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | UNIPROT_MCP_CACHE_DIR | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3 | 2 |
| Directory activity | 4 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 41 | 6 |
| Full listing | View Uniprot MCP | View Uniprot MCP Server |
uniprot_get_entryFetch a UniProt protein entry by accession (e.g. P04637 for p53, P38398 for BRCA1).
Returns function, gene, organism, disease associations, cross-references.uniprot_searchThe 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.uniprot_get_sequenceFetch 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.uniprot_get_featuresReturn 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.uniprot_get_go_termsGet GO annotations grouped by aspect.uniprot_get_cross_refsList 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.uniprot_get_variantsList 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``.uniprot_id_mappingMap 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.uniprot_batch_entriesFetch 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.uniprot_taxonomy_searchResolve 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.uniprot_get_keywordFetch 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.uniprot_search_keywordsSearch 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'.uniprot_search_proteinsSearch UniProtKB by plain text or a Lucene field query, with the reviewed (Swiss-Prot) filter foregrounded and optional server-side facet counts. Cursor-paginated. The discovery entry point.uniprot_get_entryFetch full curated entries by accession in one batch (up to 20) — function, catalytic activity, disease, variants, isoforms, GO terms, cross-references. Partial-success output; an oversized record returns a section outline.uniprot_map_idsTranslate identifiers across databases via UniProt's async ID-mapping service — gene names, Ensembl, RefSeq, ChEMBL, PDB, GeneID ↔ UniProtKB accessions. Polls within a budget; running jobs return a ticket and completed pages return a continuation.uniprot_get_proteomeFetch a reference proteome by UPID or NCBI taxon ID — protein count, BUSCO completeness, genome assembly inline, plus an opt-in capped page of the proteins.uniprot_get_taxonomyResolve a taxonomy record by NCBI taxon ID or scientific name — name, rank, parent, full lineage, and optionally the immediate children.uniprot_get_sequenceFetch the canonical amino-acid sequence (FASTA) for an accession, with length and parsed header — and optionally the isoform sequences. The cheap sequence-only path.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"smaniches-uniprot-mcp": {
"command": "uvx",
"args": [
"uniprot-mcp-server"
],
"env": {
"UNIPROT_MCP_CACHE_DIR": "YOUR_UNIPROT_MCP_CACHE_DIR_HERE"
}
}
}
}
{
"mcpServers": {
"uniprot-mcp-server": {
"command": "bunx",
"args": [
"@cyanheads/uniprot-mcp-server@latest"
]
}
}
}