This is an MCP server that provides a comprehensive interface to the RNAcentral database, allowing for complex searches, sequence mapping, genomic analysis, and metadata retrieval for non-coding RNA sequences.
- Comprehensive Search: Query RNAcentral using natural language or filters (RNA type, taxon, expert database). Combines EBI Search and RNAcentral API data for enriched metadata (Rfam hits, GO annotations).
- Sequence Search: Search for RNA sequences across multiple databases to find identical or similar entries.
- Bidirectional ID Mapping: Map between RNAcentral URS IDs and external database identifiers (miRBase, Ensembl, HGNC, etc.) with automatic taxonomy resolution.
- Bulk Sequence Export: Export search results in FASTA or Parquet formats, ideal for downstream analysis or machine learning datasets.
- Genomic Overlap (Ensembl): Find non-coding RNAs overlapping specific genomic coordinates or gene symbols using Ensembl's GraphQL integration.
- 2D Structure Diagrams: Retrieve secondary structure (2D) diagrams in SVG format for RNAs with known or predicted folds.
- Literature Summaries: Access AI-generated literature summaries for RNA sequences to understand their biological context.
- Python 3.10 or higher
- uv (recommended) or pip
- Set up a Python environment:
# Using uv (recommended)
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Add dependencies
uv add "mcp[cli]" aiohttp- Install the package in editable mode:
uv pip install -e .mcp dev rnacentral_sequence_search/server.pyThis will start the server and open the MCP Inspector, allowing you to test the server interactively.
To install the server in Claude Desktop, add this to your claude_desktop_config.json. You can optionally specify a --log-dir to save logs to a specific directory:
{
"mcpServers": {
"rnacentral": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/rnacentral/rnacentral-mcp-server.git",
"run-server",
"--log-dir",
"/Users/YOUR_USERNAME/logs/rnacentral"
]
}
}
}You can run the server directly using Python. Use the --log-dir argument to specify where to save log files:
python rnacentral_sequence_search/server.py --log-dir ./logsOr using the installed script:
run-server --log-dir ./logsOnce the server is running, you can interact with various tools:
Map an external ID to RNAcentral and see all cross-references:
Tool: map_rna_id
Arguments:
{
"identifier": "MIMAT0000062",
"taxon": "Homo sapiens"
}
Find ncRNAs overlapping a specific gene in human:
Tool: get_overlapping_ncrnas
Arguments:
{
"species": "human",
"gene_symbol": "HOTAIR"
}
Get the secondary structure diagram for a specific URS ID:
Tool: get_secondary_structure_svg
Arguments:
{
"urs_id": "URS0000049E57"
}
Export a set of sequences matching a search query for machine learning:
Tool: export_sequences
Arguments:
{
"query": "lncRNA",
"taxon": "9606",
"format": "parquet",
"max_length": 500
}
Get a summary of the known biological role of an RNA:
Tool: get_rna_description
Arguments:
{
"rna_id": "mmu-mir-191"
}
- The server handles complex queries by orchestrating multiple upstream APIs (EBI Search, RNAcentral, Ensembl).
- Sequence searches poll for results with a timeout to handle varying server loads.
- The 2D structure SVG can be used for direct visualization in supporting clients.
- For very large exports, use the
export_sequencestool which uses specialized microservices for efficiency.