ModelLens について
ModelLens は、OpenAI 互換ゲートウェイが提供するモデルを測定する MCP サーバー兼 CLI です。実際のリクエスト結果を記録し、性能に基づいてモデルを順位付け、推奨します。
主な機能
- 01公開モデルの検出
- 02遅延、成功率、ストリーミング、ツール呼び出しの検証
- 03モデルごとの検証履歴の保存
- 04プロファイル別の順位付けと推奨
- 05Markdown レポートの生成
活用シーン
- 01速度重視の設定に使うモデルの選定
- 02ユーザーが気付く前のプロバイダー障害の把握
- 03ルーティンググループ内のモデル比較
- 04新しいプロバイダーの動作確認
MCP 対応
ModelLens は stdio 経由で、モデルの検出、検証、順位付け、推奨、レポート作成のツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | string | いいえ | エンドポイントあたりのモデル数の上限(任意) |
| contains | string | いいえ | 部分文字列による任意のフィルター(モデル ID に一致) |
詳細
ModelLens
実際に使えるモデルを見極めましょう。
あらゆる OpenAI 互換ゲートウェイを、可視化して順位付けできるモデル一覧に変える MCP サーバーです。プロバイダーが公開しているモデルを検出し、今この瞬間に使えるかどうか(レイテンシー、成功率、キャンセル、ストリーミング、ツール呼び出し)をテストして、履歴を保持し、**「どのモデルを使うべきか?」**に回答します。
サードパーティー製の依存関係はありません。Python 3.9 以降の標準ライブラリのみを使用します。
なぜ必要なのか
複数のモデルプロバイダーを使っているなら、すでに次のような問題に直面しているはずです。
- ゲートウェイには 89 個のモデルがあると表示されています。実際に応答するのは何個でしょうか?
- 今日はどのモデルが速いでしょうか?昨日の結果はもう古くなっています。
- ルーターは一覧の先頭にあるモデルを選びますが、そのモデルは遅いです。
- ユーザーから苦情が来るまで、障害に気づけません。
ModelLens は、こうした状況を可視化します。モデル一覧を信頼するのと、実際に測定することの違いです。
稼働中のゲートウェイでの実例(89 個のモデル、16 個をテスト):
magpie/kilo/nvidia/nemotron-3.5-super-vl:free 97.6 100.0% 0.0% 628ms healthy
magpie/auto/beam-free 96.6 100.0% 0.0% 909ms healthy
magpie/longcat/LongCat-2.5 88.4 100.0% 0.0% 3104ms mixed
magpie/group/daily 70.0 100.0% 0.0% 77345ms mixed
magpie/radeon-cloud/DeepSeek-V4.1-Flash 70.0 100.0% 0.0% 87388ms mixed
magpie/nvidia/deepseek-ai/deepseek-v4.1-flash 0.0 0.0% 100.0% - unreliable
magpie/modelscope/Qwen/Qwen3.8-27B 0.0 0.0% 0.0% - quota_blocked
デフォルトのルーティンググループでは、87 秒かかるモデルが先頭に、0.9 秒のモデルが 3 番目に配置されていました。ModelLens はこれを一度の実行で見つけました。
インストール
# from PyPI
pip install modellens-mcp
modellens --config config.json --data history.json --once ranking
またはソースから直接実行できます。依存関係もインストール手順もありません。
curl -fsSL https://raw.githubusercontent.com/Greatbeing/modellens/main/modellens.py -o modellens.py
python3 modellens.py --config config.json --data history.json --once ranking
設定
{
"endpoints": [
{"name": "magpie", "base_url": "http://127.0.0.1:3425/v1", "api_key": ""},
{"name": "openai", "base_url": "https://api.openai.com/v1", "api_key": "sk-..."},
{"name": "ollama", "base_url": "http://127.0.0.1:11434/v1"}
]
}
ローカルホストのゲートウェイでは、api_key を空にできます。models を指定すると、公開されている一覧を任意でフィルタリングできます。enabled: false にすると、エンドポイントを削除せずに無効化できます。
MCP サーバーとして実行する
任意の MCP クライアントから接続します。
{
"mcpServers": {
"modellens": {
"command": "python3",
"args": ["/path/to/modellens.py",
"--config", "/path/to/config.json",
"--data", "/path/to/history.json"]
}
}
}
Claude Desktop、Cursor、Windsurf、VS Code、その他あらゆる MCP クライアントで動作します。
DeepSeek Harness
プロファイルの cordis.patch.yml に登録します(注意:新しいエントリーには - insert: が必要です。- id: だけの場合は、既存のエントリーを変更するという意味になります)。
- insert:
- id: modellens
name: "@deepseek-ai/dsh-mcp-client"
config:
serverName: "modellens"
transport: "stdio"
command: "python3"
args:
- "/data/workspace/modellens/modellens.py"
- "--config"
- "/data/workspace/modellens/config.json"
- "--data"
- "/data/workspace/modellens/history.json"
その後、dsh web を再起動します。確認済み:サーバーは dsh-web の子プロセスとして実行されます(pgrep -P $(systemctl --user show dsh-web -p MainPID))。
ツール
| ツール | 機能 |
|---|---|
list_models | 各エンドポイントが公開しているモデルを表示します(任意で部分文字列によるフィルターを指定可能) |
probe | 実際のリクエストを実行します:レイテンシー、成功率、ストリーミング、ツール呼び出し |
ranking | 記録された履歴に基づいて品質を順位付けします |
recommend | プロファイルに最適なモデルを選びます:fast | cheap | capable |
report | 全体像を Markdown で表示します |
例
probe(limit=20, check_tools=true)
ranking(limit=10)
recommend(profile="fast")
スコアの付け方
すべてのテストで実際のリクエストを送信するため、数値は推定ではなく実測値です。
| 指標 | 重み | 備考 |
|---|---|---|
| 成功率 | 50% | 成功率が 0% の場合、ほかの指標に関係なくスコアは 0 です |
| 中央レイテンシー | 30% | 8 秒で 0 になるように線形に評価します |
| キャンセル率 | 20% | タイムアウトとクライアントによるキャンセル |
判定:healthy(成功率 95% 以上、中央値 3 秒未満)· mixed · unreliable(キャンセル率 30% 以上)· quota_blocked(すべて 429)· dead(すべて 404)· untested。
モデルごとに履歴が history.json に保存されます(最新のテスト 200 件)。使い続けるほど、順位付けの精度が上がります。
CLI
サーバーはコマンドラインツールとしても使えます。
python3 modellens.py --config config.json --data history.json --once probe --limit 20
python3 modellens.py --config config.json --data history.json --once ranking
使用例
- モデルを選ぶ前に —
recommend(profile="fast") - プロバイダーから応答がなくなったとき — ユーザーが気づく前に、
rankingで順位の低下を確認できます - ルーターの動作に問題があるとき — グループ内のモデルを比較し、遅いモデルを見つけます
- コスト管理 — 選ばれることのない高価なモデルを見つけます
- 新しいプロバイダーの導入時に — 一度テストすれば、実際に使えるものがわかります
現状とロードマップ
現在利用可能:検出、テスト、ストリーミング/ツール呼び出しの確認、スコアリング、順位付け、推奨、Markdown レポート、MCP stdio トランスポート、CLI。
ロードマップ:現時点では OpenAI 互換の /v1/models のみ対応しています。Anthropic と Gemini のトランスポート、エンドポイントごとのコスト計算、アラート用 Webhook、複数チーム向けのホステッド版を予定しています。
ライセンス
MIT。自由に使って配布できます。独自のホステッド版を提供して料金を請求することもできます。
正直な注意事項
- プローブにはトークンが必要です。 各プローブで実際に補完が行われます。
limitは適切な値に設定し、1 分ごとに何百ものモデルをプローブしないでください。 - 1 回のプローブでは根拠として不十分です。 スコアは複数回プローブした後に意味を持ちます。サンプル数がわかるよう、レポートには
n=1と表示されます。 - レイテンシーは実行環境によって変わります。 測定値にはプロバイダーだけでなく、ネットワークも影響します。エージェントを実行する場所から実行してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。