Modelcostsaver について
ModelCostSaverは、コーディングエージェントやIDE向けのMCPサーバーです。LLM呼び出し前に費用を見積もり、タスクに合う低価格モデルを選びます。内蔵の料金カタログを使ってオフラインで動作し、APIキーやネットワーク接続は不要です。
主な機能
- 01単一呼び出しの費用を推定
- 02費用を予測してモデルを順位付け
- 03タスク、機能、予算でモデルを絞り込み
- 04料金比較とカタログ参照
- 05選択理由とフォールバック候補を提示
- 06任意で利用状況をローカル記録
活用シーン
- 01LLM呼び出し前に費用を見積もる
- 02タスクに合う低価格モデルを選ぶ
- 03候補モデル間の呼び出し費用を比較
- 04モデル利用状況をローカルに記録
MCP 対応
stdio経由でツールを提供するMCPサーバーで、Cursor、Claude Code、VS CodeなどのMCPクライアントから接続できます。料金推定とモデル提案を行いますが、推論リクエストの転送は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | はい | モデルのエイリアスまたは完全な ID。例:"sonnet"、"claude-sonnet-4-6"。 |
| inputTokens | integer | いいえ | 正確な入力トークン数。inputText が指定されている場合は省略可能です。 |
| outputTokens | integer | いいえ | 正確な出力トークン数。デフォルトではモデルの出力上限が使用されます。 |
| inputText | string | いいえ | プロンプトのテキスト。inputTokens が指定されていない場合、トークン数を推定します。 |
| expectedOutputText | string | いいえ | 想定される出力テキスト。outputTokens が指定されていない場合、推定します。 |
| charsPerToken | number | いいえ | 文字数/トークン数のヒューリスティック除数を上書きします。 |
詳細
ModelCostSaver
LLM 呼び出しのコストを事前に予測し、オフラインでエディターからタスクをこなせる最安モデルを選びます。
ModelCostSaver は、Model Context Protocol サーバーです。あらゆる AI コーディングエージェントや IDE に、LLM を呼び出す前にエージェントが必ず確認すべき次の 3 つの質問に答える、無料で設定不要のツールを提供します。
- 各候補モデルで、このプロンプトのコストはいくらですか?(
predict_cost、estimate_cost) - タスクの要件を満たす最安モデルはどれですか?(
select_optimal_model) - 選択肢を横並びで比較するとどうなりますか?(
compare_models)
日付付きのカタログを同梱した、料金計算とルーティングのみに特化した仕組みのため、コア機能にはAPI キーが不要で、ネットワーク呼び出しもありません。
クイックスタート
npx で直接実行します(インストール不要、キー不要)。
npx -y @workswarm/modelcostsaver
または、1 つのコマンドでエディター用の設定を書き込みます。
npx -y @workswarm/modelcostsaver install --client cursor
Cursor に追加 — クリックするだけで Cursor にインストールできます。または、以下のブロックを ~/.cursor/mcp.json に貼り付けるか、npx -y @workswarm/modelcostsaver install --client cursor を実行してください。
公式の MCP registry とエディターの MCP ディレクトリに io.github.sachinuppal/modelcostsaver として掲載されています。
7 つのツール
| ツール | 回答する質問 |
|---|---|
estimate_cost | トークン数がすでに分かっている(または推定できる)場合の、1 回の呼び出しのコストです。 |
predict_cost | 呼び出し前に、プロンプトから候補モデル一式のコストを予測します。安い順に並べます。 |
select_optimal_model | タスクのティア、機能、予算を満たす最安モデルを、詳細な理由とともに選びます。 |
compare_models | 固定のトークン構成について、relativeToCheapest を含むコスト表を横並びで表示します。 |
list_models / get_pricing | プロバイダー、ティア、機能、または最大入力価格で絞り込める料金カタログです。 |
optimize_request | 「モデル X を呼び出す予定ですが、もっと良い選択肢はありますか?」という質問に答え、より安い選択肢と節約額を返します。 |
record_usage | ローカルの使用記録を追加します(オプトイン方式。MODELCOSTSAVER_LEDGER=on でない限り無効です)。 |
コストを含むすべての結果には catalogVersion と asOf が付くため、料金情報がどれくらい新しいかを確認できます。すべての選択には reasoning 配列が含まれ、ブラックボックスの選択はありません。
信頼性:キー不要、オフライン、テレメトリーなし
エディターに組み込むツールでは、信頼性がすべてです。ModelCostSaver は次のとおりです。
- API キーは不要です。 コア機能は料金計算を行うもので、プロバイダーへの呼び出しはしません。漏えいするものはありません。
- デフォルトでオフラインです。 コアツールはネットワークに接続せずに正しい結果を返します。外部へのリクエストは、オプトインによるカタログ更新(
MODELCOSTSAVER_REFRESH=on)だけです。静的 JSON を 1 回 GET し、同梱カタログを置き換える前に zod で検証します。失敗した場合は常に同梱カタログにフォールバックします。 - テレメトリーは一切ありません。 デフォルトでは何も送信せず、ローカルで動作します。
record_usageはMODELCOSTSAVER_LEDGER=onを設定した場合にのみ、ユーザー自身の設定ディレクトリ内の JSONL ファイルに書き込みます。 - 依存関係は 2 つだけです。
@modelcontextprotocol/sdkとzodです。それ以外はありません。サプライチェーンのリスク範囲が小さく、npxのコールドスタートも高速です。 - Apache-2.0 です。 Workswarm が
@workswarm/modelcostsaverとして公開する、オープンソースの開発者向けツールです。配布バンドルにプロプライエタリなコードや内部サービスのコードは含まれていません。内部フレームワークのインポートも内部識別子もなく、依存関係のない料金計算とルーティングのロジックだけが含まれています。
stdout には JSON-RPC のみが出力され、すべてのログは stderr に出力されます。
IDE ごとのインストール
ModelCostSaver は stdio MCP に対応しているため、どこでも同じ npx コマンドを使います。install --client <name> を使って設定を書き込むと、冪等に処理されます。ブロックを手動で貼り付けることもできます。
Cursor
~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクト):
{ "mcpServers": { "modelcostsaver": { "command": "npx", "args": ["-y", "@workswarm/modelcostsaver"] } } }
npx -y @workswarm/modelcostsaver install --client cursor
Claude Code
claude mcp add modelcostsaver -- npx -y @workswarm/modelcostsaver
または、リポジトリのルートにある .mcp.json(install --client claude が書き込みます):
{ "mcpServers": { "modelcostsaver": { "command": "npx", "args": ["-y", "@workswarm/modelcostsaver"], "env": { "MODELCOSTSAVER_PROVIDERS": "anthropic" } } } }
Claude クライアントは独自の推論に Claude を使うため、インストール時に MODELCOSTSAVER_PROVIDERS=anthropic が、target: self の推奨に適したデフォルトとして設定されます。呼び出しごとに、または環境変数で上書きできます。Self と code を参照してください。
Claude Desktop
同じ mcpServers ブロックを claude_desktop_config.json に追加します。
VS Code / GitHub Copilot
.vscode/mcp.json:
{ "servers": { "modelcostsaver": { "command": "npx", "args": ["-y", "@workswarm/modelcostsaver"], "type": "stdio" } } }
npx -y @workswarm/modelcostsaver install --client vscode
Windsurf
同じ mcpServers ブロックを含む ~/.codeium/windsurf/mcp_config.json を使うか、次を実行します。
npx -y @workswarm/modelcostsaver install --client windsurf
Cline / Zed / Antigravity
同じ stdio の command/args を使います。対応するインストーラーを使用してください。
npx -y @workswarm/modelcostsaver install --client cline
npx -y @workswarm/modelcostsaver install --client zed
npx -y @workswarm/modelcostsaver install --client antigravity
サーバーを追加したら、クライアントを再起動し、ツール一覧に 7 つのツールが表示されることを確認します。
2 つの軸:self と code
ModelCostSaver は助言を行いますが、トラフィックのルーティングは行いません。そのため、すべての推奨は、実際に実行可能な選択肢に絞り込まれます。これは互いに独立した 2 つの軸に基づいています。
軸 1、利用可能性。 推奨は、許可されたプロバイダーのセットに絞り込まれます。デフォルトは接続されたクライアントから導出されます(MCP ハンドシェイクから読み取ります)。Claude クライアントは、独自の推論に Claude を使うため、デフォルトで anthropic になります。マルチプロバイダー対応のクライアント(Cursor、VS Code、Windsurf、Cline、Zed、Antigravity)と不明なクライアントは、すべてのプロバイダーがデフォルトで対象になります。対象範囲とその情報源は常に reasoning に示され、上書きできます。優先順位は、呼び出しごとの providers 引数、MODELCOSTSAVER_PROVIDERS、設定、クライアントのデフォルト、すべてのプロバイダーの順です。
軸 2、ターゲット。
target: 'self'(デフォルト):このクライアント内でエージェントまたはユーザー自身が次に行う推論です。軸 1 の対象範囲が適用されます。Claude Code では、Anthropic のモデル間での切り替え(Opus から Haiku など)を意味し、すぐに実行できます。target: 'code':ユーザー自身のアプリケーションから呼び出すモデルで、そのプロバイダーのキーはユーザーが用意します。クライアントの対象範囲は適用されないため、カタログに含まれるすべてのプロバイダーが対象になります。
ModelCostSaver は、実行可能な選択肢との隔たりを常に正直に示します。最も安価なモデルが実行可能な選択肢に含まれない場合は、理由とともに cheaperIfAvailable として提示し、黙って選択することはありません。たとえば、Claude Code で target: self を指定して要約を依頼すると、claude-haiku-4-5 が選択され、target: code を指定すれば、Anthropic 以外のより安価なモデルが存在することが示されます。
予測の仕組み
- トークン数。 指定された場合は正確な数を使用します。指定がない場合は、ヒューリスティックによる推定(
~4 chars/token、MODELCOSTSAVER_CHARS_PER_TOKENで調整可能)を使用します。この推定は概算ですが、候補間で共通して適用されるため、相対的な順位付けには適しています。出力トークン数は、明示的に指定した値、タスククラスの上限、モデルの上限、保守的なデフォルト値の順に適用されます。 - コスト。
(inTok / 1e6) * inputPerMillion + (outTok / 1e6) * outputPerMillionを、USD の完全精度値および整数のusdMicrosとして算出します。予測値がセント単位に丸められることはありません。 - 選定。 対象のティアを決定し(明示的な
taskClass、または透明性のあるキーワード/長さ分類器を使用)、候補をティア(上位へは変更しますが、下限より下にはしません)、機能、プロバイダーの範囲で絞り込み、各候補のコストを予測します。予算を超える候補はrejectedに振り分け、残った候補の中から最も安価なものを選びます。各ステップはreasoningに記録され、失敗時に再試行するためのfallbackChainが返されます。
設定
すべての設定は任意です。優先順位は、ツール呼び出しの引数、環境変数、modelcostsaver.config.json(現在の作業ディレクトリ、次にユーザー設定ディレクトリ)、組み込みのデフォルト値の順です。
| キー | 環境変数 | デフォルト | 用途 |
|---|---|---|---|
| ティアの上書き | MODELCOSTSAVER_TRIVIAL_MODEL、_FAST_MODEL、_STANDARD_MODEL、_REASONING_MODEL | 各ティアで最も安価なカタログ項目 | 各ティアで優先するモデルを固定します。 |
| プロバイダー | MODELCOSTSAVER_PROVIDERS | クライアントから取得 | 推奨対象の許可リスト(軸 1)です。 |
| デフォルトのプロバイダー | MODELCOSTSAVER_PROVIDER | なし | select_optimal_model の選定に優先傾向を加えます。 |
| ローカルモデルを含める | MODELCOSTSAVER_INCLUDE_LOCAL | off | セルフホスト可能なモデルや $0 のモデルを候補に含めます。 |
| 文字数/トークン | MODELCOSTSAVER_CHARS_PER_TOKEN | 4 | トークン推定器を調整します。 |
| 更新 | MODELCOSTSAVER_REFRESH | off | オプトイン方式のリモートカタログ更新を有効にします。 |
| カタログ URL | MODELCOSTSAVER_CATALOG_URL | 同梱版 | 更新元を上書きします。 |
| 台帳 | MODELCOSTSAVER_LEDGER | off | ローカルの record_usage 書き込みを有効にします。 |
| テレメトリー | MODELCOSTSAVER_TELEMETRY | off | 無効のままです。透明性のために記載しています。 |
価格データ
価格は頻繁に変わるため、ModelCostSaver はバージョンと日付を付けた初期データを同梱し、その鮮度を明示しています。
- 同梱されている
catalog.jsonには、catalogVersion、asOf日付、各エントリのsourceが含まれています。 - デフォルトではオフラインで動作し、同梱カタログのみを読み込みます。
MODELCOSTSAVER_REFRESH=onにすると、単一の静的 JSON を取得して zod で検証し、TTL を設定してキャッシュします。失敗した場合は、同梱版にフォールバックします。modelcostsaver.config.jsonのpricingOverridesマップを使うと、フォークせずに、個別交渉した料金やエンタープライズ向け料金を指定できます。
請求に使う数値を信頼する前に、必ず確認してください。 初期データはリリース時に各プロバイダーの公開価格ページと照合されます。いつ確認されたかは asOf 日付でわかります。自社の会計で絶対的な精度が必要な場合は、プロバイダーの請求書を確認してください。
開発
npm install # first time only
npm run build # tsup bundle to dist/index.js
npm test # vitest
npm run typecheck # tsc --noEmit
npm run smoke # stdio JSON-RPC smoke test (asserts stdout stays clean)
ライセンス
Apache-2.0。NOTICE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。