Skip to main content
Glama

blastp_mcp

blastp_mcp 将 NCBI BLAST+ 的 blastp 包装为 FastMCP 服务,提供可审计的蛋白质同源性搜索,支持本地产物输出、结构化元数据和数据库状态查询。

设计理念

每次搜索都是可追溯的运行记录。blastp_mcp 不会只返回结果然后丢弃中间产物——它会将查询序列、BLAST 命令参数、标准输出/错误日志、原始 outfmt7 结果、CSV 命中和候选 FASTA 全部写入 runs/<run_id>/ 目录,形成可复查、可重放的运行档案。

Related MCP server: Bio-MCP BLAST

项目结构

blastp_mcp/
├── src/
│   ├── server.py          # FastMCP 服务入口,注册 7 个工具
│   ├── blast_service.py   # 核心搜索逻辑:序列解析、参数校验、blastp 调用
│   ├── blast_process.py   # outfmt7 解析 → CSV + 候选 FASTA
│   ├── db_manager.py      # BLAST 数据库管理:别名解析、状态检查、文件扫描
│   └── job_manager.py     # 异步任务管理:提交、状态、结果、日志、取消
├── tests/                 # 测试文件
├── examples/              # 示例 FASTA 序列
├── fixtures/              # 测试用 outfmt7 样本
├── quick_setup.sh         # 一键环境安装脚本
└── requirements.txt

MCP 工具

工具

说明

list_databases()

报告 swissprot、refseq、nr 三个数据库的状态,无需下载大型数据库

search_homology_quick(sequence, ...)

在 SwissProt 上运行限时 BLASTP 搜索,适合快速交互式查询

submit_homology_search(sequence, ...)

提交异步 BLASTP 任务,支持 tiered/swissprot/refseq/nr 数据库

get_blast_job_status(job_id)

查询异步任务状态和元数据

get_blast_job_result(job_id)

获取异步任务完整结果

get_blast_job_log(job_id)

获取任务的标准输出和标准错误日志

cancel_blast_job(job_id)

取消正在运行或排队中的任务

工具参数

search_homology_quick

  • sequence(必填):蛋白质序列,支持 FASTA 格式或纯序列

  • evalue:E 值阈值,默认 1e-5

  • max_target_seqs:最大返回命中数,默认 20

  • include_alignments:是否包含比对详情,默认 false

submit_homology_search

  • sequence(必填):蛋白质序列

  • database:目标数据库,可选 tiered(默认,从 SwissProt 开始分级搜索)、swissprotrefseqnr

  • evalue:E 值阈值,默认 1e-5

  • max_target_seqs:最大返回命中数,默认 50

  • num_threads:CPU 线程数,默认 4

  • include_alignments:是否包含比对详情,默认 false

快速开始

Linux/macOS 或已安装 Git Bash 的 Windows:

bash quick_setup.sh

Windows PowerShell:

.\quick_setup.ps1

安装脚本会自动完成以下步骤:

  1. 创建 Python 虚拟环境 ./env/

  2. 安装 Python 依赖

  3. 检查 blastpmakeblastdbblastdbcmdupdate_blastdb.pl 是否可用;如果缺失,会从 NCBI 官方 BLAST+ LATEST 目录下载当前平台对应的 standalone BLAST+ 包,并安装到本仓库本地 ./tools/

  4. 下载并验证 SwissProt 数据库

数据库存储路径由环境变量 BLAST_DB_DIR 指定,未设置时默认使用 ./db/

BLAST+ 安装路径由 BLAST_TOOLS_DIR 指定,未设置时默认使用 ./tools/。如果运行环境已经安装 BLAST+,可以通过 BLAST_BIN_DIR=/path/to/ncbi-blast/bin 直接指定。若需要关闭自动安装,可设置 BLAST_MCP_AUTO_INSTALL_BLAST=0。高级场景下也可以用 BLAST_PLUS_URL 指定固定版本的 NCBI BLAST+ tar.gz 下载地址。

数据库策略

数据库

大小

默认安装

说明

SwissProt

~数百 MB

自动安装

最小可用的真实蛋白质 BLAST 数据库,适合快速搜索

RefSeq Protein

~数十 GB

不自动下载

需手动准备 refseq_protein

nr

~数百 GB

不自动下载

非冗余蛋白序列数据库,需手动准备

手动安装大型数据库

将 BLAST 数据库文件放入 BLAST_DB_DIR 目录,使用对应的实际数据库名称:

  • refseq 别名 → refseq_protein

  • nr 别名 → nr

# 在确认存储空间、网络条件和审批后执行
update_blastdb.pl --decompress refseq_protein
update_blastdb.pl --decompress nr

Tiered 分级搜索

database 设为 tiered(默认)时,系统先从 SwissProt 开始搜索:

  • 如果命中结果 > 0,直接返回,不再搜索更大的数据库

  • 如果没有命中,返回 partial 状态并提示 RefSeq/nr 未下载,建议手动准备后重试

运行产物

每次搜索在 runs/<run_id>/ 下生成完整档案:

runs/<run_id>/
├── query.fasta              # 查询序列(含 SHA256 哈希)
├── blast_command.json       # 完整命令行参数和环境元数据
├── blast_stdout.log         # blastp 标准输出
├── blast_stderr.log         # blastp 标准错误
├── blast_results.outfmt7    # BLAST outfmt 7 格式原始结果
├── blast_hits.csv           # 结构化命中表格
├── candidates/              # 逐条候选序列 FASTA
├── candidates.fasta         # 合并候选序列 FASTA
└── result_summary.json      # 最终结果摘要

BLAST 输出使用 outfmt 7 格式,字段包括 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore stitle sseqblast_process.py 负责解析并生成 CSV 和候选 FASTA。

环境变量

变量

默认值

说明

BLAST_DB_DIR

./db/

数据库存放目录

BLAST_BIN_DIR

额外的 BLAST 二进制文件搜索路径

BLAST_TOOLS_DIR

./tools/

自动安装 NCBI BLAST+ 的本地目录

BLAST_PLUS_URL

固定版本 NCBI BLAST+ tar.gz 下载地址,未设置时使用官方 LATEST

BLAST_MCP_AUTO_INSTALL_BLAST

1

是否在缺失 BLAST+ 时自动下载安装;设为 0 可禁用

BLAST_MCP_MAX_SEQUENCE_LENGTH

10000

允许的最大序列长度

BLAST_MCP_MAX_TARGET_SEQS

500

允许的最大目标序列数

BLAST_MCP_MAX_THREADS

8

允许的最大线程数

BLAST_MCP_TIMEOUT_SECONDS

120

快速搜索超时(秒)

BLAST_MCP_LONG_TIMEOUT_SECONDS

3600

异步任务超时(秒)

BLASTDB

NCBI BLAST 标准数据库搜索路径,setup 脚本自动追加

注册到 Claude Code

claude mcp add blastp_mcp -- /path/to/env/bin/python /path/to/blastp_mcp/src/server.py

或使用 quick_setup.sh 末尾打印的注册命令。

故障排查

问题

解决方法

找不到 blastp

安装 NCBI BLAST+ 后重新运行 quick_setup.sh

SwissProt 缺失

重新运行 quick_setup.sh,检查 BLAST_DB_DIR 和网络连接

RefSeq/nr 不可用

这是预期行为,除非手动安装了大型数据库

权限错误

确保 MCP 进程对 runs/ 有写权限,对 BLAST_DB_DIR 有读权限

序列无效

检查序列是否仅包含合法氨基酸字符(ACDEFGHIKLMNPQRSTVWY + ZX*-

搜索超时

调整 BLAST_MCP_TIMEOUT_SECONDS 或减少 max_target_seqs

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform NCBI BLAST sequence similarity searches through natural language, supporting nucleotide and protein searches, custom database creation, and multiple output formats.
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables protein sequence analysis and structure prediction by extracting ESM-2 embeddings and batch processing FASTA files via Docker. It provides tools for large-scale embedding extraction, job monitoring, and model management within an MCP-compatible environment.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A mock MCP server that exposes protein structure prediction tools (submit, status, results) for integration with Gemini Enterprise, demonstrating the bring-your-own-MCP capability.
    -