Skip to main content

MCP server for querying the RiboSeq.Org Data Portal - access ribosome profiling data through Claude and other LLMs

Project description

RDP-MCP

An MCP (Model Context Protocol) server that provides AI assistants like Claude with direct access to query the RiboSeq.Org Data Portal.

What is this?

This MCP server allows you to use Claude Desktop (or any MCP-compatible client) to search and explore ribosome profiling datasets through natural language. Instead of manually browsing the web portal, you can ask Claude questions like:

  • "Find all human liver samples treated with cycloheximide"
  • "Show me yeast ribosome profiling data from 2023"
  • "Get the BAM file links for samples in study PRJNA123456"

Installation

Prerequisites

  • Python 3.10 or higher
  • Claude Desktop (or another MCP-compatible client)

Install via uvx (Recommended)

The easiest way to use this MCP server is with uvx, which comes with modern Python installations:

# Test that it works
uvx --from /path/to/RiboSeqOrg-DataPortal/RDP-MCP-server RDP-MCP

Install via pip

Alternatively, install it in development mode:

cd RDP-MCP-server
pip install -e .

Configuration

Claude Desktop

Add this to your Claude Desktop configuration file:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

Using uvx (recommended):

{
  "mcpServers": {
    "riboseq": {
      "command": "uvx",
      "args": [
        "--from",
        "/path/to/RiboSeqOrg-DataPortal/RDP-MCP-server",
        "RDP-MCP"
      ]
    }
  }
}

Using pip install:

{
  "mcpServers": {
    "riboseq": {
      "command": "RDP-MCP"
    }
  }
}

After updating the configuration, restart Claude Desktop.

Available Tools

The MCP server provides the following tools:

count_samples ⭐ NEW

Count samples without fetching data - much more efficient than querying all results!

Returns just the total count of samples matching your filters. Perfect for questions like:

  • "How many human liver samples are in the database?"
  • "How many samples use cycloheximide?"

Supports all the same filters as query_samples

query_samples

Search for ribosome profiling samples using metadata filters.

Features:

  • Filter by any metadata field
  • Pagination support via offset parameter
  • Optional pagination metadata with paginated=true
  • No truncation issues - safely handle large result sets

Example parameters:

  • ScientificName: Organism (e.g., "Homo sapiens", "Mus musculus")
  • TISSUE: Tissue type (e.g., "liver", "brain")
  • CELL_LINE: Cell line (e.g., "HEK293", "HeLa")
  • INHIBITOR: Translation inhibitor (e.g., "CHX", "harringtonine")
  • LIBRARYTYPE: Library type (e.g., "RPF", "RNA")
  • CONDITION: Experimental condition
  • limit: Maximum results (default: 100)
  • offset: Skip N results for pagination (default: 0)
  • paginated: Return metadata (total, has_more, etc.) - default: false

get_sample_details

Get complete metadata for a specific sample by its Run accession (e.g., "SRR123456").

get_file_links

Retrieve download URLs for all data files associated with a sample:

  • FASTA reads
  • BAM alignment files
  • BigWig coverage files (forward and reverse)
  • QC reports (FastQC, fastp, RiboMetric, adapter reports)

search_by_organism

Search all samples from a specific organism, with optional additional filters.

Now supports pagination via offset and paginated parameters.

list_available_fields

Get a list of all queryable metadata fields.

Example Usage with Claude

Once configured, you can ask Claude:

"How many human liver samples are in the database?"

Claude will use count_samples:

{
  "ScientificName": "Homo sapiens",
  "TISSUE": "liver"
}

Returns: {"count": 1234}

"Find all mouse brain samples with cycloheximide treatment"

Claude will use query_samples:

{
  "ScientificName": "Mus musculus",
  "TISSUE": "brain",
  "INHIBITOR": "CHX"
}

"Show me the next 100 results"

Claude will use query_samples with pagination:

{
  "ScientificName": "Mus musculus",
  "TISSUE": "brain",
  "INHIBITOR": "CHX",
  "offset": 100,
  "limit": 100
}

"Get the BigWig files for sample SRR8428520"

Claude will use get_file_links:

{
  "run_id": "SRR8428520"
}

Development

To modify or extend the MCP server:

  1. Edit the source files in src/riboseq_mcp/
  2. The main server logic is in server.py
  3. API client wrapper is in api_client.py

Project Structure

RDP-MCP-server/
├── pyproject.toml              # Package configuration
├── README.md                   # This file
└── src/
    └── riboseq_mcp/
        ├── __init__.py         # Package initialization
        ├── server.py           # MCP server implementation
        └── api_client.py       # RiboSeq API client

Troubleshooting

MCP server not appearing in Claude

  1. Check that your claude_desktop_config.json is valid JSON
  2. Verify the path to the RDP-MCP-server directory is correct
  3. Restart Claude Desktop completely
  4. Check Claude Desktop logs for errors

API connection errors

The server connects to https://rdp.ucc.ie by default. If the portal is down or unreachable, queries will fail. You can check the portal's status by visiting it in a browser.

Python version issues

Ensure you're using Python 3.10 or higher:

python --version

Contributing

This MCP server is part of the RiboSeq.Org Data Portal project. To contribute:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

[Same as RiboSeq.Org Data Portal]

Links

Support

For issues or questions:

  • Open an issue on the GitHub repository
  • Contact the RiboSeq.Org team through the portal

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

rdp_mcp-0.2.0.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

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

rdp_mcp-0.2.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file rdp_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: rdp_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for rdp_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 aee8dc31ef833518cd4f5d08cff3094e7d573ce0c07a5cddcbcc368759a4b0c6
MD5 26c494c5a4b5fb5c97fff61d59db2e40
BLAKE2b-256 ad4581d677ad4357e3abfcb97c038c861f19306fe807a2b5471084f33f3a60e4

See more details on using hashes here.

File details

Details for the file rdp_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: rdp_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for rdp_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 125589aa456d388263a9edf91d7b5349f51f774389614bec4d9f96b50c1f595f
MD5 fd51a344ff9ad08733891c804dc14d01
BLAKE2b-256 42743dd0e26c6515d82f7019854a3500a3cfe0af60a991ab9d5887b7ca17895b

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