Skip to main content
Glama
xxay-16

gene-family-mcp

by xxay-16

Gene Family MCP

Gene Family MCP 是一个纯 API 的基因家族分析服务,供 Codex、Claude Desktop 等 MCP 客户端调用。仓库只有两个运行单元:

MCP Client  <──stdio──>  mcp_server  <──HTTP/JSON──>  backend_service
                                                     ├── Django Ninja API
                                                     ├── django-q2 worker
                                                     ├── PlantCARE provider
                                                     └── 分析结果存储

mcp_server 处理 MCP 协议,backend_service 提供 Django Ninja API、django-q2 队列、分析程序适配器和 Artifact 存储。两者只通过 HTTP/JSON 通信。项目没有前端页面、Django 模板或 Admin 路由。

目前可以完成 FASTA 校验与标准化、MAFFT 多序列比对、FastTree 系统发育树和 PlantCARE 顺式作用元件预测。其中 run_sequence_phylogeny 已把 FASTA → MAFFT → FastTree 串成一个持久化工作流。BLAST/DIAMOND、HMMER、MEME、基因结构分析和 IQ-TREE 尚未接入,因此这还不是完整的基因家族鉴定流水线。

两个服务的职责

mcp_server

MCP 协议适配层,供 Codex、Claude Desktop 等 MCP 客户端连接。

它负责:

  • 注册 MCP tools。

  • 将工具调用转换成后端 HTTP 请求。

  • 返回结构化任务状态和结果。

  • 隐藏后端内部数据库、队列和 provider 实现。

它不直接访问数据库、邮箱、PlantCARE,也不执行生信程序。

当前 tools:

Tool

说明

backend_health

检查后端 API 是否可用

get_capabilities

查看可用分析能力与队列后端

validate_fasta

上传、校验并标准化 DNA 或蛋白 FASTA

align_sequences

使用 MAFFT 对规范化 FASTA Artifact 进行多序列比对

build_phylogenetic_tree

使用 FastTree 从 aligned FASTA 生成 Newick 树

run_sequence_phylogeny

一次启动 FASTA 校验、MAFFT 和 FastTree 持久化工作流

submit_cis_element_analysis

提交 DNA 启动子序列分析

get_job_status

查询业务任务状态与阶段

get_job_result

获取完成任务的结构化结果和产物

cancel_job

取消未结束任务

backend_service

无前端页面的 API 与任务后端。

它负责:

  • Django Ninja REST API。

  • 输入校验、任务创建和状态查询。

  • django-q2 worker 与任务执行。

  • PlantCARE HTTP 提交、IMAP 邮件回收和附件保存。

  • 后续本地生信工具与分析工作流。

当前 API:

方法

路径

说明

GET

/api/core/health

后端健康检查

GET

/api/core/capabilities

分析能力与执行后端

POST

/api/inputs/fasta

上传并按内容去重保存 FASTA 输入

GET

/api/inputs/{input_artifact_id}/download

下载原始输入

POST

/api/jobs

创建通用分析任务

GET

/api/jobs/{job_id}

查询业务任务

GET

/api/jobs?status=queued&limit=50

按状态列出任务

GET

/api/jobs/{job_id}/events

查询状态与 provider 事件

GET

/api/jobs/{job_id}/result

获取结果与产物清单

POST

/api/jobs/{job_id}/cancel

取消任务

GET

/api/artifacts/{artifact_id}/download

下载产物

POST

/api/cis-elements/submit

提交顺式作用元件分析

GET

/api/cis-elements/tasks/{task_id}

查询状态或结果

GET

/api/docs

OpenAPI 文档

仓库不再提供 HTML 预测页面和 Django Admin 路由。

Related MCP server: BioQC-MCP

目录结构

gene-family-mcp/
├── mcp_server/
│   ├── server.py             # MCP tools 和 stdio 入口
│   ├── backend_client.py     # 后端 HTTP client
│   ├── settings.py           # MCP 侧配置
│   └── requirements.txt
├── backend_service/
│   ├── config/               # Django 配置与 API 路由
│   ├── core/                 # 健康检查等基础 API
│   ├── cis_elements/         # PlantCARE API 与 provider 原型
│   ├── jobs/                 # 业务任务、事件、产物与 q2 worker 入口
│   │   └── local_tools/      # MAFFT、FastTree 适配器与能力探测
│   ├── scripts/              # PlantCARE 独立调试脚本
│   ├── tests/fixtures/       # 测试输入
│   ├── manage.py
│   └── requirements.txt
├── docs/
│   ├── architecture.md       # 架构边界与演进方案
│   ├── operations.md         # 部署、备份与故障排查
│   └── plantcare-cli.md      # 独立脚本使用说明
└── README.md

快速开始

1. 创建虚拟环境

python -m venv venv
.\venv\Scripts\python.exe -m pip install -r .\requirements-dev.txt

2. 配置后端

本地开发可以直接使用 SQLite。建议至少为 API 配置一个随机 Token,并让 MCP 使用同一个值:

$env:BACKEND_API_TOKEN = "replace-with-a-random-token"
$env:GENE_FAMILY_BACKEND_TOKEN = $env:BACKEND_API_TOKEN

FASTA 校验不依赖外部程序。本机运行 MAFFT 和 FastTree 时,可按安装位置覆盖可执行文件名称或绝对路径:

$env:MAFFT_EXECUTABLE = "mafft"
$env:FASTTREE_EXECUTABLE = "FastTree"

Docker 后端镜像已经安装 MAFFT 和 FastTree。本机是否可用以 /api/core/capabilities 的实时探测结果为准。

只有使用 PlantCARE 时才需要配置邮箱。应填写 IMAP 授权码,不要使用网页登录密码:

$env:PLANTCARE_EMAIL = "your-email@qq.com"
$env:PLANTCARE_AUTH_CODE = "your-imap-auth-code"
$env:PLANTCARE_IMAP_HOST = "imap.qq.com"

3. 启动后端 API

Set-Location .\backend_service
..\venv\Scripts\python.exe manage.py migrate
..\venv\Scripts\python.exe manage.py runserver

后端默认地址为 http://127.0.0.1:8000/api

4. 启动 worker

在第二个终端执行:

Set-Location .\backend_service
..\venv\Scripts\python.exe manage.py qcluster

5. 启动 MCP Server

在第三个终端回到仓库根目录:

$env:GENE_FAMILY_BACKEND_URL = "http://127.0.0.1:8000/api"
.\venv\Scripts\python.exe -m mcp_server.server

MCP Server 默认使用 stdio transport。客户端配置时,命令应指向虚拟环境 Python,参数为 -m mcp_server.server,工作目录为仓库根目录。

提交工具支持可选 idempotency_key。相同分析类型和幂等键会返回原业务任务,不会重复提交 django-q2 或 PlantCARE。 相同幂等键如果携带不同参数会返回 IDEMPOTENCY_CONFLICT。后端还可以通过 MAX_SEQUENCE_LENGTHMAX_ACTIVE_JOBS 限制输入与活跃任务容量。

API 示例

以下示例假设后端已配置 BACKEND_API_TOKEN

$headers = @{ Authorization = "Bearer $env:BACKEND_API_TOKEN" }

使用通用任务接口提交分析:

$body = @{
  analysis_type = "cis_elements"
  parameters = @{ sequence = "ACGTACGTNNACGT" }
} | ConvertTo-Json -Depth 3
Invoke-RestMethod `
  -Method Post `
  -Uri http://127.0.0.1:8000/api/jobs `
  -Headers $headers `
  -ContentType application/json `
  -Body $body

查询状态:

Invoke-RestMethod `
  -Uri http://127.0.0.1:8000/api/jobs/<job_id> `
  -Headers $headers

FASTA 输入先创建 content-addressed Input Artifact,再提交异步任务:

$input = Invoke-RestMethod `
  -Method Post `
  -Uri http://127.0.0.1:8000/api/inputs/fasta `
  -Headers $headers `
  -ContentType application/json `
  -Body (@{
    filename = "family.fa"
    content = ">gene1`nACGTACGT`n>gene2`nACGTTCGT`n>gene3`nACGGACGT`n"
  } | ConvertTo-Json)

$jobBody = @{
  analysis_type = "fasta_validation"
  parameters = @{
    input_artifact_id = $input.input_artifact_id
    alphabet = "auto"
  }
} | ConvertTo-Json -Depth 3

Invoke-RestMethod `
  -Method Post `
  -Uri http://127.0.0.1:8000/api/jobs `
  -Headers $headers `
  -ContentType application/json `
  -Body $jobBody

fasta_validation 检查 FASTA 结构、唯一标识符、DNA/蛋白字母表和容量限制。成功后返回记录数、总残基数、长度统计、检测字母表、DNA GC 比例,以及 normalized_fastafasta_validation_summary 两种 Artifact。

normalized_fastaartifact_id 提交为 multiple_sequence_alignment,即可使用 MAFFT 生成 aligned_fasta。支持 autolinsiginsieinsi 策略;运行前应查询 /api/core/capabilities,因为本机安装模式下 MAFFT 是可选依赖,生产 Docker 镜像则已显式安装。

aligned_fastaartifact_id 提交为 phylogenetic_tree,FastTree 会生成经过语法、叶数和安全标签校验的 Newick Artifact。DNA 支持 auto/gtr/jc,蛋白支持 auto/jtt/lg/wagauto 分别选择 GTR 和 LG。

run_sequence_phylogeny 将上述三步组合为一个持久化父任务。父任务使用稳定 UUID,响应中的 workflow_steps 显示每个子任务;django-q2 Schedule 每分钟推进已完成依赖,因此 API/worker 重启后仍可继续。最终结果聚合记录数、字母表、比对长度、树叶数和 Newick Artifact。

使用刚才创建的 $input 可以直接启动完整工作流:

$workflowBody = @{
  analysis_type = "sequence_phylogeny"
  parameters = @{
    input_artifact_id = $input.input_artifact_id
    alphabet = "dna"
    alignment_strategy = "auto"
    tree_model = "auto"
    threads = 2
  }
} | ConvertTo-Json -Depth 3

Invoke-RestMethod `
  -Method Post `
  -Uri http://127.0.0.1:8000/api/jobs `
  -Headers $headers `
  -ContentType application/json `
  -Body $workflowBody

对应的 MCP 调用是 run_sequence_phylogeny(fasta, alphabet, alignment_strategy, tree_model, threads, filename, idempotency_key)。调用后用返回的父 job_id 查询 get_job_statusget_job_result

目标分析流程

flowchart LR
    A["输入序列或基因 ID"] --> B["标准化与校验"]
    B --> C["同源检索"]
    C --> D["结构域验证"]
    D --> E["多序列比对"]
    E --> F["系统发育树"]
    D --> G["基因结构与保守基序"]
    D --> H["启动子顺式元件"]
    F --> I["家族结果与报告"]
    G --> I
    H --> I

当前已实现输入标准化、多序列比对、FastTree 建树和 PlantCARE;同源检索、结构域验证、基因结构、保守基序和完整报告仍是规划能力。后端负责执行和持久化已接入的流程,MCP 只提供稳定的工具接口。

下一阶段

  • 建立业务级 AnalysisJobArtifactAnalysisEvent 表。

  • 将 PlantCARE 长时间邮箱等待改为 django-q2 Schedule 周期检查。

  • 使用业务 UUID 和持久化状态解决任务查询问题。

  • 为 MCP 与后端通信增加认证、稳定错误码和超时策略。

  • 增加后端 Bearer Token、MCP 凭据转发、请求 ID 与幂等提交。

  • 增加单元测试、API 集成测试和 MCP 工具测试。

  • 增加 FASTA 输入 Artifact、校验、标准化与下载 API。

  • 安全解析 PlantCARE 归档与 .tab,生成结构化 JSON Artifact。

  • 接入 MAFFT 多序列比对 adapter、能力探测和 Artifact 溯源。

  • 接入 FastTree 系统发育 adapter、Newick 校验和 Artifact 溯源。

  • 建立可恢复的 FASTA → MAFFT → FastTree django-q2 工作流。

  • 接入 BLAST/DIAMOND、HMMER 和高精度 IQ-TREE。

工程检查

Windows 开发环境可以运行:

.\scripts\check.ps1

该命令执行 Django 系统检查、迁移漂移检查、后端测试、MCP 测试、Python 编译和 Git diff 检查。GitHub Actions 会在 push 和 pull request 时执行对应检查。

更详细的状态模型、数据模型和迁移计划见 架构文档。 生产进程、Docker Compose、备份和故障排查见 运行与部署手册

安全说明

  • 不要提交邮箱授权码和 .env

  • MCP Server 不应接触 provider 密钥。

  • 后端响应不应暴露邮箱正文、绝对路径或完整 traceback。

  • 正式部署需要关闭 Django DEBUG、设置随机密钥,并配置非空的 BACKEND_API_TOKEN

License

项目尚未添加开源许可证。公开发布前需要明确许可证,并核对 PlantCARE 及后续生信工具和数据库的使用条款。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    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
    A professional MCP server for comprehensive bioinformatics quality control, providing automated FastQC/MultiQC analysis, HTML report parsing, and advanced data visualization for sequencing data.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for querying gene annotations, full-text gene search, and species taxonomy via MyGene.info. Enables AI agents to access gene data through natural language questions.
    3 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server offering verified bioinformatics tools for sequence utilities and statistics, backed by BioPython/scipy. Enables AI agents to perform accurate GC content, translation, ORF finding, motif scanning, and statistical tests through natural language.
    11
    MIT