Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Uniprot Unipressed

FreeNot checked

An MCP server that provides tools for searching and fetching protein data from the UniProt database using the unipressed library.

GitHubEmbed

About

An MCP server that provides tools for searching and fetching protein data from the UniProt database using the unipressed library.

README

An MCP (Model Context Protocol) server that provides tools for querying the UniProt protein database using the unipressed Python library.

Features

  • Search proteins using standard the UniProt query syntax across UniProtKB, UniParc, or UniRef databases
  • Fetch specific entries by accession ID
  • Pagination for large result sets
  • Field selection to control returned data
  • JSON format responses by default - responses are returned in JSON format, with TOON format available as an option

Installation

Using uv (recommended)

uv sync

This will create a virtual environment and install all dependencies.

Development installation

uv sync --extra dev

This installs the package with development dependencies (pytest, etc.).

Usage

Running the server

With uvx (recommended)

uvx uniprot-unipressed-mcp

Or from a git repository:

uvx --from git+https://github.com/pansapiens/uniprot-unipressed-mcp uniprot-mcp

Alternative example: with the FastMCP CLI and HTTP transport

fastmcp run src/uniprot_mcp/server.py:mcp --transport http --port 8007

Configuring with MCP clients

Claude Code

Add the server using the Claude Code CLI:

claude mcp add uniprot-unipressed-mcp -- uvx git+https://github.com/pansapiens/uniprot-unipressed-mcp

Other MCP clients

Or manually add to your MCP configuration (Claude Code, Cursor, etc.):

{
  "mcpServers": {
    "uniprot-unipressed-mcp": {
      "command": "uvx",
      "args": ["git+https://github.com/pansapiens/uniprot-unipressed-mcp"]
    }
  }
}

Response Format

Tool responses are returned in JSON format by default. To receive TOON format responses instead, use the response_format parameter with value "toon":

# JSON format (default)
result = uniprot_search(query="gene:BRCA1")

# TOON format
result = uniprot_search(query="gene:BRCA1", response_format="toon")

Tools

uniprot_search

Search the UniProt protein database using query syntax.

Parameters:

Parameter Type Required Default Description
query string Yes - UniProt query string
database string No "uniprotkb" Database to search: uniprotkb, uniparc, uniref
limit integer No 10 Results per page (1-100)
fields list[string] No None Return fields to include
cursor string No None Pagination cursor from previous result
response_format string No "json" Response format: "json" (default) or "toon"

Example queries:

gene:BRCA1                              # Search by gene name
organism_id:9606                        # Human proteins (NCBI taxonomy ID)
(gene:BRCA*) AND (organism_id:10090)    # Mouse BRCA genes with wildcard
length:[500 TO 700]                     # Proteins of specific length range
keyword:kinase                          # By UniProt keyword
family:serpin                           # By protein family
ec:3.2.1.23                             # By enzyme classification
reviewed:true                           # Only Swiss-Prot reviewed entries

Response:

By default, responses are returned in JSON format. When response_format="toon" is specified, responses are returned in TOON format (a compact string):

JSON format (default):

{
  "results": [...],
  "total": 1234,
  "nextCursor": "eyJvZmZzZXQiOiAxMH0="
}

TOON format:

results[10]:
  - entryType: UniProtKB reviewed (Swiss-Prot)
    primaryAccession: P38398
    secondaryAccessions[7]: E9PFZ0,O15129,Q1RMC1,Q3LRJ0,Q3LRJ6,Q6IN79,Q7KYU9
    uniProtkbId: BRCA1_HUMAN
    ...etc...

uniprot_fetch

Fetch specific protein entries by their UniProt accession IDs.

Parameters:

Parameter Type Required Default Description
ids list[string] Yes - UniProt accession IDs to fetch
database string No "uniprotkb" Database to fetch from
fields list[string] No None Return fields to include
response_format string No "json" Response format: "json" (default) or "toon"

Example:

uniprot_fetch(ids=["P62988", "A0A0C5B5G6"])

Response:

By default, responses are returned in JSON format. When response_format="toon" is specified, responses are returned in TOON format (a compact string):

JSON format (default):

{
  "results": [...],
  "found": 2,
  "requested": 2
}

TOON format:

results[10]:
  - entryType: UniProtKB reviewed (Swiss-Prot)
    primaryAccession: P38398
    secondaryAccessions[7]: E9PFZ0,O15129,Q1RMC1,Q3LRJ0,Q3LRJ6,Q6IN79,Q7KYU9
    uniProtkbId: BRCA1_HUMAN
    ...etc...

Pagination

The server uses cursor-based pagination for search results. When more results are available, the response includes a nextCursor field. Pass this cursor in subsequent requests to retrieve the next page:

# First request
result1 = uniprot_search(query="organism_id:9606", limit=10)

# Get next page using cursor
if "nextCursor" in result1:
    result2 = uniprot_search(
        query="organism_id:9606",
        limit=10,
        cursor=result1["nextCursor"]
    )

Databases

Database Description
uniprotkb UniProt Knowledgebase - curated protein sequences and annotations
uniparc UniProt Archive - comprehensive protein sequence archive
uniref UniProt Reference Clusters - clustered protein sequences

Return Fields

Common return fields include:

  • accession - UniProt accession number
  • id - Entry name
  • gene_names - Gene names
  • protein_name - Protein names
  • organism_name - Source organism
  • organism_id - NCBI taxonomy ID
  • length - Sequence length
  • mass - Molecular mass
  • sequence - Amino acid sequence
  • cc_function - Function annotation
  • cc_subcellular_location - Subcellular location

See the UniProt return fields documentation for the complete list.

Development

Using a local copy of the repository

{
  "mcpServers": {
    "uniprot-unipressed-mcp": {
      "command": "uv",
      "args": ["--directory", "/path/to/uniprot-unipressed-mcp", "run", "-m", "uniprot_mcp.server"]
    }
  }
}

Testing using the MCP Inspector

npx @modelcontextprotocol/inspector uv --directory $(pwd) run -m uniprot_mcp.server

Running tests

uv run pytest

This runs all unit tests. Integration tests (which require network access to the UniProt API) are skipped by default.

Running integration tests

Integration tests can be enabled using an environment variable:

RUN_INTEGRATION_TESTS=1 uv run pytest

Or run only integration tests:

RUN_INTEGRATION_TESTS=1 uv run pytest -m integration

Running tests with coverage

uv run pytest --cov=uniprot_mcp

To include integration tests in coverage:

RUN_INTEGRATION_TESTS=1 uv run pytest --cov=uniprot_mcp

Resources

Licence

MIT

from github.com/pansapiens/uniprot-unipressed-mcp

Install Uniprot Unipressed in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install uniprot-unipressed-mcp

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add uniprot-unipressed-mcp -- uvx uniprot-mcp

FAQ

Is Uniprot Unipressed MCP free?

Yes, Uniprot Unipressed MCP is free — one-click install via Unyly at no cost.

Does Uniprot Unipressed need an API key?

No, Uniprot Unipressed runs without API keys or environment variables.

Is Uniprot Unipressed hosted or self-hosted?

A hosted option is available: Unyly runs the server in the cloud, no local setup required.

How do I install Uniprot Unipressed in Claude Desktop, Claude Code or Cursor?

Open Uniprot Unipressed on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Uniprot Unipressed with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All data MCPs