Skip to main content

MCP server for UniProt protein data access

Project description

UniProt MCP Server

A Model Context Protocol (MCP) server that provides access to UniProt protein information. This server allows AI assistants to fetch protein function and sequence information directly from UniProt.

UniProt Server MCP server

Features

  • Get protein information by UniProt accession number
  • Batch retrieval of multiple proteins
  • Caching for improved performance (24-hour TTL)
  • Error handling and logging
  • Information includes:
    • Protein name
    • Function description
    • Full sequence
    • Sequence length
    • Organism

Quick Start

  1. Ensure you have Python 3.10 or higher installed
  2. Clone this repository:
    git clone https://github.com/TakumiY235/uniprot-mcp-server.git
    cd uniprot-mcp-server
    
  3. Install dependencies:
    # Using uv (recommended)
    uv pip install -r requirements.txt
    
    # Or using pip
    pip install -r requirements.txt
    

Configuration

Add to your Claude Desktop config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "uniprot": {
      "command": "uv",
      "args": ["--directory", "path/to/uniprot-mcp-server", "run", "uniprot-mcp-server"]
    }
  }
}

Usage Examples

After configuring the server in Claude Desktop, you can ask questions like:

Can you get the protein information for UniProt accession number P98160?

For batch queries:

Can you get and compare the protein information for both P04637 and P02747?

API Reference

Tools

  1. get_protein_info

    • Get information for a single protein
    • Required parameter: accession (UniProt accession number)
    • Example response:
      {
        "accession": "P12345",
        "protein_name": "Example protein",
        "function": ["Description of protein function"],
        "sequence": "MLTVX...",
        "length": 123,
        "organism": "Homo sapiens"
      }
      
  2. get_batch_protein_info

    • Get information for multiple proteins
    • Required parameter: accessions (array of UniProt accession numbers)
    • Returns an array of protein information objects

Development

Setting up development environment

  1. Clone the repository
  2. Create a virtual environment:
    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. Install development dependencies:
    pip install -e ".[dev]"
    

Running tests

pytest

Code style

This project uses:

  • Black for code formatting
  • isort for import sorting
  • flake8 for linting
  • mypy for type checking
  • bandit for security checks
  • safety for dependency vulnerability checks

Run all checks:

black .
isort .
flake8 .
mypy .
bandit -r src/
safety check

Technical Details

  • Built using the MCP Python SDK
  • Uses httpx for async HTTP requests
  • Implements caching with 24-hour TTL using an OrderedDict-based cache
  • Handles rate limiting and retries
  • Provides detailed error messages

Error Handling

The server handles various error scenarios:

  • Invalid accession numbers (404 responses)
  • API connection issues (network errors)
  • Rate limiting (429 responses)
  • Malformed responses (JSON parsing errors)
  • Cache management (TTL and size limits)

Contributing

We welcome contributions! Please feel free to submit a Pull Request. Here's how you can contribute:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and adhere to the existing coding style.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • UniProt for providing the protein data API
  • Anthropic for the Model Context Protocol specification
  • Contributors who help improve this project

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseep_uniprot_mcp_server-0.1.0.tar.gz (57.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mseep_uniprot_mcp_server-0.1.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file mseep_uniprot_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: mseep_uniprot_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 57.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for mseep_uniprot_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 57bd5ca7f586d22a3f5d551ae82b8e8e6875b5a2d3437a80fe9380752def81e7
MD5 205132c03ff2131cda120545c1712b16
BLAKE2b-256 4d5b7d08ba52925979f24703684d12da51c9aeca4dde1da5346c1e2e843c1a1e

See more details on using hashes here.

File details

Details for the file mseep_uniprot_mcp_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mseep_uniprot_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a8ff7c98ff43b5e81eeea7345cce21e7627d8ca292d5217f232aa2e4d477086
MD5 7be7b06c572585ca2903e521c6c6497c
BLAKE2b-256 487b6aec5564bfbd1b3e3c46692c47c6cacf838d6366cd77982328ac3ec7e460

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page