mcpField
M
ModelLens

ModelLens

ローカル
github.com/GreatbeingAI・エージェント11 日前に更新

ModelLens について

ModelLens は、OpenAI 互換ゲートウェイが提供するモデルを測定する MCP サーバー兼 CLI です。実際のリクエスト結果を記録し、性能に基づいてモデルを順位付け、推奨します。

主な機能

  1. 01公開モデルの検出
  2. 02遅延、成功率、ストリーミング、ツール呼び出しの検証
  3. 03モデルごとの検証履歴の保存
  4. 04プロファイル別の順位付けと推奨
  5. 05Markdown レポートの生成

活用シーン

  1. 01速度重視の設定に使うモデルの選定
  2. 02ユーザーが気付く前のプロバイダー障害の把握
  3. 03ルーティンググループ内のモデル比較
  4. 04新しいプロバイダーの動作確認

MCP 対応

ModelLens は stdio 経由で、モデルの検出、検証、順位付け、推奨、レポート作成のツールを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"greatbeing-modellens": {
"command": "uvx",
"args": [
"modellens-mcp"
],
"env": {
"MODELLENS_CONFIG": "<MODELLENS_CONFIG>",
"MODELLENS_DATA": "<MODELLENS_DATA>"
}
}
}
}
起動コマンドuvx modellens-mcp
設定が必要な環境変数
MODELLENS_CONFIGPath to the endpoint configuration JSON
MODELLENS_DATAPath to the probe history JSON

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimodellens-mcp0.1.3

ツール

5

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
limitstringいいえエンドポイントあたりのモデル数の上限(任意)
containsstringいいえ部分文字列による任意のフィルター(モデル 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 と表示されます。
  • レイテンシーは実行環境によって変わります。 測定値にはプロバイダーだけでなく、ネットワークも影響します。エージェントを実行する場所から実行してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。