mcpField
M
massive-context-mcp

massive-context-mcp

ローカル
github.com/egoughnourAI・エージェント141 週間前に更新

massive-context-mcp について

massive-context-mcpはRecursive Language Modelパターンに基づくMCPサーバーで、外部コンテキスト、分割、サブクエリを使って大規模な入力を分析します。結果を集約でき、Ollamaによるローカル推論とClaude SDKを状況に応じて選択します。

主な機能

  1. 01プロンプト外でのコンテキスト読み込みと確認
  2. 02行・文字・段落単位の分割
  3. 03並列サブクエリと結果の集約
  4. 04サンドボックス化したPythonで処理
  5. 05OllamaまたはClaude SDKの自動選択

活用シーン

  1. 01長い文書の分析と要点抽出
  2. 02大規模なコードやログの問題調査
  3. 03分割した内容のセキュリティ確認
  4. 04Pythonによる決定的なデータ抽出

MCP 対応

MCPサーバーとして、コンテキストの読み込み、確認、分割、フィルタリング、実行、サブクエリ、結果集約のツールをクライアントに提供します。Ollamaの状態確認とセットアップ用ツールも備えています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
pypimassive-context-mcp3.0.1
mcpbmassive-context-mcp.mcpb

ツール

17

掲載時のツール一覧 · 3 週間前に更新

このツールにパラメーターはありません。

詳細

Massive Context MCP

PyPI MCP Registry Claude Desktop Tests Release License: MIT

Top Language Code Size Last Commit Repository Size

チャンク分割、サブクエリ、Ollama による無料のローカル推論を使って、巨大なコンテキスト(1,000万トークン以上)を処理します。

flowchart TD
    A[Claude Code] --> B[RLM MCP Server]
    B --> C{rlm_ollama_status}
    C -->|cached 60s| D{provider = auto}

    D -->|Ollama running| E[🦙 Ollama<br/>gemma3:12b]
    D -->|Ollama unavailable| F[☁️ Claude SDK<br/>claude-haiku-4-5]

    E --> G[["💰 $0<br/>Free local inference"]]
    F --> H[["💰 ~$0.80/1M<br/>Cloud inference"]]

    style A fill:#ff922b,color:#fff
    style B fill:#339af0,color:#fff
    style E fill:#51cf66,color:#fff
    style F fill:#748ffc,color:#fff
    style G fill:#51cf66,color:#fff
    style H fill:#748ffc,color:#fff

Recursive Language Model パターンに基づいています。richardwhiteii/rlmに着想を得ています。

📸 スクリーンショット

Claude Desktop のツール

基本的な考え方

巨大なコンテキストを LLM に直接入力するのではなく、次のように処理します。

  1. コンテキストを外部変数として読み込みます(プロンプトには含まれません)。
  2. プログラムで構造を調べます。
  3. 行、文字、段落単位で戦略的にチャンク分割します。
  4. チャンクに対して再帰的にサブクエリを実行します。
  5. 結果を集約して最終的な統合を行います。

クイックスタート

インストール

オプション 1:PyPI(推奨)

uvx massive-context-mcp
# or
pip install massive-context-mcp

オプションの追加機能を含める場合:

# With Code Firewall integration (security filter for rlm_exec)
pip install massive-context-mcp[firewall]

# With Claude Agent SDK (for programmatic Claude API access)
pip install massive-context-mcp[claude]

# With all extras
pip install massive-context-mcp[firewall,claude]

オプション 2:Claude Desktop のワンクリックインストール

Releasesから.mcpbをダウンロードし、ダブルクリックしてインストールします。

オプション 3:ソースからインストール

git clone https://github.com/egoughnour/massive-context-mcp.git
cd massive-context-mcp
uv sync
Claude Code / Claude Desktop に接続する

~/.claude/.mcp.json(Claude Code)またはclaude_desktop_config.json(Claude Desktop)に追加します。

{
  "mcpServers": {
    "massive-context": {
      "command": "uvx",
      "args": ["massive-context-mcp"],
      "env": {
        "RLM_DATA_DIR": "~/.rlm-data",
        "OLLAMA_URL": "http://localhost:11434"
      }
    }
  }
}

ツール

セットアップとステータスのツール
ツール目的
rlm_system_checkシステム要件を確認 — macOS、Apple Silicon、16GB 以上の RAM、Homebrew を検証します
rlm_setup_ollamaHomebrew 経由でインストール — 管理対象サービス、自動更新、Homebrew が必要です
rlm_setup_ollama_direct直接ダウンロードでインストール — sudo 不要、完全ヘッドレス、制限されたマシンでも動作します
rlm_ollama_statusOllama の利用可否を確認 — 無料のローカル推論が利用可能かどうかを検出します
分析ツール
ツール目的
rlm_auto_analyzeワンステップ分析 — 種類の自動検出、チャンク分割、クエリの実行
rlm_load_contextコンテキストを外部変数として読み込む
rlm_inspect_contextプロンプトに読み込まずに構造情報を取得する
rlm_chunk_context行/文字/段落単位でチャンク分割する
rlm_get_chunk特定のチャンクを取得する
rlm_filter_context正規表現でフィルタリングする(一致する行を保持/削除)
rlm_exec読み込み済みのコンテキストに対して Python コードを実行する(サンドボックス内)
rlm_sub_queryチャンクに対してサブ LLM 呼び出しを行う
rlm_sub_query_batch複数のチャンクを並列処理する
rlm_store_result集約用にサブ呼び出しの結果を保存する
rlm_get_results保存済みの結果を取得する
rlm_list_contexts読み込み済みのコンテキストをすべて一覧表示する
rlm_auto_analyze によるクイック分析

ほとんどの場合、rlm_auto_analyze を使うだけで、すべてが自動的に処理されます。

rlm_auto_analyze(
    name="my_file",
    content=file_content,
    goal="find_bugs"  # or: summarize, extract_structure, security_audit, answer:<question>
)

自動的に行う処理:

  1. コンテンツの種類を検出します(Python、JSON、Markdown、ログ、文章、コード)
  2. 最適なチャンク分割方法を選択します
  3. コンテンツの種類に合わせてクエリを調整します
  4. サブクエリを並列実行します
  5. 集約した結果を返します

サポートされている目標:

目標説明
summarizeコンテンツの目的と要点を要約します
find_bugsエラー、問題、潜在的な不具合を特定します
extract_structure関数、クラス、スキーマ、見出しを一覧表示します
security_audit脆弱性とセキュリティ上の問題を見つけます
answer:<question>コンテンツに関するカスタム質問に回答します
rlm_exec によるプログラム分析

決定論的なパターンマッチングやデータ抽出には、rlm_exec を使って、読み込み済みのコンテキストに対して Python コードを直接実行します。これは論文の REPL アプローチに近く、分析ロジックを完全に制御できます。

ツール:rlm_exec

目的:サンドボックス化されたサブプロセスで、読み込み済みのコンテキストに対して任意の Python コードを実行します。

パラメーター:

  • code(必須):実行する Python コードです。出力を取得するには、result 変数に値を設定します。
  • context_name(必須):以前に読み込んだコンテキストの名前です。
  • timeout(任意、デフォルト 30):最大実行時間(秒)です。

機能:

  • 読み取り専用の context 変数としてコンテキストを利用できます
  • 事前にインポート済みのモジュール:re、json、collections
  • サブプロセスによる分離(サーバーがクラッシュしません)
  • タイムアウトの適用
  • Python が動作するあらゆるシステムで利用可能(Docker は不要です)

例 — 読み込み済みのコンテキスト内でパターンを検索する:

# After loading a context
rlm_exec(
    code="""
import re
amounts = re.findall(r'\$[\d,]+', context)
result = {'count': len(amounts), 'sample': amounts[:5]}
""",
    context_name="bill"
)

応答例:

{
  "result": {
    "count": 1247,
    "sample": ["$500", "$1,000", "$250,000", "$100,000", "$50"]
  },
  "stdout": "",
  "stderr": "",
  "return_code": 0,
  "timed_out": false
}

例 — 構造化データを抽出する:

rlm_exec(
    code="""
import re
import json

# Find all email addresses
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', context)

# Count by domain
from collections import Counter
domains = [e.split('@')[1] for e in emails]
domain_counts = Counter(domains)

result = {
    'total_emails': len(emails),
    'unique_domains': len(domain_counts),
    'top_domains': domain_counts.most_common(5)
}
""",
    context_name="dataset",
    timeout=60
)

rlm_exec と rlm_sub_query の使い分け:

ユースケースツール理由
すべての日付、ID、金額を抽出するrlm_exec正規表現は決定論的で高速です
セキュリティ上の脆弱性を見つけるrlm_sub_query推論とコンテキストが必要です
JSON/XML 構造を解析するrlm_exec標準ライブラリで十分に処理できます
テーマやトーンを要約するrlm_sub_query自然言語の理解が必要です
単語の出現頻度を数えるrlm_exec単純な計算で、AI は不要です
「なぜ X が起きたのか?」に回答するrlm_sub_query推論と論理的な考察が必要です

ヒント:大きなコンテキストでは、両方を組み合わせます。rlm_exec でフィルタリング/抽出してから、フィルタリング済みの結果を意味的に分析するために rlm_sub_query を使います。

Code Firewall との統合(任意)

セキュリティを強化するには、実行前に危険なコードパターンをフィルタリングする code-firewall-mcp と統合します。

pip install massive-context-mcp[firewall]

インストールすると、rlm_exec は既知の危険なパターン(例:os.system()、eval()、shell=True を指定した subprocess)に照らしてコードを自動的にチェックできます。ファイアウォールは構造的類似性マッチングを使用し、コードを骨格に正規化して、埋め込み表現を介してブラックリストのパターンと比較します。

仕組み:

  1. コードを構文木に解析して正規化します(識別子 → _、文字列 → "S")
  2. 正規化された構造を Ollama で埋め込みます
  3. ChromaDB 内のブラックリストパターンと類似性を照合します
  4. 類似性がしきい値(デフォルト:0.85)を超えると、コードをブロックします

設定(環境変数):

  • RLM_FIREWALL_ENABLED=true — ファイアウォールのチェックを有効にします(パッケージのインストール時に自動的に有効になります)
  • RLM_FIREWALL_MODE=warn|block — 一致した場合に警告するかブロックします(デフォルト:warn)

ブロックされるパターンの例:

  • os.system(user_input) — コマンドインジェクション
  • eval(untrusted_data) — コードインジェクション
  • subprocess.Popen(..., shell=True) — シェルインジェクション

rlm_firewall_status を使用すると、ファイアウォールの利用可否と設定を確認できます。

プロバイダーと自動検出

RLM は利用可能な最適なプロバイダーを自動検出して使用します。

プロバイダーデフォルトモデルコストユースケース
auto(利用可能な最適なもの)$0 または約$0.80/1Mデフォルト — 利用可能な場合は Ollama を優先します
ollamagemma3:12b$0ローカル推論。Ollama が必要です
claude-sdkclaude-haiku-4-5入力100万トークンあたり約$0.80クラウド推論。常に利用可能です
自動検出の仕組み

provider="auto"(デフォルト)を使用すると、RLM は次の処理を行います。

  1. OLLAMA_URL(デフォルト:http://localhost:11434)で Ollama が実行中かどうかを確認します
  2. gemma3:12b(または任意の gemma3 バリアント)が利用可能かどうかを確認します
  3. Ollama が利用可能な場合は使用し、それ以外の場合は Claude SDK にフォールバックします

ネットワークチェックの繰り返しを避けるため、ステータスは60秒間キャッシュされます。

Ollama のステータスを確認する

rlm_ollama_status を使用すると、利用可能なものを確認できます。

rlm_ollama_status()

Ollama の準備ができている場合のレスポンス:

{
  "running": true,
  "models": ["gemma3:12b", "llama3:8b"],
  "default_model_available": true,
  "best_provider": "ollama",
  "recommendation": "Ollama is ready! Sub-queries will use free local inference by default."
}

Ollama が利用できない場合のレスポンス:

{
  "running": false,
  "error": "connection_refused",
  "best_provider": "claude-sdk",
  "recommendation": "Ollama not available. Sub-queries will use Claude API. To enable free local inference, install Ollama and run: ollama serve"
}
透過的なプロバイダー選択

すべてのサブクエリのレスポンスには、実際に使用されたプロバイダーが含まれます。

{
  "provider": "ollama",
  "model": "gemma3:12b",
  "requested_provider": "auto",
  "response": "..."
}

自律的な使用

手動で呼び出さなくても、Claude が RLM ツールを自動的に使用できるようにします。

1. CLAUDE.md との統合 CLAUDE.md.example の内容をプロジェクトの CLAUDE.md(グローバルに設定する場合は ~/.claude/CLAUDE.md)にコピーし、Claude が必要に応じて RLM ツールを自動的に使用するように設定します。

2. フックのインストール .claude/hooks/ ディレクトリをプロジェクトにコピーして、10KB を超えるファイルを読み取る際に RLM を自動的に提案します。

cp -r .claude/hooks/ /Users/your_username/your-project/.claude/hooks/

フックはガイダンスを提供しますが、読み取りをブロックすることはありません。

3. スキルのリファレンス 包括的な RLM ガイダンスを利用するには、.claude/skills/ ディレクトリをコピーします。

cp -r .claude/skills/ /Users/your_username/your-project/.claude/skills/

これらを設定すると、Claude は大きなファイルをコンテキストに直接読み込む代わりに、RLM を使用すべきタイミングを自律的に検出します。

Ollama のセットアップ(無料のローカル推論)

RLM は Apple Silicon 搭載の macOS で Ollama を自動的にインストールして設定できます。インストール方法は2つあり、それぞれ異なるトレードオフがあります。

インストール方法の選択
項目rlm_setup_ollama(Homebrew)rlm_setup_ollama_direct(直接ダウンロード)
sudo が必要かHomebrew がインストールされていない場合のみ❌ 不要
Homebrew が必要か✅ はい❌ いいえ
自動更新✅ はい(brew upgrade)❌ 手動
サービス管理✅ brew services(launchd)⚠️ ollama serve(フォアグラウンド)
インストール先/opt/homebrew/~/Applications/
制限の厳しいマシン⚠️ 失敗する場合があります✅ 動作します
完全なヘッドレス環境⚠️ sudo を求められる場合があります✅ はい

推奨事項:

  • Homebrew がインストールされており、更新を管理したい場合は、Homebrew 方式を使用してください
  • 自動化、制限の厳しいマシン、または管理者アクセス権がない場合は、直接ダウンロードを使用してください
方法 1:Homebrew によるインストール(Homebrew がある場合に推奨)
# 1. Check if your system meets requirements
rlm_system_check()

# 2. Install via Homebrew
rlm_setup_ollama(install=True, start_service=True, pull_model=True)

実行内容:

  • Homebrew 経由で Ollama をインストールします(brew install ollama)
  • 管理されたバックグラウンドサービスとして Ollama を起動します(brew services start ollama)
  • gemma3:12b モデルをダウンロードします(約 8GB)

要件:

  • Apple Silicon(M1/M2/M3/M4)搭載の macOS
  • 16GB 以上の RAM(gemma3:12b の実行には約 8GB が必要です)
  • Homebrew がインストールされていること
方法 2:直接ダウンロード(完全なヘッドレス環境、sudo 不要)
# 1. Check system (Homebrew NOT required for this method)
rlm_system_check()

# 2. Install via direct download - no sudo, no Homebrew
rlm_setup_ollama_direct(install=True, start_service=True, pull_model=True)

実行内容:

  • https://ollama.com/download/Ollama-darwin.zip から Ollama をダウンロードします
  • ~/Applications/Ollama.app に展開します(ユーザーディレクトリのため、管理者権限は不要です)
  • ollama serve 経由で Ollama を起動します(バックグラウンドプロセス)
  • gemma3:12b モデルをダウンロードします

要件:

  • Apple Silicon(M1/M2/M3/M4)搭載の macOS
  • 16GB 以上の RAM
  • 特別な権限は必要ありません!

PATH に関する注意: 直接インストールした場合、CLI は次の場所にあります:

~/Applications/Ollama.app/Contents/Resources/ollama

必要に応じて、シェルの設定に追加してください:

export PATH="$HOME/Applications/Ollama.app/Contents/Resources:$PATH"
RAM が少ないシステムの場合

どちらのインストール方法でも、より小さなモデルを使用できます:

rlm_setup_ollama(install=True, start_service=True, pull_model=True, model="gemma3:4b")
# or
rlm_setup_ollama_direct(install=True, start_service=True, pull_model=True, model="gemma3:4b")
手動セットアップ

手動でインストールする場合、または別のプラットフォームを使用している場合:

  1. https://ollama.ai から、または Homebrew 経由で Ollama をインストールします:

    brew install ollama
    
  2. サービスを起動します:

    brew services start ollama
    # or: ollama serve
    
  3. モデルをダウンロードします:

    ollama pull gemma3:12b
    
  4. 動作を確認します:

    rlm_ollama_status()
    
プロバイダーの選択

RLM は、利用可能な場合に Ollama を自動的に使用します。特定のプロバイダーを指定することもできます:

# Auto-detection (default) - uses Ollama if available
rlm_sub_query(query="Summarize", context_name="doc")

# Explicitly use Ollama
rlm_sub_query(query="Summarize", context_name="doc", provider="ollama")

# Explicitly use Claude SDK
rlm_sub_query(query="Summarize", context_name="doc", provider="claude-sdk")

使用例

基本的なパターン
# 0. (Optional) First-time setup on macOS - choose ONE method:

# Option A: Homebrew (if you have it)
rlm_system_check()
rlm_setup_ollama(install=True, start_service=True, pull_model=True)

# Option B: Direct download (no sudo, fully headless)
rlm_system_check()
rlm_setup_ollama_direct(install=True, start_service=True, pull_model=True)

# 0b. (Optional) Check if Ollama is available for free inference
rlm_ollama_status()

# 1. Load a large document
rlm_load_context(name="report", content=<large document>)

# 2. Inspect structure
rlm_inspect_context(name="report", preview_chars=500)

# 3. Chunk into manageable pieces
rlm_chunk_context(name="report", strategy="paragraphs", size=1)

# 4. Sub-query chunks in parallel (auto-uses Ollama if available)
rlm_sub_query_batch(
    query="What is the main topic? Reply in one sentence.",
    context_name="report",
    chunk_indices=[0, 1, 2, 3],
    concurrency=4
)

# 5. Store results for aggregation
rlm_store_result(name="topics", result=<response>)

# 6. Retrieve all results
rlm_get_results(name="topics")
2MB のドキュメントを処理する

H.R.1 法案(2MB)でテスト済み:

# Load
rlm_load_context(name="bill", content=<2MB XML>)

# Chunk into 40 pieces (50K chars each)
rlm_chunk_context(name="bill", strategy="chars", size=50000)

# Sample 8 chunks (20%) with parallel queries
# (auto-uses Ollama if running, otherwise Claude SDK)
rlm_sub_query_batch(
    query="What topics does this section cover?",
    context_name="bill",
    chunk_indices=[0, 5, 10, 15, 20, 25, 30, 35],
    concurrency=4
)

結果:トピックを包括的に抽出できます。費用は 0 ドル(Ollama 使用時)、または約 0.02 ドル(Claude 使用時)です。

『戦争と平和』(3.3MB)を分析する

Project Gutenberg のトルストイの大作を文学的に分析します:

# Download the text
curl -o war_and_peace.txt https://www.gutenberg.org/files/2600/2600-0.txt
# Load into RLM (3.3MB, 66K lines)
rlm_load_context(name="war_and_peace", content=open("war_and_peace.txt").read())

# Chunk by lines (1000 lines per chunk = 67 chunks)
rlm_chunk_context(name="war_and_peace", strategy="lines", size=1000)

# Sample 10 chunks evenly across the book (15% coverage)
sample_indices = [0, 7, 14, 21, 28, 35, 42, 49, 56, 63]

# Extract characters from each sampled section
rlm_sub_query_batch(
    query="List major characters in this section with brief descriptions.",
    context_name="war_and_peace",
    chunk_indices=sample_indices,
    provider="claude-sdk",  # Haiku 4.5
    concurrency=8
)

結果:小説全体を通じた登場人物の変遷を完全に追跡できます。理想主義者から囚人を経て夫となるピエールの歩み、ナターシャの成長、兵士から地主となるニコライ・ロストフの歩みを、すべて約 0.03 ドルで分析できます。

指標値
ファイルサイズ3.35 MB
行数66,033
チャンク数67
サンプリング数10(15%)
費用約 0.03 ドル

データの保存

graph TD
    A[("$RLM_DATA_DIR")] --> B["📁 contexts/"]
    A --> C["📁 chunks/"]
    A --> D["📁 results/"]

    B --> B1[".txt files"]
    B --> B2[".meta.json"]
    C --> C1["by context name"]
    D --> D1[".jsonl files"]

    style A fill:#339af0,color:#fff
    style B fill:#51cf66,color:#fff
    style C fill:#51cf66,color:#fff
    style D fill:#51cf66,color:#fff

コンテキストはセッションをまたいで保持されます。チャンク化されたコンテキストは、再利用できるようにキャッシュされます。

学習用プロンプト

これらのプロンプトを Claude Code で使用して、コードベースを調べ、RLM のパターンを学習してください。コードが唯一の信頼できる情報源です。

ツールを理解する
Read src/rlm_mcp_server.py and list all RLM tools with their parameters and purpose.
Explain the chunking strategies available in rlm_chunk_context.
When would I use each one?
What's the difference between rlm_sub_query and rlm_sub_query_batch?
Show me the implementation.
アーキテクチャを理解する
Read src/rlm_mcp_server.py and explain how contexts are stored and persisted.
Where does the data live?
How does the claude-sdk provider extract text from responses?
Walk me through _call_claude_sdk.
What happens when I call rlm_load_context? Trace the full flow.
実践的な学習
Load the README as a context, chunk it by paragraphs,
and run a sub-query on the first chunk to summarize it.
Show me how to process a large file in parallel using rlm_sub_query_batch.
Use a real example.
I have a 1MB log file. Walk me through the RLM pattern to extract all errors.
RLM の拡張
Read the test file and explain what scenarios are covered.
What edge cases should I be aware of?
How would I add a new chunking strategy (e.g., by regex delimiter)?
Show me where to modify the code.
How would I add a new provider (e.g., OpenAI)?
What functions need to change?

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。