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 及后续生信工具和数据库的使用条款。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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.
    15
    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

View all related MCP servers

Related MCP Connectors

  • MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.

  • MCP server for Wan AI video generation

  • Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries

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/xxay-16/gene-family-mcp'

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