OneTool MCP について
OneTool MCP は、250 を超えるツールを Python API として公開し、既存の他の MCP サーバーもプロキシできる単一の MCP サーバーです。ツール定義によるコンテキストと トークンの消費を抑えたい開発者を対象としています。
主な機能
- 01250 を超える Python 関数形式のツール
- 02既存 MCP サーバーのプロキシと実行時の制御
- 03大きな出力を扱う ctx ハンドル
- 04セマンティック検索対応の mem 永続メモリ
- 05age 暗号化によるシークレット管理とパス境界制御
活用シーン
- 01検索、ドキュメント、データベースのツールを1つのサーバーから利用
- 02中間結果を変数で受け渡すツールの一括実行や連続実行
- 03既存の MCP サーバーを単一の入口に集約
MCP 対応
MCP サーバーとして動作し、内蔵ツールと YAML 設定でプロキシした他の MCP サーバーのツールを、Claude Code、Cursor、Codex などのクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧿 開発者向けの MCP はこれひとつ。ツール利用料も、コンテキストの劣化もありません。
エージェントが Python コードとして呼び出す 250 以上のツール:検索、ドキュメント、ファイル、データベース、図表、ビジョン、メモリに加え、すでに利用しているあらゆる MCP サーバー用のプロキシも備えています。
Claude Code、Cursor、Codex など、あらゆる MCP クライアントで動作します
問題点
MCP サーバーはリクエストのたびにツール定義を再送信します。毎回 3K~30K トークンです。サーバーを 5 つ接続すると、会話を始める前に 55K トークンを消費します。10 個以上接続すると、100K に達します。
計算すると深刻です。入力トークン 100 万個あたり $5 の Claude Opus 4.5 で、20 日間 × 10 会話 × 10 メッセージ × 3K トークンの場合、MCP サーバー 1 つあたり月額 $30です。ツールを一度も使わなくてもかかります。
さらに、コンテキストの劣化もあります。ツールを追加するほど、AI は文字どおり性能が低下します(Chroma Research、2025)。
解決策
OneTool は、ツールを Python API として公開する 単一の MCP サーバーです。ツール定義を読む代わりに、エージェントがコードを書きます。
__onetool brave.search(query="react 19 server components")
MCP サーバーを 1 つ設定するだけです。ツールをいくつ追加しても、使用するのは約 2K トークンです。
「エージェントは、ツールを呼び出すコードを書くことで、より適切にスケールできます。これにより、トークン使用量を 150,000 トークンから 2,000 トークンに削減でき……コストを 98.7% 節約できます」
トークンを 97% 削減。コストを 30 分の 1 に。コンテキストの劣化なし。(実測値 — MCP サーバー 18 個に対して、入力トークンを 47,660 から 1,131 に削減。)
コードがインターフェース
ツールは Python 関数なので、エージェントはツール呼び出しの JSON ではできない、バッチ処理、連鎖、ループ、組み合わせを実行できます。
__onetool
page = webfetch.fetch(url="https://fastmcp.dev/changelog", output_format="markdown")
notes = ot_llm.transform(data=page, prompt="Summarise the breaking changes")
mem.write(topic="deps/fastmcp", content=notes)
3 つのパックを 1 回のリクエストで利用できます。中間結果は変数としてツール間で受け渡されるため、ページ本文がコンテキストウィンドウに入ることはなく、要約も高価なコーディングエージェントではなく、安価なモデルで実行されます。
呼び出しはすべて明示的で確認可能です。__onetool brave.search(query="...") を見れば、何が実行されるか正確にわかります。ツール選択を推測する必要はありません。
また、ランタイムはエージェントの実際の入力方法に合わせて設計されています。
mem.search(q="auth")と入力できます。曖昧さのないパラメーターの接頭辞はすべて解決されます(q=→query=)wb.draw(...)と入力できます。パックには短いエイリアス(wb、ctx、img)があります- プロキシ経由のサーバーでは
github.listRepositories()が動作します。snake_case/camelCase/PascalCase のいずれでも解決されます - ツール名を間違えると候補が表示され、サーバーが切断されている場合は、修正に使うコマンドが示されます
- 大きすぎる結果はウィンドウにあふれないよう、検索可能なハンドルとして返されます
インストール
ブートストラップ(uv が見つからない場合はインストールし、OneTool をインストールして、設定を初期化し、MCP 設定を表示します):
curl -LsSf https://onetool.beycom.online/install.sh | sh # macOS / Linux
irm https://onetool.beycom.online/install.ps1 | iex # Windows (PowerShell)
または、uv を使って手動でインストールします:
uv tool install 'onetool-mcp[all]' # everything
onetool init --config ~/.onetool
次に、解決済みの絶対パスを含む、すぐに貼り付けられる MCP クライアント設定を表示して、お使いのクライアント(claude-code、claude-desktop、cursor、または vscode)に追加します:
onetool init mcp-config --client claude-code # or omit --client for all four
これだけです。250 以上のツールをすべて、すぐに利用できます。
検証:onetool init validate --config ~/.onetool/onetool.yaml
vercel-labs/skills を使って、ot-ref スキルをエージェントにインストールします。このスキルでは呼び出し規約を学べるほか、すべてのツールシグネチャを検索できるインデックスが付属しています:
npx skills add https://github.com/beycom/onetool-mcp --skill ot-ref --agent claude
内容
| 検索とドキュメント | Brave、Google の検索結果に基づく検索、Tavily 検索(それぞれにバッチモードと回答モードあり)、Context7 のライブラリドキュメント、抽出制御付きのウェブ取得 |
| ファイルとデータ | パス境界付きのファイル操作、Excel の完全な制御、SQL データベース、PDF/Word/PowerPoint から Markdown への変換、ripgrep、パッケージのバージョン |
| コンテキストの効率化 | 大容量の出力を扱う ctx ハンドル、部分的なファイル読み込み(toc/slice)、専用の低コストモデルによる画像認識(ホストのトークン消費ゼロ)、LLM への委任(コストを 10 分の 1 に削減) |
| 永続状態 | セマンティック検索とキーワード検索に対応した mem メモリ、履歴とロールバック、AI による拡張機能を備えた knowledge RAG ベース、Git ベースのプロジェクトスナップショットを作成する localhist |
| ビジュアル | Mermaid 互換 DSL とオフラインの自動レイアウトに対応したライブ Excalidraw ホワイトボード、Mermaid/PlantUML/D2 ダイアグラム、draw.io で編集可能な SVG に変換するアーキテクチャモデル |
| ランタイム | 実行時の有効化/無効化/再起動に対応した MCP サーバープロキシ、実行中プロセスへの直接的な CLI/API アクセス、エージェント向け ot-ref スキル、会話中のツール生成 |
| 信頼性 | OS のキーチェーンを使った age 暗号化シークレット、AST 検証、パス境界、出力のサニタイズ、推定削減量を含む実行時統計 |
ツール
28 個のパックに、すぐに使える 253 個のツールが含まれています(console はベータ版):
| Pack | Tools | Extra | Description |
|---|---|---|---|
arch | generate, validate, bundle_solution, … | [dev] | アーキテクチャモデル → draw.ioで編集可能なSVG |
brave | search, news, image, video, search_batch | [util] | Braveのウェブ検索 |
chrome_util | highlight_element, guide_user, … | [dev] | ブラウザーの注釈(Chrome DevTools) |
console (ベータ) | show, display, list, read, clear | 今後公開予定のonetool-consoleアプリへのメッセージ | |
context7 | search, doc | [dev] | ライブラリのドキュメント |
convert | pdf, word, powerpoint, excel, auto | [util] | ドキュメント → Markdown |
db | query, schema, tables, sample | [dev] | SQLデータベース |
diagram | render_diagram, batch_render, get_template, … | [dev] | Kroki経由のMermaid / PlantUML / D2 |
excel | read, write, formula, create_table, … (24 tools) | [util] | Excelの全機能を操作 |
file | read, write, edit, grep, slice, toc, … (16 tools) | [util] | パス境界を設定したファイル操作 |
ground | search, dev, docs, reddit, search_batch | [util] | 情報源付きのGoogle検索 |
knowledge | search, ask, write, related, … (15 tools) | [util] | RAGナレッジベース(ハイブリッド検索) |
localhist | save, diff, restore, autosave_start, … (15 tools) | [dev] | Gitで管理されたローカル履歴のスナップショット |
mem | write, search, ask, history, rollback, … (31 tools) | [util] | セマンティック検索に対応した永続メモリー |
ot | help, tools, stats, status, result, … (18 tools) | 内部情報の取得と管理 | |
ot_context (ctx) | write, read, grep, slice, toc, ask, … (13 tools) | 大きな出力向けのスマートなコンテキストストア | |
ot_forge | create_ext, validate_ext | 新しいツールパックのひな型を作成 | |
ot_image (img) | load, ask, clip_ask, summary, … (9 tools) | 専用モデルによる画像認識 | |
ot_llm | transform, transform_file | LLMを活用した変換 | |
ot_secrets | set, encrypt, audit, rotate, … (8 tools) | 暗号化されたシークレットの管理 | |
ot_servers | enable, disable, restart, status | プロキシサーバーのランタイム制御 | |
ot_timer | start, stop, elapsed, list, clear | 名前付きタイマー | |
package | pypi, npm, version, audit, models | [dev] | パッケージのバージョンと古さの確認 |
play_util | highlight_element, guide_user, … | [dev] | ブラウザーの注釈(Playwright) |
ripgrep | search, count, files, types | [dev] | 高速なコード検索 |
tavily | search, research, extract, search_batch, … | [util] | AIネイティブな検索と抽出 |
webfetch | fetch, fetch_batch | [dev] | ウェブコンテンツの抽出 |
whiteboard (wb) | open, draw, layout, screenshot, … (22 tools) | [util] | ライブExcalidrawキャンバス |
| 📖 ツールの完全なリファレンス — すべてのシグネチャをソースから生成 |
MCP サーバープロキシ
すでに使用している MCP サーバーをそのまま使えます。YAML でラップし、ツールのオーバーヘッドなしで、Python の名前空間として明示的に呼び出します。
# .onetool/onetool.yaml
servers:
local_tools:
type: stdio
command: npx
args: ["-y", "some-mcp-server@latest"]
private_api:
type: http
url: ${PRIVATE_MCP_URL}
auth:
type: bearer
token: ${PRIVATE_MCP_TOKEN}
__onetool private_api.read_resource(path="README.md")
プロキシされたサーバーは、クライアントを再起動せずに ot_servers で会話の途中でも有効化、無効化、再起動できます。
コミットできるシークレット
onetool init では、暗号化されたシークレットの設定を順に進められます。secrets.yaml 内の値は age で暗号化され、秘密鍵は OS のキーチェーンに保存され、読み込み時に透過的に復号されます。
# secrets.yaml - safe to inspect, safe to commit
brave_api_key: age1enc:YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNT...
CLI から使用
MCP サーバーとしてだけでなく、同じ実行中のプロセスへの直接 CLI ブリッジとしても動作します。読み込み済みの設定、シークレット、プロキシ接続はそのまま維持されます。エージェントハーネス、スクリプト、自動化に便利です。
# Recommended local MCP root mode: stdio
onetool serve --config .onetool/onetool.yaml
# URL-based MCP root mode for containerized clients
onetool serve --transport http --config .onetool/onetool.yaml --host 127.0.0.1 --port 8767 --path /mcp
# Enable the MCP-owned direct API in onetool.yaml:
# direct.host.enabled: true
# Start OneTool as MCP, then use the port printed in startup logs.
onetool direct run --port 8765 "ot.packs()" --format json | jq '.[0].name'
onetool direct run --port 8765 "brave.search(query='latest AI news')" --format raw
拡張
Python ファイルを配置するだけで、パックが使えます。登録も設定も不要です。
# .onetool/tools/wiki.py
pack = "wiki"
def summary(*, title: str) -> str:
"""Get Wikipedia article summary."""
import httpx
url = f"https://en.wikipedia.org/api/rest_v1/page/summary/{title}"
return httpx.get(url).json().get("extract", "Not found")
__onetool wiki.summary(title="Python_(programming_language)")
ドキュメント
- クイックスタート - 最初のツール呼び出しまで30秒
- インストール - すべてのプラットフォーム
- 設定 - YAML スキーマ
- ツールリファレンス - 全253個のツール
- セキュリティ - 多層セキュリティモデル
- 拡張 - 独自のツールを作成
- 開発者向けドキュメント - 内部向け開発者ドキュメント
- 仕様 - OpenSpec 仕様のインデックス
参考資料
- MCP によるコード実行 - Anthropic Engineering
- コンテキストの劣化 - Chroma Research
テレメトリ
OneTool は匿名の起動時 ping(イベントの種類、バージョン、OS)を送信します。個人データは送信されません。オプトアウトするには、export DO_NOT_TRACK=1 を実行するか、onetool.yaml で telemetry.enabled: false を設定します。詳細
問題
まず既存の問題を確認してください:
- 課題トラッカーを確認する:github.com/beycom/onetool-mcp/issues
- GitHub の構文で検索する:
is:issue repo:beycom/onetool-mcp <keyword>
新しい問題を報告する: github.com/beycom/onetool-mcp/issues/new
サポート
OneTool が役に立ったと感じたら:
ライセンス
GPLv3
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。