Skip to content
Official

Protein Research with UniProt MCP

Retrieve reviewed UniProtKB protein records through Claude Desktop, disambiguate organism and accession, and retain functional evidence and source identifiers.

Level: Intermediate Cost: Mixed Privacy: Cloud ~30 min
Start Setup

You'll be able to

  • Search proteins by gene, organism and review status.
  • Retrieve annotated records with evidence and cross-references.

What you'll build

Scope

Use Node.js >=24 and @cyanheads/uniprot-mcp-server 0.2.4 in Claude Desktop. Public UniProt lookups need no API key. Local MCP queries the external UniProt API; Claude receives returned annotations. The workflow is record retrieval, not a new protein structure or clinical prediction.

Identifiers and evidence

Constrain human proteins with taxon 9606 and record whether entries are reviewed. Gene names alone can be ambiguous. Use the canonical accession for entry retrieval; isoform suffixes and predicted sequences need separate handling. Functions and cross-references depend on the database release: preserve source, retrieval date and evidence labels.

UniProt record retrieval

UniProt MCP (cyanheads)

Stack Components

UniProt MCP (cyanheads)

UniProt record retrieval · 0.2.4

Pinned npm package; live UniProt annotations can change.

See upstream licenses and client/service account terms.

View Resource

Compatibility

ClientOSArchitectureVersion requirements
Claude Desktop macOSAnySee component requirements
Claude Desktop WindowsAnySee component requirements

Setup & Test

1. Prepare Node.js and Claude Desktop

All platforms

Install Node.js 24 or newer with npm and Claude Desktop. Confirm that local MCP is allowed and HTTPS access to the target database is available. Bun is not needed for this Node-based variant.

node --version
npm --version
Official source

Expected result

Node reports v24 or newer; npm is available.

2. Install the pinned MCP package locally

All platforms

Use a new writable working directory. This installs the server in .mcp-packages, rather than globally; keep its lockfile for verification. The upstream npx entry and the local dist/index.js entry use the same published package.

npm install --prefix .mcp-packages @cyanheads/[email protected]
npm ls --prefix .mcp-packages --depth=0
Official source

Expected result

The requested exact package version is installed.

3. Configure Claude Desktop on macOS

macOS

Open Settings > Developer > Edit Config and merge the server into mcpServers. Replace all placeholder paths with actual absolute paths, including the node executable. Keep existing server entries. No API keys are needed for the baseline query; optional keys/emails belong in private configuration.

{
  "mcpServers": {
    "uniprot-mcp-server": {
      "command": "/ABSOLUTE/PATH/TO/node",
      "args": [
        "/ABSOLUTE/PATH/.mcp-packages/node_modules/@cyanheads/uniprot-mcp-server/dist/index.js"
      ],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}
Official source

Expected result

Valid JSON starts the installed package with the Node 24+ executable and stdio.

4. Configure Claude Desktop on Windows

Windows

Open Settings > Developer > Edit Config and merge the server into mcpServers. Replace all placeholder paths with actual absolute paths, including the node executable. Keep existing server entries. No API keys are needed for the baseline query; optional keys/emails belong in private configuration.

{
  "mcpServers": {
    "uniprot-mcp-server": {
      "command": "C:\\ABSOLUTE\\PATH\\TO\\node.exe",
      "args": [
        "C:\\ABSOLUTE\\PATH\\.mcp-packages\\node_modules\\@cyanheads\\uniprot-mcp-server\\dist\\index.js"
      ],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}
Official source

Expected result

Valid JSON starts the installed package with the Node 24+ executable and stdio.

5. Restart and inspect the tools

All platforms

Completely quit and restart Claude Desktop. Inspect Developer status and the connector tool list. Required tools: uniprot_search_proteins, uniprot_get_entry.

Official source

Expected result

Connection succeeds and the listed tools are available.

6. Retrieve the human TP53 record

All platforms

Paste into a new chat and inspect both actual tool calls.

Use uniprot_search_proteins with query gene:TP53 AND organism_id:9606 and reviewed=true. Retrieve the returned canonical human TP53 accession using uniprot_get_entry. Report accession, reviewed status, gene, organism, sequence length, function and evidence references with the UniProt source link and retrieval date. Check whether the accession is P04637. Keep unknown annotations and avoid translating molecular annotations into clinical recommendations.
Official source

Expected result

Expected reference identity: reviewed human TP53, accession P04637, canonical sequence length 393. Verify against the returned record and https://www.uniprot.org/uniprotkb/P04637/entry ; variants or isoforms must be labelled separately. This is a reference baseline, not a session result.

7. Check conflicting search fields

All platforms

The upstream tool allows either text_search or query, not both.

Call uniprot_search_proteins with both text_search="TP53" and query="gene:TP53". Report the validation error and do not fabricate entries.
Official source

Expected result

The conflicting request is rejected.

Troubleshooting

  • Startup failure: check Node 24+, the absolute node/module paths, JSON syntax and the local install lockfile.
  • Tools missing: restart the desktop client and inspect Developer logs.
  • HTTP 429 or timeout: reduce request volume, use pagination and retry with backoff; preserve partial results.
  • Missing database fields: show them as unavailable, not inferred values.
  • Wrong species: add organism_id:9606 and inspect taxon in the returned record.
  • Multiple hits: compare accessions and reviewed status before choosing.
  • Entry too large: request the needed sections and keep the accession/provenance.
  • Isoform lookup fails: use the canonical accession for entry details; retrieve isoform sequences separately.
  • ID-mapping job still running: poll the returned ticket rather than resubmitting.
Still not working

Alternatives

Use the UniProt website or REST API directly. Structure records belong to the separate RCSB workflow; UniProt annotations alone are not a structure-quality assessment.