/ ディレクトリ / プレイグラウンド / Semble
● コミュニティ MinishLab ⚡ 即起動

Semble

作者 MinishLab · MinishLab/semble

grep+読み込みの約2%のtokenコストで実現するコード検索 — セマンティック+レキシカル、完全ローカル、100万行規模のリポジトリでもサブ秒で応答。

SembleはMinish Labのコード検索MCPです。ハイブリッドなスパース+密な埋め込みでリポジトリをインデックス化し、grepより精度の高いセマンティック検索結果をClaudeに提供します — ファイル全体をダンプする必要がありません。特に大きなモノリポでは、標準的な「grepして読む」パターンと比べてtoken使用量が劇的に削減されます。

なぜ使うのか

主な機能

ライブデモ

実際の動作

semble-mcp.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "semble-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "semble[mcp]",
        "semble"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "semble-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "semble[mcp]",
        "semble"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "semble-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "semble[mcp]",
        "semble"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "semble-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "semble[mcp]",
        "semble"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "semble-mcp",
      "command": "uvx",
      "args": [
        "--from",
        "semble[mcp]",
        "semble"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "semble-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "--from",
          "semble[mcp]",
          "semble"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add semble-mcp -- uvx --from semble[mcp] semble

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Semble

大規模リポジトリ内で概念がどこに実装されているかを見つける

👤 大きなコードベースを探索するエンジニア ⏱ ~5 min beginner

使うタイミング: 「セッションバリデーションはどこで行われているか?」という質問に一発で答えたい場合。

前提条件
  • リポジトリのインデックス化semble index . — 大きなリポジトリの初回実行は数分かかる
フロー
  1. 検索
    Use semble. Find where session token validation logic lives. Return file:line ranges.✓ コピーしました
    → 具体的なファイル:行範囲を持つ3〜5件のヒット
  2. ピンポイントで読む
    Read just those line ranges (not whole files). Summarize the validation flow.✓ コピーしました
    → 簡潔なフローサマリー;小さなtokenフットプリント

結果: grep+読み込みが消費するtokenの何分の一かで質問に答えられる。

注意点
  • 大きなリベース後にインデックスが古くなるsemble reindexを実行するか、ファイルウォッチャーフックを設定する
組み合わせ: filesystem

リポジトリ全体でコーディングパターンの使用状況を監査する

👤 リファクタリングチーム ⏱ ~15 min intermediate

使うタイミング: ヘルパーを廃止しようとしており、その全使用箇所とバリアントを把握したい場合。

フロー
  1. レキシカル検索
    Find all calls to legacy_token_check.✓ コピーしました
    → 完全一致のリスト
  2. セマンティック検索
    Find functions that do the same job under a different name.✓ コピーしました
    → 類似の実装にフラグが立てられる

結果: 開始前にリファクタリングのスコープが完全に把握できる。

注意点
  • セマンティック検索での誤検知 — 各候補を検証する;sembleは優先度付けのための類似度スコアを提供

組み合わせ

他のMCPと組み合わせて10倍の力を

semble-mcp + filesystem

検索→ピンポイント読み込みパターン(sembleが返した範囲のみ)

Use semble to find candidates, then filesystem to read just the matched ranges.✓ コピーしました
semble-mcp + github

全呼び出し箇所を更新するリファクタリングPRの作成

Find all call sites with semble, generate a PR that updates each.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
search query, k?, mode? デフォルト — 概念で検索するとき free
lexical_search pattern, k? 完全一致トークン / 正規表現 free
index path 初回実行 / 大規模な構造変更後 free
reindex path 編集後の追い付き free

コストと制限

運用コスト

APIクォータ
なし — ローカル
呼び出しあたりのトークン
少量 — 通常100〜500 token
金額
無料
ヒント
リポジトリのインデックス化は一度だけ;クエリは安価。token削減効果は蓄積される

セキュリティ

権限、シークレット、影響範囲

最小スコープ: インデックス化のためのローカルファイル読み取り
認証情報の保管: なし
データ送信先: なし — 埋め込みはローカルに保持

トラブルシューティング

よくあるエラーと対処法

巨大なリポジトリのインデックス化でOOM

設定でバッチサイズを下げるか、パッケージごとにインデックス化する

検索で関連性のある結果が返らない

再インデックス — ローカルコピーがずれている可能性;またはクエリを改善する

uvxのインストールがハングする

uv pip install semble[mcp]でウォームアップ

代替案

Semble 他との比較

代替案代わりに使う場面トレードオフ
ripgrep + grep MCP完全一致検索のみが必要な場合セマンティック検索なし;結果のtoken消費が多い
ast-grep / serena構文を意識した構造的検索/置換が必要な場合モデルが異なる;埋め込みベースではない

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る