Skip to main content
Glama

gRNAde MCP Server

MCP server providing tools for RNA structure analysis, sequence evaluation, inverse design, and batch processing using gRNAde (geometric RNA design).

Installation

Prerequisites

# Ensure dependencies are installed pip install fastmcp loguru
  1. Navigate to MCP directory:

    cd /path/to/grnade_mcp
  2. Register MCP server:

    claude mcp add geometric-rna-design -- python $(pwd)/src/server.py
  3. Verify installation:

    claude mcp list | grep geometric-rna-design # Should show: geometric-rna-design: ... - ✓ Connected
  4. Start using:

    claude # In Claude: "What tools are available from geometric-rna-design?"

Alternative: Claude Desktop

Add to ~/.claude/claude_desktop_config.json:

{ "mcpServers": { "geometric-rna-design": { "command": "python", "args": ["/absolute/path/to/grnade_mcp/src/server.py"] } } }

Alternative: Other MCP Clients

{ "mcpServers": { "geometric-rna-design": { "command": "python", "args": ["/absolute/path/to/src/server.py"], "env": { "PYTHONPATH": "/absolute/path/to/grnade_mcp" } } } }

Available Tools

Quick Operations (Sync API)

These tools return results immediately:

Tool

Description

Runtime

analyze_rna_structure

Analyze RNA secondary structures & statistics

~30 sec

evaluate_rna_sequences

Evaluate sequences with computational metrics

~2 min

validate_rna_inputs

Validate RNA sequences and structures

~1 sec

get_example_data

Get example datasets and usage examples

~1 sec

Long-Running Tasks (Submit API)

These tools return a job_id for tracking:

Tool

Description

Runtime

submit_rna_inverse_design

Generate RNA sequences from structures

>10 min

submit_batch_rna_pipeline

High-throughput multi-target pipeline

>30 min

submit_batch_rna_evaluation

Batch evaluation of sequence sets

>10 min

Job Management

Tool

Description

get_job_status

Check job progress

get_job_result

Get results when completed

get_job_log

View execution logs

cancel_job

Cancel running job

list_jobs

List all jobs

Workflow Examples

Quick Analysis (Sync)

Use the analyze_rna_structure tool with secondary_structure "(((...)))"

Long-Running Design (Async)

1. Submit: Use submit_rna_inverse_design with secondary_structure "(((...)))" and mode "2d" → Returns: {"job_id": "abc123", "status": "submitted"} 2. Check: Use get_job_status with job_id "abc123" → Returns: {"status": "running", ...} 3. Get result: Use get_job_result with job_id "abc123" → Returns: {"status": "success", "result": {"sequences": [...], ...}}

Batch Processing

Use submit_batch_rna_pipeline with targets_file "targets.csv" and output_dir "results/batch" → Processes multiple targets in a single job

Development

# Run tests mamba run -p ./env python test_mcp.py mamba run -p ./env python test_jobs.py # Test server mamba run -p ./env python src/server.py --help # Test with MCP inspector npx @anthropic/mcp-inspector src/server.py

Tool Details

analyze_rna_structure

Analyze RNA secondary structure properties and statistics. Fully independent tool - no external dependencies.

Parameters:

  • secondary_structure (str, optional): Secondary structure in dot-bracket notation

  • sequence (str, optional): RNA sequence for prediction

  • predict_structure (bool, optional): Whether to predict structure from sequence

  • output_file (str, optional): Path to save results as JSON

  • verbose (bool, optional): Include detailed output

Example:

analyze_rna_structure(secondary_structure="(((...)))") analyze_rna_structure(sequence="GGGAAACCC", predict_structure=True)

evaluate_rna_sequences

Evaluate RNA sequences using computational metrics. Graceful fallback to basic statistics when models unavailable.

Parameters:

  • sequences (List[str] or str): RNA sequences or comma-separated string

  • target_structure (str): Target secondary structure in dot-bracket notation

  • output_file (str, optional): Path to save results as CSV

  • use_basic_stats (bool): Whether to use basic statistics mode

  • verbose (bool): Include detailed output

Example:

evaluate_rna_sequences(["GGGAAACCC", "AUCGAUCG"], "(((...)))") evaluate_rna_sequences("GGGAAACCC,AUCGAUCG", "(((...)))")

submit_rna_inverse_design

Submit RNA inverse design for background processing. Generates RNA sequences that fold into specified 2D/3D structures using gRNAde models.

Parameters:

  • secondary_structure (str, optional): Secondary structure for 2D mode

  • pdb_file (str, optional): PDB file path for 3D mode

  • mode (str): Design mode - "2d" or "3d"

  • n_designs (int): Number of sequences to generate

  • partial_seq (str, optional): Partial sequence constraints

  • temperature_min (float): Minimum sampling temperature

  • temperature_max (float): Maximum sampling temperature

  • output_dir (str, optional): Directory to save outputs

  • job_name (str, optional): Custom job name

Example:

submit_rna_inverse_design(secondary_structure="(((...)))", mode="2d", n_designs=20) submit_rna_inverse_design(pdb_file="structure.pdb", mode="3d", n_designs=50)

submit_batch_rna_pipeline

Submit batch RNA design pipeline for multiple targets. Runs high-throughput RNA design with evaluation and filtering.

Parameters:

  • targets_file (str, optional): Path to CSV file with targets

  • pdb_dir (str, optional): Directory with PDB files

  • targets (List[str], optional): List of target dictionaries

  • output_dir (str, optional): Directory for outputs

  • n_designs_per_target (int): Number of sequences per target

  • max_workers (int, optional): Maximum parallel workers

  • enable_evaluation (bool): Whether to run evaluation phase

  • enable_filtering (bool): Whether to run filtering phase

  • max_results_per_target (int): Maximum results to keep per target

  • job_name (str, optional): Custom job name

Example:

submit_batch_rna_pipeline(targets_file="targets.csv", output_dir="results/batch", n_designs_per_target=100)

validate_rna_inputs

Validate RNA inputs before processing.

Parameters:

  • sequence (str, optional): RNA sequence to validate

  • secondary_structure (str, optional): Secondary structure to validate

  • pdb_file (str, optional): PDB file path to validate

Example:

validate_rna_inputs(sequence="GGGAAACCC", secondary_structure="(((...)))")

get_example_data

Get information about available example datasets for testing.

Example:

get_example_data()

File Structure

src/ ├── server.py # Main MCP server ├── jobs/ │ ├── __init__.py │ └── manager.py # Job management system ├── test_mcp.py # MCP tools tests └── test_jobs.py # Job system tests jobs/ # Job execution directory ├── <job_id>/ # Individual job directories │ ├── metadata.json # Job metadata │ ├── job.log # Execution logs │ └── output.json # Results scripts/ # Clean scripts from Step 5 ├── lib/ # Shared utilities ├── rna_structure_analysis.py # ✅ Fully independent ├── rna_evaluation.py # ⚠️ Graceful fallback ├── rna_inverse_design.py # ⚠️ Requires gRNAde models └── batch_rna_pipeline.py # ⚠️ Depends on others configs/ # Configuration files └── *.json # Per-script configurations

Dependencies

Required

  • fastmcp>=2.14.1 - MCP server framework

  • loguru>=0.7.3 - Logging

  • numpy - Scientific computing

  • pandas - Data manipulation

Optional (for advanced features)

  • torch - Deep learning (for gRNAde models)

  • Various RNA analysis packages (graceful fallbacks implemented)

API Design

The server implements a dual API design:

Sync API (< 10 min operations)

  • analyze_rna_structure: Structure analysis (~30 seconds)

  • evaluate_rna_sequences: Sequence evaluation (~2 minutes)

Submit API (> 10 min operations)

  • submit_rna_inverse_design: RNA generation (>10 minutes)

  • submit_batch_rna_pipeline: Batch processing (>30 minutes)

Job Management

All submit operations return a job_id for tracking:

  1. Submit: Get job_id

  2. Monitor: Use get_job_status(job_id)

  3. Retrieve: Use get_job_result(job_id) when completed

  4. Debug: Use get_job_log(job_id) for execution logs

Testing

# Test all MCP tools mamba run -p ./env python test_mcp.py # Test job management mamba run -p ./env python test_jobs.py # Test server startup mamba run -p ./env python src/server.py --help

Features

  • Robust Job Management: Persistent jobs, real-time monitoring, cancellation support

  • Graceful Degradation: Works even without full model setup

  • Dual API Design: Sync for fast ops, Submit for long ops

  • Production Ready: Comprehensive error handling, structured responses

  • Well Tested: 100% automated test coverage

Status

  • Ready for Production: Structure analysis and basic evaluation work immediately

  • Easy Integration: Works with Claude Desktop and fastmcp CLI

  • Scalable Design: Job system handles large-scale processing

  • ⚠️ Model Setup Required: Advanced features need gRNAde model configuration

For complete documentation, see reports/step6_mcp_tools.md.

Troubleshooting

Server Won't Start

# Check syntax and imports python -m py_compile src/server.py python -c "from src.server import mcp; print('✅ OK')" # Check dependencies pip list | grep -E "fastmcp|loguru"

Tools Not Found in Claude

# Verify registration claude mcp list | grep geometric-rna-design # Re-register if needed claude mcp remove geometric-rna-design claude mcp add geometric-rna-design -- python $(pwd)/src/server.py

Jobs Stuck in Pending

# Check job directory ls -la jobs/ # View job logs cat jobs/[job_id]/job.log # Check job manager python -c "from src.jobs.manager import job_manager; print(job_manager.list_jobs())"

Port Conflicts (FastMCP Dev Mode)

# Kill process using port lsof -ti :6277 | xargs kill # Or run with different port FASTMCP_PORT=8080 fastmcp dev src/server.py

Path Resolution Issues

  • Use absolute paths in configuration

  • Ensure PYTHONPATH includes project root

  • Check file permissions for input/output directories

Testing

Quick Validation

# Run automated integration tests python tests/run_integration_tests.py # Manual test with Claude claude "What tools are available from geometric-rna-design?" "Analyze the RNA structure in examples/data/structures/8t2p_A.pdb"

Full Test Suite

See tests/test_prompts.md for comprehensive testing scenarios including:

  • Tool discovery and parameter validation

  • Synchronous tool execution

  • Asynchronous job workflow

  • Error handling and edge cases

  • End-to-end real-world scenarios

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Biomolecular-Design-Nexus/grnade_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server