SAMtools MCP(モデル制御プロトコル)
SAMtools のモデル制御プロトコル実装。SAM/BAM/CRAM ファイルを操作するための標準化されたインターフェースを提供します。
特徴
SAM/BAM/CRAM ファイルの表示と変換
アライメントファイルの並べ替え
BAM/CRAM ファイルのインデックス
統計を生成する
複数のBAMファイルを結合する
読み取り深度を計算する
FASTAファイルのインデックス
さらに…
コア機能
ファイル形式のサポート: SAM (テキスト)、BAM (バイナリ)、CRAM (圧縮) アライメント ファイルを処理します。
フォーマット変換: SAM、BAM、CRAM フォーマット間でシームレスに変換
領域特異的解析:特定のゲノム領域を抽出して解析する
フラグベースのフィルタリング: SAMフラグに基づいて読み取りをフィルタリングする
パフォーマンスの最適化: ソートとマージのマルチスレッド操作
統計分析:包括的なアライメント統計を生成する
ツールの概要
道具 | 説明 | 主な特徴 |
| アライメントファイルの表示と変換 | - フォーマット変換(SAM/BAM/CRAM)- 領域フィルタリング- フラグベースのフィルタリング- ヘッダー操作 |
| アライメントファイルの並べ替え | - 座標ベースのソート - 名前ベースのソート - スレッドごとのメモリ制御 - マルチスレッドのサポート |
| BAM/CRAM ファイルのインデックス | - BAIインデックス生成 - CSIインデックスサポート - CRAMインデックス作成 |
| 複数のBAM/CRAMファイルを結合する | - 複数ファイルのマージ - スレッド対応処理 - ヘッダー調整 |
| 読み取り深度を計算する | - 塩基ごとの深度計算 - 領域固有の分析 - 複数ファイルのサポート |
| アライメント統計を生成する | - 包括的なフラグ統計 - 品質チェック - ペアエンドメトリクス |
| BAM/CRAM インデックス統計 | - 参照配列統計 - マップ/非マップ数 - 長さ情報 |
| FASTAファイルのインデックス | - FASTAインデックス作成 - 領域抽出 - 配列検索 |
Related MCP server: Nmap MCP Server
インストール
Dockerの使用(推奨)
SAMtools MCP を使用する最も簡単な方法は、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ローカルインストール
リポジトリをクローンします。
git clone https://github.com/your-username/samtools_mcp.git
cd samtools_mcp依存関係をインストールします:
pip install uv
uv pip install -r requirements.txt構成
MCP サーバーの構成
Docker イメージを使用するように MCP サーバーを構成するには、MCP 構成ファイルに次のコードを追加します。
{
"servers": {
"samtools": {
"type": "docker",
"image": "nadhir/samtools-mcp:latest",
"volumes": [
{
"source": "/path/to/your/data",
"target": "/data"
}
]
}
}
}ローカル MCP 構成
uvを使用して MCP を実行するように設定するには、 ~/.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")高度な使用法
フラグ付きの特定の地域を表示します:
result = mcp.view(
input_file="/data/example.bam",
region="chr1:1000-2000",
flags_required="0x2",
output_format="SAM"
)読み取った名前で並べ替え:
result = mcp.sort(
input_file="/data/example.bam",
output_file="/data/namesorted.bam",
sort_by_name=True
)複数の入力ファイルで深度を計算します。
result = mcp.depth(
input_files=["/data/sample1.bam", "/data/sample2.bam"],
region="chr1:1-1000000"
)貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。