samtools_mcp
一个用于 SAMtools 的模型控制协议实现,为处理 SAM/BAM/CRAM 文件提供了一个标准化的接口。
README
SAMtools MCP (模型控制协议)
SAMtools 的模型控制协议实现,为处理 SAM/BAM/CRAM 文件提供了一个标准化的接口。
特性
- 查看和转换 SAM/BAM/CRAM 文件
- 排序 alignment 文件
- 索引 BAM/CRAM 文件
- 生成统计信息
- 合并多个 BAM 文件
- 计算 read depth
- 索引 FASTA 文件
- 更多...
核心功能
- 文件格式支持: 处理 SAM (文本), BAM (二进制), 和 CRAM (压缩) alignment 文件
- 格式转换: 在 SAM, BAM, 和 CRAM 格式之间无缝转换
- 区域特定分析: 提取和分析特定的基因组区域
- 基于 Flag 的过滤: 基于 SAM flags 过滤 reads
- 性能优化: 多线程操作用于排序和合并
- 统计分析: 生成全面的 alignment 统计信息
工具概览
| 工具 | 描述 | 主要特性 |
|---|---|---|
view |
查看和转换 alignment 文件 | - 格式转换 (SAM/BAM/CRAM)<br>- 区域过滤<br>- 基于 Flag 的过滤<br>- Header 操作 |
sort |
排序 alignment 文件 | - 基于坐标的排序<br>- 基于名称的排序<br>- 每个线程的内存控制<br>- 多线程支持 |
index |
索引 BAM/CRAM 文件 | - BAI 索引生成<br>- CSI 索引支持<br>- CRAM 索引创建 |
merge |
合并多个 BAM/CRAM 文件 | - 多文件合并<br>- 线程启用处理<br>- Header 协调 |
depth |
计算 read depth | - Per-base depth 计算<br>- 区域特定分析<br>- 多文件支持 |
flagstat |
生成 alignment 统计信息 | - 全面的 flag 统计信息<br>- 质量检查<br>- Paired-end 指标 |
idxstats |
BAM/CRAM 索引统计信息 | - 参考序列统计信息<br>- Mapped/unmapped 计数<br>- 长度信息 |
faidx |
索引 FASTA 文件 | - FASTA 索引<br>- 区域提取<br>- 序列检索 |
安装
使用 Docker (推荐)
使用 SAMtools MCP 最简单的方法是通过 Docker:
# 拉取 Docker 镜像
docker pull nadhir/samtools-mcp:latest
# 运行容器
docker run -it --rm nadhir/samtools-mcp:latest
# 要处理 BAM 文件,挂载一个 volume:
docker run -it --rm -v /path/to/your/bam/files:/data nadhir/samtools-mcp:latest
本地安装
- 克隆仓库:
git clone https://github.com/your-username/samtools_mcp.git
cd samtools_mcp
- 安装依赖:
pip install uv
uv pip install -r requirements.txt
配置
MCP 服务器配置
要配置 MCP 服务器以使用 Docker 镜像,请将以下内容添加到您的 MCP 配置文件中:
{
"servers": {
"samtools": {
"type": "docker",
"image": "nadhir/samtools-mcp:latest",
"volumes": [
{
"source": "/path/to/your/data",
"target": "/data"
}
]
}
}
}
本地 MCP 配置
要配置 MCP 以使用 uv 运行,请将以下内容添加到您的 ~/.cursor/mcp.json 中:
{
"samtools_mcp": {
"command": "uv",
"args": ["run", "--with", "fastmcp", "fastmcp", "run", "/path/to/samtools_mcp.py"]
}
}
将 /path/to/samtools_mcp.py 替换为您的 samtools_mcp.py 文件的实际路径。
用法
基本命令
- 查看 BAM 文件:
from samtools_mcp import SamtoolsMCP
mcp = SamtoolsMCP()
result = mcp.view(input_file="/data/example.bam")
- 排序 BAM 文件:
result = mcp.sort(input_file="/data/example.bam", output_file="/data/sorted.bam")
- 索引 BAM 文件:
result = mcp.index(input_file="/data/sorted.bam")
高级用法
- 查看带有 flags 的特定区域:
result = mcp.view(
input_file="/data/example.bam",
region="chr1:1000-2000",
flags_required="0x2",
output_format="SAM"
)
- 按 read name 排序:
result = mcp.sort(
input_file="/data/example.bam",
output_file="/data/namesorted.bam",
sort_by_name=True
)
- 计算具有多个输入文件的 depth:
result = mcp.depth(
input_files=["/data/sample1.bam", "/data/sample2.bam"],
region="chr1:1-1000000"
)
贡献
欢迎贡献!请随时提交 Pull Request。
许可证
该项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。