Skip to main content
Glama

biotools-mcp

Verified bioinformatics tools for AI agents — sequence utilities + statistics, backed by BioPython/scipy, exposed as an MCP server, companion Skill, and Python package.

PyPI version Python versions License: MIT CI

MIT · public · benchmarked.

Research agents hallucinate bioinformatics math. This project builds the missing layer: battle-tested scientific computation wrapped in a clean, agent-native surface.

What's inside

  • Sequence utilities — GC content, reverse complement, translation, ORF finding, motif scanning, sequence stats (BioPython-backed; ORF finder + motif-overlap are custom logic, checked against independent references).

  • Statistics — descriptive stats, t-test, chi-square, Mann–Whitney U, correlation (scipy-backed, reference-vector tested against published/R values).

  • MCP server — stdio + streamable HTTP, 11 action-oriented tools (seq_gc_content, stats_t_test, …), pydantic v2 schemas with structured output.

  • Companion Skill — agentskills.io spec: when to use which tool, input requirements, and what not to do.

Every tool is reference-vector tested against published values (GenBank records, R t.test output, Mendel's 1866 pea counts, Anscombe's quartet) — never against the wrapper itself.

Related MCP server: protein-design-mcp

Install

Published on PyPI as biotools-mcp (requires Python 3.11+).

# Install as a standalone CLI (MCP server entry point)
uv tool install biotools-mcp

# Or run without installing
uvx biotools-mcp

# Or plain pip
pip install biotools-mcp

As a library:

uv add biotools-mcp
from biotools_mcp.seq import gc_content
from biotools_mcp.stats import t_test

print(gc_content("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG").gc_percent)  # 56.4103
print(t_test([1, 2, 3], [4, 5, 6]).statistic)                          # -3.6742

MCP configuration

Point your agent at the server over stdio:

Claude Code (.mcp.json):

{
  "mcpServers": {
    "biotools-mcp": {
      "command": "uvx",
      "args": ["biotools-mcp"]
    }
  }
}

Cursor — Settings → MCP → Add:

{
  "mcpServers": {
    "biotools-mcp": {
      "command": "uvx",
      "args": ["biotools-mcp"]
    }
  }
}

Codex / Gemini CLI — same mcpServers block in the agent's MCP config file.

Streamable HTTP (for remote use):

uvx biotools-mcp --transport streamable-http

Tools

Tool

Description

seq_gc_content

GC content as a percentage (ambiguous bases excluded)

seq_reverse_complement

Reverse complement (IUPAC-aware, DNA/RNA)

seq_translate

Translate to protein (NCBI tables, incl. mitochondrial)

seq_orf_finder

Open reading frames, forward strand, frames 0–2

seq_motif_scan

IUPAC motif scanning with bracket groups + overlap policy

seq_stats

Length, mono/di composition, GC skew

stats_describe

Descriptive statistics (n, mean, median, var, skew, kurtosis)

stats_t_test

Student/Welch two-sample t-test with Cohen's d

stats_chi_square

Chi-square test of independence (Yates optional)

stats_mann_whitney

Mann-Whitney U test (exact/asymptotic)

stats_correlation

Pearson or Spearman correlation

Benchmarks

Wedge subset of BioAgent Bench + BioTaskBench (sequence utilities + statistics) run against the tools and published in benchmarks/results.md. Every task in the subset runs — failures are published alongside passes.

Current: 15/15 passed (100%) — bioagent-bench subset 7/7, bioTaskBench subset 8/8. Pinned harness, see the results file for task-level detail.

uv run python benchmarks/run_bioagent_bench.py    # 7/7
uv run python benchmarks/run_biotaskbench.py      # 8/8
uv run python benchmarks/harness.py --suite all   # combined 15/15

Companion Skill

The skills/biotools-mcp skill (agentskills.io spec) teaches agents the tool inventory, when to use which tool, input requirements, and what not to do (never compute GC/translation/t-tests by hand). Load it into any skills-compatible agent.

Documented solutions

Past problems and the patterns they produced live in docs/solutions — including the uvx grandchild-process leak in subprocess tests, mcp SDK v2 tool-registration conventions, and the CI matrix Python-version trap. Relevant when implementing or debugging in those areas.

Development

uv sync --extra dev
uv run pytest          # reference-vector suite (skips slow packaging by default)
uv run python benchmarks/harness.py --suite all   # regenerate benchmark results
uvx ruff check src tests benchmarks

CI runs lint + tests on Python 3.11/3.12; a nightly workflow regenerates the benchmark table; a tag-pushed v* triggers the PyPI publish workflow.

Contributing

See CONTRIBUTING.md — verification is non-circular (reference-vector fixtures from published values), degenerate inputs must fail loudly, and benchmark tasks are never dropped to keep numbers green. Changes are tracked in CHANGELOG.md.

License

MIT — see LICENSE.

Available Tools

11 tools
seq_gc_contentGC ContentA
Read-onlyIdempotent

Compute GC content of a nucleotide sequence as a percentage (0-100).

Inputs: sequence (required). Returns: Result of GC content analysis.

seq_motif_scanMotif ScanA
Read-onlyIdempotent

Scan a nucleotide sequence for IUPAC motif occurrences (supports bracket groups).

Inputs: motif (required), sequence (required), max_matches, overlapping. Returns: Result of motif scanning.

seq_orf_finderORF FinderA
Read-onlyIdempotent

Find open reading frames (forward strand, frames 0-2) in a nucleotide sequence.

Inputs: sequence (required), min_length. Returns: Result of ORF finding.

seq_reverse_complementReverse ComplementA
Read-onlyIdempotent

Compute the reverse complement of a nucleotide sequence (DNA or RNA).

Inputs: sequence (required). Returns: Result of reverse complement computation.

seq_statsSequence StatisticsA
Read-onlyIdempotent

Compute sequence length, mono/dinucleotide composition, and GC skew.

Inputs: sequence (required). Returns: Result of sequence statistics.

seq_translateTranslateA
Read-onlyIdempotent

Translate a nucleotide sequence to protein using an NCBI genetic code table.

Inputs: sequence (required), to_stop, table_id. Returns: Result of DNA/RNA translation.

stats_chi_squareChi-Square TestA
Read-onlyIdempotent

Run a chi-square test of independence on a contingency table (Yates correction optional).

Inputs: table (required), correction. Returns: Result of a chi-square contingency test.

stats_correlationCorrelationA
Read-onlyIdempotent

Compute Pearson or Spearman correlation between two paired variables.

Inputs: x (required), y (required), method. Returns: Result of a Pearson or Spearman correlation.

stats_describeDescriptive StatisticsA
Read-onlyIdempotent

Compute descriptive statistics (n, min, max, mean, median, variance, std, skew, kurtosis).

Inputs: data (required). Returns: Result of descriptive statistics.

stats_mann_whitneyMann-Whitney U TestA
Read-onlyIdempotent

Run a Mann-Whitney U test on two independent groups.

Inputs: group_a (required), group_b (required), alternative. Returns: Result of a Mann-Whitney U test.

stats_t_testTwo-Sample t-TestA
Read-onlyIdempotent

Run a two-sample Student or Welch t-test with Cohen's d effect size.

Inputs: group_a (required), group_b (required), equal_var, alternative. Returns: Result of a two-sample t-test.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool has a distinct purpose within its domain. The seq_* tools cover motif scanning, GC content, reverse complement, translation, ORF finding, and sequence stats with no overlap. The stats_* tools cover descriptive statistics, t-test, chi-square, Mann-Whitney, and correlation, also without ambiguity. The two domains are clearly separated by prefix and description.

    Naming Consistency4/5

    Tool names follow a consistent domain-prefix pattern: seq_ for sequence operations and stats_ for statistical tests. However, within each prefix, the naming style is mixed (e.g., seq_translate is a verb, seq_orf_finder is a noun; stats_describe is a verb, stats_t_test is a noun). This minor inconsistency lowers the score from 5 to 4, but the prefix convention makes names predictable.

    Tool Count5/5

    With 11 tools, the server is well-scoped for a bioinformatics toolkit. It covers a reasonable set of sequence analysis functions and common statistical tests without being bloated. The count falls well within the ideal range for a focused utility server.

    Completeness4/5

    The tool surface covers core sequence operations (translation, reverse complement, GC content, motif scanning, ORF finding, and stats) and common statistical tests (descriptive, t-test, chi-square, Mann-Whitney, correlation). Minor gaps exist, such as sequence alignment or advanced statistical tests like ANOVA, but agents can perform most basic workflows without dead ends.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables scRNA-Seq analysis through natural language, providing tools for data preprocessing, clustering, and biological visualization. It supports both predefined function execution and a flexible code mode powered by a Jupyter backend for automated single-cell transcriptomics workflows.
      16
      BSD 3-Clause
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP-native scientific skills for reproducible computational biology and AI-driven drug-discovery workflows. It combines deterministic scientific tools with an MCP server to give AI agents real computational capabilities.
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      A statistical analysis MCP server offering 30 tools for descriptive statistics, hypothesis tests, regression, and time series, all returning Markdown reports with automatic interpretations to enable AI agents to perform comprehensive data analysis.
      MIT