HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Mcptoon – ツール発見トークンを97%削減するMCP CLIクライアント

Show HN: Mcptoon – MCP CLI client that cuts tool discovery tokens by 97% (github.com)

56 pointsby mcptokensaver40 コメント

要約

Mcptoonは、AIエージェントがMCP(Model Context Protocol)サーバーと通信する際のトークン消費を大幅に削減するCLIクライアントです。特にツール発見時のJSONオーバーヘッドを97%削減し、TOON(Token-Optimized Object Notation)という独自の軽量フォーマットを使用します。依存関係ゼロのPython製で、クロスプラットフォーム対応、あらゆるAIエージェントと連携可能です。

全文翻訳

mcptoon MCPツールの発見コストは10,000トークン以上ですが、mcptoonは350トークンです。あらゆるAIエージェントに対応する1つのMCPクライアントで、クロスプラットフォーム、ゼロ依存です。このツールがトークンを節約できたら、リポジトリにスターをお願いします。発見に役立ちます。 問題 MCP対応の会話は、データではなく構文にトークンを消費します。 エージェントが5つのMCPサーバーに接続し、それらのツールをリストアップすると、約10,000トークンのJSONが生成されます。 エージェントが20個のツールを呼び出すと、各ツールは実際の思考が始まる前に、JSONでラップされた500〜3,000トークンを返します。 合計MCPオーバーヘッドは、実際の思考が始まる前に40,000〜70,000トークンになります。 128Kコンテキストウィンドウでは、30〜55%が失われます。作業ではなく、構文にです。 解決策 mcptoonは、任意のMCPサーバー(stdioまたはHTTP)に接続し、JSONの代わりにTOON(Token-Optimized Object Notation)を出力するCLIクライアントです。 操作 JSONトークン mcptoonトークン 節約 ツール発見(96ツール) 約2,000 約60 97% ツール結果(構造化データ) 約800 約350 56% ツール結果(生のHTML/テキスト) 約1,000 約900 10% ゼロ依存。ピュアPython。50KB。 Claude Code、Codex、OpenCode、Cursor、CatPawなど、シェルコマンドを実行できるあらゆるAIエージェントと連携します。 JSONを表示(287トークン) — 他のすべてのMCPクライアントが返すもの: [ { "name": "search_web", "description": "Search the web for information", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "Search query" }, "num_results": { "type": "number", "default": 5 } }, "required": ["query"] } }, { "name": "fetch_url", "description": "Fetch content from a URL", "inputSchema": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] } } ] TOON(5トークン) — mcptoonが返すもの: search_web fetch_url ツール発見で98%、スキーマ全体で60%削減、情報損失ゼロ。 クイックスタート pip install mcptoon ゼロ依存。50KB。Python 3.10+。Windows、macOS、Linux。 mcptoon init # サンプル設定: ~/.mcptoon/config.json mcptoon add fetch --stdio npx -y @modelcontextprotocol/server-fetch mcptoon manifest --toon # -> fetch:fetch mcptoon call fetch fetch '{"url":"https://example.com"}' --toon mcptoon call fetch fetch '{"url":"https://example.com"}' --json # JSONが必要な場合 TOONの仕組み JSON TOON 理由 {"name":"search","count":3} name:search|count:3 波括弧 + 引用符 + コロンをパイプで置換 [1, 2, 3] 1 2 3 スペースで括弧 + カンマを置換 true / false T / F 1文字 vs 4-5 null ∅ 1記号 vs 4文字 "line1\nline2" line1↲line2 エスケープシーケンスを↲で置換 出力フォーマット フラグ 表示内容 トークンフットプリント --toon コンパクト表記、完全なセマンティクス JSONより40-60%削減 --compact ツール名のみ、スペース区切り JSONより97%削減 --json 標準JSON(スクリプト、CI用) ベースライン --raw 解析なしの生のレスポンス フルサイズ --head N 最初のN項目のみ 可変 --max-chars N N文字でハードカット 可変 --full デフォルトの4000文字制限を無効化 フルサイズ MCPTOON_AGENT_TYPE=claude を設定すると、すべての呼び出しで--toonが自動選択されます。 他のMCPクライアントとの比較 mcptoon mcp-cli mcporter raw MCP SDK トークン節約 97%マニフェスト、40-60%結果 0% 0% 0% 全エージェント対応 はい(Claude Code、Codex、OpenCode、Cursor、その他すべて) Claudeのみ Claudeのみ 変動あり 全エージェントで1つの設定 はい いいえ いいえ いいえ 出力フォーマット TOON + JSON + compact JSON JSON JSON 依存関係 0 5-20 npm 3-8 npm 危険な操作のブロック はい いいえ いいえ いいえ 使用状況追跡 ローカル いいえ いいえ いいえ スキーマキャッシュ はい(5分) いいえ いいえ いいえ インストールサイズ 約50KB 約50MB+ 約30MB 約10MB プラットフォームサポート Windows、macOS、Linux Linux/macOS macOS 変動あり 全エージェントとの連携 mcptoonはCLIツールです。エージェントがシェルコマンドを実行できれば、mcptoonを使用できます。 エージェント 使用方法 Claude Code SKILL.mdファイルにmcptoonコマンドを記述。 Codex (OpenAI) AGENTS.mdにmcptoonを追加。 OpenCode カスタムコマンドでmcptoonを使用。 Cursor .cursorrulesにmcptoonを追加。 CatPaw skillファイルにmcptoonコマンドを記述。 あらゆるエージェント シェルコマンドを実行できれば、mcptoonを呼び出せます。 MCPサーバーの設定は一度だけ ~/.mcptoon/config.json で行います。すべてのエージェントが同じサーバー、同じツール、同じトークン節約を共有します。 Claude Code export MCPTOON_AGENT_TYPE=claude # 自動選択 --toon # ~/.claude/skills/mcp-tools/SKILL.md Webを検索: mcptoon call exa search '{"query":"AI news"}' 利用可能なツールをリスト: mcptoon manifest --toon URLを取得: mcptoon call fetch fetch '{"url":"https://example.com"}' Codex (OpenAI) # AGENTS.md またはシステムプロンプトで MCPツールを呼び出すためにmcptoonを使用します。JSONと比較して60%のトークンを節約します。 - ツールリスト: mcptoon manifest --toon - ツール呼び出し: mcptoon call <server> <tool> '{"args":"here"}' --toon Python API from mcptoon.client import MCPClient from mcptoon.output import toon with MCPClient(stdio=["npx", "-y", "@modelcontextprotocol/server-fetch"]) as c: tools = c.list_tools() print(toon(tools)) # コンパクトなTOON結果 result = c.call_tool("fetch", {"url": "https://example.com"}) print(toon(result)) カスタムハンドラ — MCPを完全にバイパス from mcptoon.router import register @register("my-database", "db") def handle_db(tool, args): if tool == "query": return {"rows": my_db.execute(args["sql"]) } return None # フォールスルーしてMCPへ 設定 # stdio (任意のnpx MCPサーバー) mcptoon add fetch --stdio npx -y @modelcontextprotocol/server-fetch mcptoon add github --stdio npx -y @modelcontextprotocol/server-github # HTTP mcptoon add myapi --http http://localhost:3001/mcp --header "Authorization: Bearer xxx" 設定は ~/.mcptoon/config.json に保存されます。プロジェクトレベルのオーバーライドは ./.mcptoon.json で可能です。 安全性 mcptoonは、delete、drop、purge、wipe、killなどの危険なパターンに一致する操作をブロックします。--destructive を渡さない限り実行されません。 $ mcptoon call db delete_table '{"name":"users"}' エラー [CONFIRMATION_REQUIRED]: 危険な操作には確認が必要です $ mcptoon call db delete_table '{"name":"users"}' --destructive # 実行 使用状況 $ mcptoon usage 合計呼び出し: 142 成功率: 138/142 トークン(推定): 84,200 サーバー別: fetch 89 github 53 ~/.cache/mcptoon/usage.json にローカルに保存されます。送信されることはありません。 アーキテクチャ src/mcptoon/ ├── cli.py # CLIエントリ + 引数解析 ├── client.py # MCPClient — stdio + HTTPトランスポート ├── router.py # ツールルーティング、カスタムハンドラ、安全チェック ├── config.py # サーバー設定 ├── manifest.py # キャッシュ付きツール発見 ├── output.py # TOON / JSON / compact レンダリング ├── cache.py # スキーマキャッシュ(5分TTL) ├── usage.py # ローカル使用状況追跡 └── errors.py # 構造化エラーエンベロープ 合計約1,700行。サードパーティ製インポートはゼロ。 プライバシー テレメトリなし。分析、クラッシュレポート、電話ホームなし。認証情報ストレージなし。APIキーは設定または環境変数から渡されます。依存関係なし。ピュアPython標準ライブラリ。監査すべきサプライチェーンなし。脆弱性を見つけましたか?security@activeing123.github.io までメールしてください。SECURITY.md を参照してください。 ライセンス Apache 2.0。LICENSE および NOTICE を参照してください。 貢献 git clone https://github.com/activeing123/mcptoon.git cd mcptoon pip install -e . --no-build-isolation pip install pytest pytest-cov python -m pytest tests/ -v # 98テスト、0.09秒 ゼロ依存は厳格なルールです。新機能にはテストが必要です。CONTRIBUTING.md を参照してください。 mcptoonは独立したサードパーティ製MCPクライアントです。Anthropicとは提携していません。このツールが役立った場合は、他の人が見つけられるようにリポジトリにスターを付けてください。 バグ報告 | 機能リクエスト