プログラミング
Show HN: Mcptoon – ツール発見トークンを97%削減するMCP CLIクライアント
Show HN: Mcptoon – MCP CLI client that cuts tool discovery tokens by 97% (github.com)
要約
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とは提携していません。このツールが役立った場合は、他の人が見つけられるようにリポジトリにスターを付けてください。
バグ報告 | 機能リクエスト