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

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Analyze biomarker panels with an MD-led clinical engine. Guideline-cited. Synthetic data only.

  • Broad Institute gnomAD genomic variant database (GraphQL)

  • AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP

View all MCP Connectors

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/MacromNex/grnade_mcp'

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