RLM Tools について
RLM Tools は、AI コーディングエージェントがコードベースを調べるための永続的な Python サンドボックスです。生データはサーバー側に保持し、実行結果だけを会話に返します。大量のコード検索や読み取りに適しており、ファイルアクセスは読み取り専用で指定ディレクトリ内に制限されます。
主な機能
- 01永続的な Python サンドボックスセッション
- 02コードファイルの読み取り、検索、絞り込み
- 03ディレクトリツリーとパターン検索
- 04読み取り専用のディレクトリ限定アクセス
活用シーン
- 01大量の grep 結果を要約
- 02複数ファイルを読み、情報を抽出
- 03プロジェクトのモジュールを段階的に調査
- 04サンドボックス内で任意のセマンティック分析を実行
MCP 対応
この MCP サーバーは、セッション開始、Python コード実行、セッション終了のツールと、ファイル読み取り、検索、ディレクトリ閲覧の組み込み関数を提供します。任意の llm_query は Anthropic API を使い、サンドボックス内でセマンティック分析を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
RLM Tools
AI コーディングエージェントは、コードについて推論することよりも、コードを「読む」ことにトークン予算の大半を費やしています。grep、ファイルの読み込み、glob の結果がすべて会話に出力されます。大規模なコードベースでは、モデルが見る必要のない生データにコンテキスト(とコスト)の 25~35%が消費されます。
RLM Tools は、エージェントがコードを探索するための永続的なサンドボックスを提供します。データはサーバー側に保持され、結論だけが返されます。
# Install in one line (Claude Code)
claude mcp add rlm-tools -- uvx rlm-tools
# Or Codex
codex mcp add rlm-tools -- uvx rlm-tools
これだけです。エージェントは探索時にサンドボックスを自動的に使用します。設定も、プロンプトの変更も必要ありません。
何が変わるのか
RLM Tools なしの場合 — エージェントが import UIKit を grep すると、500 件の一致がコンテキストに出力されます。10 個のファイルを読み込み、その内容すべてにトークンを消費します。コンテキストウィンドウがいっぱいになり、エージェントは作業内容を忘れてしまいます。
RLM Tools ありの場合 — エージェントはサーバー側の Python サンドボックスで同じ探索を実行します。データはサンドボックスのメモリ内に保持され、コンテキストに入るのは print() の出力だけです。
matches = grep("import UIKit")
by_module = {}
for m in matches:
module = m["file"].split("/")[0]
by_module.setdefault(module, []).append(m)
for module, ms in sorted(by_module.items(), key=lambda x: -len(x[1]))[:5]:
print(f"{module}: {len(ms)} files")
grep の結果 500 行が、5 行の要約になります。エージェントに必要な情報だけが表示され、それ以外は表示されません。
実際の効果
一般的なコーディングワークフローでは、コンテキストを 25~35%削減できます。 つまり、コンテキストの上限に達するまでに、エージェントが探索できるコードがおよそ 40~50%増えます。
多数のファイルを読んだり、広範囲を検索したりする探索量の多いタスクでは、削減効果がさらに大きくなります。
| シナリオ | 標準ツール | RLM Tools | 削減率 |
|---|---|---|---|
| アプリ全体を grep で検索 | 40,045 chars | 1,644 chars | 95.9% |
| 大きなファイルを 10 個読む | 1,493,720 chars | 13,588 chars | 99.1% |
| 複数ステップの探索 | 136,102 chars | 5,285 chars | 96.1% |
| grep してから一致箇所を読む | 340,408 chars | 6,022 chars | 98.2% |
| パターンの使用箇所をすべて探す | 13,478 chars | 3,691 chars | 72.6% |
| モジュールを理解する | 94,745 chars | 16,925 chars | 82.1% |
ベンチマークの方法と再現手順の詳細:docs/benchmarks.md
仕組み
MCP ツールは 3 つだけです。API はこれですべてです。
| ツール | 用途 |
|---|---|
rlm_start(path, query) | ディレクトリを対象にセッションを開始 |
rlm_execute(session_id, code) | サンドボックス内で Python を実行 |
rlm_end(session_id) | セッションを終了し、リソースを解放 |
サンドボックスには、次のヘルパーが組み込まれています。
read_file(path)/read_files(paths)— ファイルを変数に読み込む(呼び出し間でキャッシュ)grep(pattern)/grep_summary(pattern)/grep_read(pattern)— 検索glob_files(pattern)— パターンに一致するファイルを検索tree(path, max_depth)— ディレクトリ構造を表示llm_query(prompt, context)— サブ LLM による分析(任意、API キーが必要)
変数はセッション内の rlm_execute 呼び出し間で保持されます。エージェントは検索、絞り込み、読み込み、分析を通じて段階的に理解を深められ、その間のデータがコンテキストウィンドウに触れることはありません。
対応環境
RLM Tools は標準的な MCP サーバーです。Claude Code、Codex、Cursor など、MCP 互換のあらゆるクライアントで動作します。
その他のインストール方法
JSON MCP 設定(Cursor、Windsurf など)
{
"mcpServers": {
"rlm-tools": {
"command": "uvx",
"args": ["rlm-tools"]
}
}
}
直接実行
uvx rlm-tools
ソースからインストール
git clone https://github.com/stefanoshea/rlm-tools.git
cd rlm-tools
uv sync
uv run rlm-tools
次に、MCP クライアントで command: uv、args: ["--directory", "/path/to/rlm-tools", "run", "rlm-tools"] を指定します。
設定
.env.example を .env にコピーしてカスタマイズします。すべての設定は任意です。RLM Tools は設定なしですぐに使えます。
基本的な探索機能(read、grep、glob、tree)に API キーは必要ありません。任意の llm_query() ヘルパーは、サンドボックス内での意味解析に Anthropic API を呼び出します。キーが必要なのはこの機能だけです。
| 変数 | デフォルト | 説明 |
|---|---|---|
ANTHROPIC_API_KEY | — | llm_query() のみに必要です。Anthropic の API(Claude)を使用します。 |
RLM_SUB_MODEL | claude-haiku-4-5-20251001 | llm_query() で使用する Claude モデル |
RLM_MAX_SESSIONS | 5 | 同時セッションの最大数 |
RLM_SESSION_TIMEOUT | 10 | セッションのタイムアウト時間(分) |
セキュリティ
サンドボックスは読み取り専用で、制限されています。
- インポート:安全な標準ライブラリのみ(re、json、collections、math など)
- 組み込み関数:exec、eval、compile、
__import__、breakpoint をブロックします - ファイルアクセス:読み取り専用で、セッションディレクトリ内に限定され、パストラバーサルはブロックされます
- 実行:呼び出しごとにタイムアウトを設定できます(デフォルトは 30s)
- レート制限:セッションごとの最大呼び出し回数を設定できます
背景
RLM Tools は、RLM スタイルの探索ループを実装しています。生データはツール側のメモリに保持し、コンパクトな出力のみをモデルに送信します。Model Context Protocol 上に構築されています。
開発
git clone https://github.com/stefanoshea/rlm-tools.git
cd rlm-tools
uv sync --dev
pytest tests
比較ベンチマークを実行します(ローカルのプロジェクトチェックアウトが必要です)。
RLM_EVAL_PROJECT_PATH=/path/to/project pytest evals -q -s
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。