内容
bio-mcp-samtools
MCP(模型上下文协议)服务器,适用于Samtools,一套用于处理SAM、BAM和CRAM格式的高通量测序数据的实用工具。
## 概述
该MCP服务器提供了对各种Samtools功能的访问,使AI助手能够执行诸如查看、排序、索引和生成对齐文件统计信息等操作。
## 功能
- **samtools_view**:查看和转换SAM/BAM/CRAM文件。
- **samtools_sort**:按坐标或读取名称对SAM/BAM文件进行排序。
- **samtools_index**:为已排序的BAM/CRAM文件创建索引。
- **samtools_stats**:生成全面的对齐统计信息。
- **samtools_flagstat**:统计每个FLAG类别的读取数。
- **samtools_depth**:计算每个位置的读取深度。
## 安装
### 前提条件
- Python 3.9+
- 已安装Samtools(`samtools`)
### 安装Samtools
```bash
# macOS
brewtools
# Ubuntu/Debian
sudo apt-get install samtools
# 从conda安装
conda install -c bioconda samtools
```
### 安装MCP服务器
```bash
git clone https://github.com/bio-mcp/bio-mcp-samtools
cd bio-mcp-samtools
pip install -e .
```
## 配置
将以下内容添加到您的MCP客户端配置文件中(例如,Claude Desktop `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"bio-samtools": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/bio-mcp-samtools"
}
}
}
```
### 环境变量
- `BIO_MCP_MAX_FILE_SIZE`:最大输入文件大小(字节)(默认值:10GB)
- `BIO_MCP_TIMEOUT`:命令超时(秒)(默认值:1800)
- `BIO_MCP_SAMTOOLS_PATH`:Samtools可执行文件路径(默认值:在PATH中查找)
- `BIO_MCP_TEMP_DIR`:处理临时目录
## 使用
配置完成后,AI助手可以使用以下工具:
### `samtools_view` - 查看/转换SAM/BAM/CRAM
查看和转换对齐文件,选项包括按区域、标志和质量过滤。
**参数:**
- `input_file`(必填):SAM/BAM/CRAM文件路径。
- `output_format`:输出格式(`sam`、`bam`或`cram`)。默认值:`bam`。
- `region`:提取区域(例如,`chr1:1000-2000`)。
- `flags_include`:包含具有所有这些标志的读取(整数)。
- `flags_exclude`:排除具有任何这些标志的读取(整数)。
- `quality_min`:最低映射质量(整数)。
### `samtools_sort` - 排序SAM/BAM文件
按坐标或读取名称对SAM/BAM文件进行排序。
**参数:**
- `input_file`(必填):SAM/BAM文件路径。
- `sort_by`:排序顺序(`coordinate`或`name`)。默认值:`coordinate`。
- `output_format`:输出格式(`sam`或`cram默认值:`bam### `samtools_index` - 创建索引
为已排序的BAM/CRAM文件创建索引。
**参数:**
- `input_file`(必填):已排序的BAM/CRAM文件路径。
- `index_type`:索引类型(`bai`或`csi`)。默认值:`bai`。
### `samtools_stats` - 生成对齐统计信息
从对齐文件中生成详细的统计信息。
**参数:**
- `input_file`(必填):BAM文件路径。
- `region`:分析区域。
- `reference`:参考FASTA文件(CRAM必填)。
### `samtools_flagstat` - 按标志统计读取数
统计每个FLAG类别的读取数,提供对齐状态的快速总结。
**参数:**
- `input_file`(必填):BAM文件路径。
### `samtools_depth` - 计算每个位置的深度
计算指定区域或整个文件的每个位置的读取深度。
**参数:**
- `input_file`(必填):BAM文件路径。
- `region`:分析区域。
- `max_depth`:报告的最大深度(默认值:8000)。
## 示例
### 对BAM文件进行排序
```
对alignment.bam文件按坐标排序,并输出为新的BAM文件。
```
### 获取对齐统计信息
```
为my_reads.bam生成对齐统计信息。
```
### 为已排序的BAM文件编制索引
```
为sorted_reads.bam文件创建BAI索引。
```
## 开发
### 运行测试
```bash
pytest tests/
```
### 构建Docker镜像
```bash
docker build -t bio-mcp-samtools .
```
## 许可证
MIT License