Design · MODEL CONTEXT PROTOCOL
sirusb samtools mcp
A Model Control Protocol implementation for samtools, providing a standardized interface for working with SAM/BAM/CRAM files.
连接能力
sirusb samtools mcp 为 AI Agent 提供什么
- View and convert SAM/BAM/CRAM files
- Sort alignment files
- Index BAM/CRAM files
- Generate statistics
- Merge multiple BAM files
- Calculate read depth
- Index FASTA files
- And more...
- **File Format Support**: Handle SAM (text), BAM (binary), and CRAM (compressed) alignment files
- **Format Conversion**: Convert between SAM, BAM, and CRAM formats seamlessly
- **Region-Specific Analysis**: Extract and analyze specific genomic regions
- **Flag-Based Filtering**: Filter reads based on SAM flags
- **Performance Optimization**: Multi-threaded operations for sorting and merging
- **Statistical Analysis**: Generate comprehensive alignment statistics
- Clone the repository:
- Install dependencies:
- View BAM file:
- Sort BAM file:
- Index BAM file:
- View specific region with flags:
- Sort by read name:
- Calculate depth with multiple input files:
安全
MCP 收录不等于安全审核
MCP 服务器可能获得模型上下文、凭据、本地文件或调用外部系统的权限。连接 Agent 前,请检查代码、环境变量、网络行为、软件包来源与维护状态。
README
仓库文档
A Model Control Protocol implementation for SAMtools, providing a standardized interface for working with SAM/BAM/CRAM files.
- View and convert SAM/BAM/CRAM files
- Sort alignment files
- Index BAM/CRAM files
- Generate statistics
- Merge multiple BAM files
- Calculate read depth
- Index FASTA files
- And more...
- File Format Support: Handle SAM (text), BAM (binary), and CRAM (compressed) alignment files
- Format Conversion: Convert between SAM, BAM, and CRAM formats seamlessly
- Region-Specific Analysis: Extract and analyze specific genomic regions
- Flag-Based Filtering: Filter reads based on SAM flags
- Performance Optimization: Multi-threaded operations for sorting and merging
- Statistical Analysis: Generate comprehensive alignment statistics
| Tool | Description | Key Features |
|---|---|---|
view |
View and convert alignment files | - Format conversion (SAM/BAM/CRAM) - Region filtering - Flag-based filtering - Header manipulation |
sort |
Sort alignment files | - Coordinate-based sorting - Name-based sorting - Memory per thread control - Multi-threading support |
index |
Index BAM/CRAM files | - BAI index generation - CSI index support - CRAM index creation |
merge |
Merge multiple BAM/CRAM files | - Multi-file merging - Thread-enabled processing - Header reconciliation |
depth |
Calculate read depth | - Per-base depth calculation - Region-specific analysis - Multi-file support |
flagstat |
Generate alignment statistics | - Comprehensive flag statistics - Quality checks - Paired-end metrics |
idxstats |
BAM/CRAM index statistics | - Reference sequence stats - Mapped/unmapped counts - Length information |
faidx |
Index FASTA files | - FASTA indexing - Region extraction - Sequence retrieval |
The easiest way to use SAMtools MCP is through Docker:
# Pull the Docker image
docker pull nadhir/samtools-mcp:latest
# Run the container
docker run -it --rm nadhir/samtools-mcp:latest
# To process BAM files, mount a volume:
docker run -it --rm -v /path/to/your/bam/files:/data nadhir/samtools-mcp:latest- Clone the repository:
git clone https://github.com/your-username/samtools_mcp.git
cd samtools_mcp- Install dependencies:
pip install uv
uv pip install -r requirements.txtTo configure the MCP server to use the Docker image, add the following to your MCP configuration file:
{
"servers": {
"samtools": {
"type": "docker",
"image": "nadhir/samtools-mcp:latest",
"volumes": [
{
"source": "/path/to/your/data",
"target": "/data"
}
]
}
}
}To configure the MCP to run using uv, add the following to your ~/.cursor/mcp.json:
{
"samtools_mcp": {
"command": "uv",
"args": ["run", "--with", "fastmcp", "fastmcp", "run", "/path/to/samtools_mcp.py"]
}
}Replace /path/to/samtools_mcp.py with the actual path to your samtools_mcp.py file.
- View BAM file:
from samtools_mcp import SamtoolsMCP
mcp = SamtoolsMCP()
result = mcp.view(input_file="/data/example.bam")- Sort BAM file:
result = mcp.sort(input_file="/data/example.bam", output_file="/data/sorted.bam")- Index BAM file:
result = mcp.index(input_file="/data/sorted.bam")- View specific region with flags:
result = mcp.view(
input_file="/data/example.bam",
region="chr1:1000-2000",
flags_required="0x2",
output_format="SAM"
)- Sort by read name:
result = mcp.sort(
input_file="/data/example.bam",
output_file="/data/namesorted.bam",
sort_by_name=True
)- Calculate depth with multiple input files:
result = mcp.depth(
input_files=["/data/sample1.bam", "/data/sample2.bam"],
region="chr1:1-1000000"
)Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
社区