MCP Cost Optimizer について
MCP Cost Optimizer は、正規化されたLLM利用記録を分析し、モデル変更時のコストを見積もるローカルMCPサーバーです。利用データと料金を用意する開発者やチーム向けで、読み取り専用の計算をネットワーク接続やAPIキーなしで行います。
主な機能
- 01個別リクエストのコスト見積もり
- 02利用量とモデル別コストの集計
- 03モデル変更シナリオの比較
- 04料金が未登録のモデルの特定
- 05重複リクエストのキャッシュ機会の検出
活用シーン
- 01月ごとのエージェント利用コストの監査
- 02モデル移行前の削減額の見積もり
- 03キャッシュ候補となる重複リクエストの特定
- 04プロジェクトやチーム単位のコスト分析
MCP 対応
リクエスト単価の見積もり、利用記録の分析、モデル変更シナリオの比較を行う3つのMCPツールを提供します。構造化された記録と指定料金を受け取り、ファイルやネットワークにはアクセスしません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| rates | object | はい | |
| rates.asOf | string | いいえ | |
| rates.models | object | はい | |
| rates.currency | string | はい | |
| record | object | はい | |
| record.model | string | はい | |
| record.inputTokens | integer | はい | |
| record.requestHash | string | いいえ | |
| record.outputTokens | any | はい | |
| record.cachedInputTokens | any | いいえ |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
MCP Cost Optimizer
LLM の呼び出しにかかる費用と、モデルを切り替えた場合の節約額を確認できます。API キー不要のローカル MCP サーバーです。
AI エージェントの使用記録から、使いすぎている部分を見つけましょう。検討中の各モデルの費用を比較できます。憶測ではなく、実際の数値に基づいて判断できます。
目次
- クイックスタート
- MCP Cost Optimizer を選ぶ理由
- プロンプトの例
- MCP ツール
- 使用データのインポート
- ユースケース
- プライバシーとセキュリティ
- 比較
- 制限事項
- 無料版と Pro 版
- ロードマップ
- コントリビューション
- ライセンス
- 作者によるその他の MCP サーバー
クイックスタート
Claude Code プラグイン
/plugin marketplace add petrovicistefan/mcp-cost-optimizer
/plugin install mcp-cost-optimizer@mcp-cost-optimizer
任意の MCP クライアント
Cursor、VS Code、Windsurf、Claude Desktop、Cline、Codex CLI、Zed、Gemini CLI で使用できます。次のコマンドを 1 つ実行してインストールします。
npx -y mcp-cost-optimizer
または、MCP の設定ファイルに追加します。
Claude Desktop、Cursor、Windsurf、Cline、Gemini CLI — claude_desktop_config.json、~/.cursor/mcp.json、~/.codeium/windsurf/mcp_config.json、Cline の MCP 設定、~/.gemini/settings.json:
{
"mcpServers": {
"cost-optimizer": {
"command": "npx",
"args": ["-y", "mcp-cost-optimizer"]
}
}
}
VS Code / GitHub Copilot — .vscode/mcp.json:
{
"servers": {
"cost-optimizer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-cost-optimizer"]
}
}
}
Zed — settings.json:
{
"context_servers": {
"cost-optimizer": {
"command": "npx",
"args": ["-y", "mcp-cost-optimizer"]
}
}
}
Codex CLI:
codex mcp add cost-optimizer -- npx -y mcp-cost-optimizer
⭐ このプロジェクトを応援する
この MCP が役に立ったら、このリポジトリにスターを付けてください!
GitHub のスターは、ほかの開発者がこのプロジェクトを見つける助けになり、後で見返すために保存することもできます。オープンソースへのご支援、ありがとうございます!
MCP Cost Optimizer を選ぶ理由
AI エージェントを動かし、使用ログを確認して、次のような疑問をお持ちではありませんか?
- 費用はいくらでしたか? 正規化された使用記録を分析して、合計費用、モデルごとの内訳、料金データが不足しているモデルを確認できます。
- モデルを切り替えたらどうなりますか? 移行シナリオを比較できます。トークン数はそのままにモデルを変更し、推定節約額(または追加費用)を確認できます。
- 同じリクエストを繰り返していませんか? リクエストハッシュを指定すると、条件付きレスポンスキャッシュの適用機会を特定できます。
MCP Cost Optimizer の特長:
- ローカル優先:API キー、アカウント、外部へのリクエストは不要です。使用データはお使いのマシン内に保持されます。
- プロバイダーを問いません:独自の料金表を使用できます。あらゆる LLM プロバイダーに対応します。
- 透明性:計算はすべて決定論的です。隠れた前提や魔法のような仕組みはありません。料金を指定すれば、正確な推定値が得られます。
プロンプトの例
インストールしたら、AI エージェントに次のように尋ねてみましょう。
「指定した料金を使って、これらの正規化された使用記録を分析してください。不明なモデルと繰り返されているリクエストを特定し、より安価なモデルと比較してください。前提条件を説明し、本番環境のルーティングは変更しないでください。」
「gpt-4o と claude-sonnet-4.5 を合わせて 50,000 件リクエストしました。次の料金で費用を見積もり、そのうち半分を gpt-4o-mini に切り替えた場合の節約額を示してください。」
「現在のモデル使用状況を claude-haiku-3-5 と比較してください。移行した場合、月にいくら節約できますか?」
MCP ツール
サーバーは、次の3つのMCPツールを公開しています。
| ツール | 入力 | 結果 |
|---|---|---|
estimate_llm_cost | record、rates | 通貨と料金確認日を含む、単一リクエストのコスト見積もり |
analyze_llm_usage | records、rates | 集計分析:合計コスト、モデルごとの内訳、不明なモデル、重複リクエストの機会、トークン合計 |
compare_llm_models | records、rates、targetModel | 移行シナリオ:同じトークン数を維持した場合に別のモデルでかかる費用(品質評価は別途必要です) |
すべてのツールは、構造化されたJSON引数を受け付けます。結果は、整形済みテキストと構造化JSONの両方で返されます。
使用データのインポート
ツールには正規化された使用記録が必要なため、フックは十分に機能しません。 使用記録の取得方法を説明します。
想定される入力形式
各使用recordには、次の内容を含める必要があります。
{
"model": "gpt-4o",
"inputTokens": 1000,
"outputTokens": 50,
"cachedInputTokens": 0,
"requestHash": "optional-unique-identifier"
}
ルール:
model:正確なモデル名(料金ファイルの名前と一致する必要があります)inputTokens:キャッシュ済みトークンを含む入力トークンの合計outputTokens:出力トークンの合計cachedInputTokens:(任意)プロンプトキャッシュのヒット数(inputTokens以下である必要があります)requestHash:(任意)リクエスト全体の一意識別子(テナント、モデルパラメーター、システムコンテキスト、ツールの状態、鮮度)— 条件付きレスポンスキャッシュの機会を特定するために使用します
重要:OpenAIのprompt_tokensとAnthropicの個別のキャッシュフィールドは、そのままでは受け付けられません。先に正規化する必要があります。
例:OpenAIの使用状況エクスポート
OpenAIのダッシュボードから使用状況をエクスポートすると、model、prompt_tokens、completion_tokens、cached_tokensなどの列を含むCSVが取得できる場合があります。
正規化された形式に変換します:
// Example transformation (Node.js)
const fs = require('fs');
const Papa = require('papaparse'); // npm install papaparse
const csv = fs.readFileSync('openai-usage-export.csv', 'utf8');
const parsed = Papa.parse(csv, { header: true, dynamicTyping: true });
const normalized = parsed.data.map(row => ({
model: row.model,
inputTokens: row.prompt_tokens, // OpenAI prompt_tokens = total input
outputTokens: row.completion_tokens,
cachedInputTokens: row.cached_tokens || 0,
requestHash: row.request_id // if available
}));
fs.writeFileSync('normalized-usage.jsonl', normalized.map(r => JSON.stringify(r)).join('\n'));
次に、normalized-usage.jsonlを料金ファイルとともにエージェントに渡します。
例:Anthropicの使用状況エクスポート
Anthropicの使用状況エクスポートには、input_tokens、cache_creation_input_tokens、cache_read_input_tokens、output_tokensの個別フィールドが含まれます。
正規化された形式に変換します:
// Anthropic → normalized format
const normalized = anthropicUsage.map(row => ({
model: row.model,
inputTokens: row.input_tokens + row.cache_creation_input_tokens + row.cache_read_input_tokens,
outputTokens: row.output_tokens,
cachedInputTokens: row.cache_read_input_tokens,
requestHash: row.request_id // if available
}));
注:キャッシュ書き込みの料金は通常の入力料金とは別です。このMVPでは、キャッシュ書き込み料金と通常の入力料金を個別に設定することはできません。料金ファイルにcachedInputPerMillionを指定すると、キャッシュ読み取りにのみ適用されます。
料金ファイルの形式
独自の料金表をJSONで指定します。
{
"currency": "USD",
"asOf": "2026-10-19",
"models": {
"gpt-4o": {
"inputPerMillion": 2.5,
"outputPerMillion": 10.0,
"cachedInputPerMillion": 1.25
},
"claude-sonnet-4.5": {
"inputPerMillion": 3.0,
"outputPerMillion": 15.0
}
}
}
currency:3文字の通貨コード(例:"USD"、"EUR")asOf:(任意)料金を確認した日付models:正確なモデル名をキーとする項目inputPerMillion:入力トークン100万個あたりの料金outputPerMillion:出力トークン100万個あたりの料金cachedInputPerMillion:(任意)キャッシュ済み入力トークン100万個あたりの料金(省略した場合はinputPerMillionが適用されます)
料金ファイル内のすべてのモデルで、同じ通貨を使用する必要があります。 不明なモデルは合計から除外され、不完全としてマークされます。
サンプルファイル(架空の料金)については、examples/rates.jsonを参照してください。
使用例
1. AIエージェントのコスト監査
1か月間Claude CodeまたはCursorを使用し、セッションログがあるとします。次の内容を確認したい場合です。
- モデルごとの合計支出
- 料金データがないモデル
- モデルの切り替えで節約できる金額
ワークフロー:使用状況をエクスポートして正規化し、このMCPサーバーをインストールしたエージェントに渡します。「使用状況を分析し、より安価なモデルと比較してください」と依頼します。
2. モデル移行の計画
一部のワークロードでgpt-4oからgpt-4o-miniへの移行を検討しているとします。
ワークフロー:compare_llm_modelsを使って節約額を見積もります。このツールはトークン数が変わらないことを前提としている点にご注意ください。品質、コンテキストウィンドウ、レイテンシーは別途評価する必要があります。
3. レスポンスキャッシュの機会の検出
各リクエストにrequestHash(テナント、モデルパラメーター、システムコンテキスト、ツールの状態、鮮度要件のハッシュ)を指定します。
ワークフロー:analyze_llm_usageツールが重複するハッシュを特定し、条件付きレスポンスキャッシュを実装した場合の節約額の上限を報告します。これはプロバイダーのプロンプトキャッシュではなく、リクエスト単位の重複排除です。
4. 個人開発者/フリーランサー
複数のクライアント向けに作業しています。プロジェクトごとにLLMのコストを追跡したいと考えています。
ワークフロー:プロジェクトごとに使用状況ログを分けて記録します。それぞれ個別に分析し、請求用に合計を算出します。
5. チーム/エンタープライズ
チームで1つのAPIキーを共有しています。エンジニアごと、または機能ごとにコストを割り当てたいと考えています。
ワークフロー:エンジニア/機能の識別子を使用状況レコードに付与します。対象を絞って分析します。(将来的には、予算とアラートに対応したホスト型の方法を提供する予定です。)
プライバシーとセキュリティ
- テレメトリーなし:ローカルMCPサーバーまたはCLIから外部へのリクエストは一切ありません。
- 認証情報なし:サーバーがAPIキーを要求または保存することはありません。
- ファイル書き込みなし:MCPツールは構造化データのみを受け付け、ファイルの読み書きは行いません。
- CLIのサンドボックス化:CLIは現在のディレクトリ内にあるJSON/JSONLファイルのみを読み取り、シンボリックリンクを解決して、ルート外のパスを拒否します。読み取り前にファイルが通常ファイルであることと、サイズが20 MiB以下であることを確認します。JSONLは逐次解析され、レコード数は最大100,000件に制限されます。
- 安全な算術処理:集計されたトークン数が安全な整数の合計を超える場合は拒否されます。コスト計算で無限大の結果が生じる場合も拒否されます。
比較
| ツール | 主な用途 | ローカル | インポート形式 | モデル比較 | キャッシュの機会 | MCP サーバー |
|---|---|---|---|---|---|---|
| MCP Cost Optimizer | コスト分析とモデル切り替えシナリオ | ✅ | 正規化済みJSON | ✅ | ✅(リクエスト単位) | ✅ |
| agentacct | エージェントの作業状況の把握とコストダッシュボード | ✅ | Claude Code/Codexのログ | ❌ | ❌ | ❌(Pythonダッシュボード) |
| Tokenscope | Claude CLI向けメニューバーダッシュボード | ✅ | Claude CLIのログ | ❌ | ❌ | ❌(macOS/Windowsアプリ) |
| tokentop | リアルタイムのターミナル監視 | ✅ | プロバイダーAPI+セッションファイル | ❌ | ✅(プロバイダーのキャッシュ率) | ❌(TUI) |
| llm-cost-dashboard | 予算と予測に対応したターミナルダッシュボード | ✅ | ログファイル/標準入力 | ❌ | ❌ | ❌(Rust製TUI) |
MCP Cost Optimizerの特長:
- MCPネイティブ:あらゆるMCPクライアント(Claude Code、Cursor、VS Code、Windsurf、Cline、Zed、Claude Desktop、Gemini CLI、Codex CLI)で動作します。
- モデル比較:移行シナリオでの節約額(または追加コスト)を見積もります。
- リクエスト単位のキャッシュ検出:ハッシュを指定すると、重複リクエストを特定できます。
- プロバイダーに依存しない設計:独自の料金表(OpenAI、Anthropic、Gemini、Llama、Mistralなど)を使用できます。
- 透明性:すべての計算は決定論的です。推測や隠れた前提はありません。
制限事項
これはMVP(v0.1.2)です。現時点では、次の機能に対応していません。
- キャッシュ書き込み料金:キャッシュ書き込み専用の料金には対応していません。設定可能なのは、
cachedInputPerMillionによるキャッシュ読み取り料金のみです。 - 推論トークン:拡張推論トークン(例:OpenAI o1/o3シリーズ)は、このバージョンでは個別に料金設定されません。
- 料金の自動更新:料金ファイルはご自身で管理する必要があります。このツールはプロバイダーから最新の料金を取得しません。
- 請求書との照合:見積もりは指定された価格に基づいており、プロバイダーの請求書には基づいていません。通貨換算と税金は含まれません。
- 品質評価:モデル比較では、トークン数が変わらないものと仮定します。品質、トークナイザーの違い、コンテキストウィンドウ、ツールのサポート、レイテンシーは、別途評価する必要があります。
- 自動ルーティング:このツールが提供するのは見積もりのみです。アプリケーションのモデル選択は変更しません。
無料版とPro
- ローカルMCP/CLI:永久に無料です。オフラインで動作します。アカウント、APIキー、利用上限はありません。
- ホスト型の方法(将来):集中管理型の利用上限、予算、アラートを必要とするチーム向けに、コントロールプレーンと連携するホスト型HTTP方式を計画しています。料金は未定です。
ロードマップ
- 自動正規化のためのプロバイダーアダプター(OpenAI、Anthropic、Gemini、Bedrock)
- キャッシュ書き込みトークンと推論トークンの計上
- 検証済みのバージョン管理された料金カタログ
- プロジェクトの予算とアラート
- 品質ゲート付きモデル評価
- ホスト型レポートダッシュボード
自動最適化を追加する前に、実際の使用状況でこれらの機能を検証してください。
コントリビューション
コントリビューションを歓迎します!CONTRIBUTING.md(存在する場合)を参照するか、イシューを作成してください。
コントリビューションの前に:
npm testとnpm run checkを実行して、変更を検証してください。- 既存のコードスタイルに従ってください(core.js には外部依存関係を含めない、ESM モジュールを使用する、テストには node:test を使用する)。
- 新機能にはテストを追加してください。
ライセンス
MIT © Stefan Petrovici
作者が提供するその他の MCP サーバー
petrovicistefan MCP スイートの一部 — AI コーディングエージェント向けのローカル優先ガードレールです。
| サーバー | 目的 | リンク |
|---|---|---|
| 🛡️ MCP Security Guard | MCP サーバー内のツール汚染、ラグプル、プロンプトインジェクションを検出 | GitHub |
| 💰 MCP Cost Optimizer | LLM コストとモデル切り替えによる節約額を分析 | GitHub |
| 🗄️ MCP Database Doctor | スキーマの問題、遅いクエリ、欠落しているインデックスを診断 | GitHub |
| 📦 MCP Dependency Doctor | 古いパッケージ、CVE、ライセンスの競合を検出 | GitHub |
| 🔍 MCP SEO Auditor | メタタグ、スキーマ、パフォーマンスのローカル SEO チェック | GitHub |
| 🌐 MCP API Guardian | OpenAPI 仕様を検証し、互換性を損なう変更を検出 | GitHub |
| 🏪 MCP Marketplace | スイート全体を閲覧・検索 | GitHub |
役に立ちましたか?ほかの人にも見つけてもらえるよう、⭐ このリポジトリにスターを付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。