ModelLens

io.github.Greatbeing由 GitHub 帳號 Greatbeing 發布v0.1.3更新於 Nov 7, 2026

See which models actually work: probe, rank and recommend across OpenAI-compatible gateways.

發布方自己的服務:model.tools — Zero-Auth Agent Utilities

已驗證STDIO僅桌面資料與分析AI 與機器學習

概覽

AI 產生的概覽

探測相容於 OpenAI 的模型閘道,依實測延遲與成功率為模型排名,並推薦該用哪個模型。

可以做什麼
  • 列出各已設定端點所公布的模型,可依子字串篩選
  • 以真實請求探測模型,量測延遲、成功率、串流輸出與工具呼叫
  • 依已記錄的探測歷史為模型排名,並依 fast、cheap、capable 画像推薦最佳模型
  • 產出涵蓋所有端點的 markdown 彙總報告
  • 同時可作為命令列工具執行單次探測或排名
適用情境
當你同時使用多個模型供應商或一個聚合閘道,想用實測證據判斷哪些模型真的能回應、有多快、路由器該選哪個時適用。接入新供應商或供應商開始悄悄失效時也很有用。
執行需求
以本機 Python 3.9+ 程序執行,無第三方相依套件(PyPI 套件 modellens-mcp 或單一腳本)。需透過 MODELLENS_CONFIG 提供端點設定 JSON 檔,內含各端點的 base URL 與選用的 api_key,並透過 MODELLENS_DATA 指定歷史檔路徑。需要能連線至所設定的閘道。
安裝前請注意
探測會發出真實的補全請求,因此消耗 token,在付費供應商上可能產生費用,請控制探測數量。設定檔以明文保存供應商 API 金鑰,需妥善保護。探測歷史會寫入資料檔。README 另描述一個獨立的託管付費版本,依次以 Base 上的 USDC 收費,那並非本機伺服器。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ModelLens,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

ModelLens

See which of your models actually works.

An MCP server that turns any OpenAI-compatible gateway into an observable, rankable set of models. It discovers what a provider advertises, probes what works right now — latency, success, cancellation, streaming, tool calling — keeps the history, and answers "which model should I use?"

Zero third-party dependencies. Python 3.9+ standard library only.

[PyPI version] [PyPI downloads] [MCP Registry] [Glama] [Live status]


Why

If you run more than one model provider, you already have this problem:

  • The gateway says it serves 89 models. How many actually answer?
  • Which one is fast today? Yesterday's answer is already stale.
  • Your router picks the first entry in a list — and the first entry is slow.
  • Failures are invisible until a user complains.

ModelLens makes that visible. It is the difference between trusting a model list and measuring it.

Real example from a live gateway (89 models, 16 probed):

magpie/kilo/nvidia/nemotron-3.5-super-vl:free     97.6  100.0%    0.0%      628ms   healthymagpie/auto/beam-free                             96.6  100.0%    0.0%      909ms   healthymagpie/longcat/LongCat-2.5                        88.4  100.0%    0.0%     3104ms   mixedmagpie/group/daily                                70.0  100.0%    0.0%    77345ms   mixedmagpie/radeon-cloud/DeepSeek-V4.1-Flash           70.0  100.0%    0.0%    87388ms   mixedmagpie/nvidia/deepseek-ai/deepseek-v4.1-flash     0.0    0.0%  100.0%         -    unreliablemagpie/modelscope/Qwen/Qwen3.8-27B                 0.0    0.0%    0.0%         -    quota_blocked

The default routing group was putting an 87-second model first and a 0.9-second model third. ModelLens found that in one pass.


Install

bash
# from PyPIpip install modellens-mcpmodellens --config config.json --data history.json --once ranking

or straight from source — no dependencies, no install step:

bash
curl -fsSL https://raw.githubusercontent.com/Greatbeing/modellens/main/modellens.py -o modellens.pypython3 modellens.py --config config.json --data history.json --once ranking

Configure

json
{  "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 may be empty for a localhost gateway. models optionally filters the advertised list; enabled: false disables an endpoint without deleting it.

Run as an MCP server

Point any MCP client at it:

json
{  "mcpServers": {    "modellens": {      "command": "python3",      "args": ["/path/to/modellens.py",               "--config", "/path/to/config.json",               "--data",   "/path/to/history.json"]    }  }}

Works with Claude Desktop, Cursor, Windsurf, VS Code, and any other MCP client.

DeepSeek Harness

Register it in the profile's cordis.patch.yml (note: a new entry needs - insert:, not a bare - id: — a bare one means "modify an existing entry"):

yaml
- 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"

Then restart dsh web. Verified: the server runs as a child process of dsh-web (pgrep -P $(systemctl --user show dsh-web -p MainPID)).

Tools

ToolWhat it does
list_modelsWhat each endpoint advertises (optional substring filter)
probeReal requests: latency, success, streaming, tool calls
rankingQuality ranking from recorded history
recommendBest model for a profile: fast | cheap | capable
reportThe whole picture as markdown

Example

probe(limit=20, check_tools=true)ranking(limit=10)recommend(profile="fast")

Hosted / paid (x402, USDC on Base)

A hosted endpoint runs the same tools over MCP streamable-HTTP and charges per call with x402 — agents pay gasless USDC on Base, no accounts or API keys:

  • Endpoint: https://8000-agqz7vbdiiy6cc2n2tbs63iji4.instabox.tech/mcp
  • Manifest: /.well-known/x402 (payTo address, prices, facilitator)
  • Prices: list_models free · ranking/recommend $0.01 · report $0.02 · probe $0.05 (probe makes real upstream requests, so it costs the most)

An unpaid paid-tool call returns HTTP 402 + PAYMENT-REQUIRED; the agent signs an EIP-3009 USDC transfer and retries with X-PAYMENT, the facilitator verifies/settles, and the tool result comes back with a PAYMENT-RESPONSE. Self-host the same server anywhere with python3 server_x402.py (set X402_PAY_TO to your receiving address; see server_x402.py header).


How it scores

Every probe is a real request, so the numbers are evidence, not estimates.

SignalWeightNotes
Success rate50%0% success ⇒ score 0, regardless of anything else
Median latency30%Linear to 0 at 8 s
Cancellation rate20%Timeouts and client cancellations

Verdicts: healthy (≥95% success, <3 s median) · mixed · unreliable (≥30% cancelled) · quota_blocked (all 429) · dead (all 404) · untested.

History is kept per model (newest 200 probes) in history.json, so rankings improve as you use it.


CLI

The server doubles as a command-line tool:

bash
python3 modellens.py --config config.json --data history.json --once probe --limit 20python3 modellens.py --config config.json --data history.json --once ranking

Use cases

  • Before you pick a model — recommend(profile="fast")
  • When a provider goes quiet — ranking shows it dropping before your users do
  • When your router misbehaves — compare group members, find the slow one
  • Cost control — spot the expensive model that is never chosen
  • Onboarding a new provider — probe once, see what actually works

Status and roadmap

Working today: discovery, probing, streaming/tool-call checks, scoring, ranking, recommendation, markdown report, MCP stdio transport, CLI.

Roadmap: OpenAI-compatible /v1/models only for now; Anthropic and Gemini transports, per-endpoint cost accounting, alerting webhooks, and a hosted multi-team version.


License

MIT. Use it, ship it, charge for your own hosted version.


Honest notes

  • Probing costs tokens. Each probe is a real completion. Keep limit sensible and don't probe a hundred models every minute.
  • A single probe is weak evidence. The score is meaningful after several probes; the report says n=1 so you can see the sample size.
  • Latency depends on you. Your network, not just the provider, is in the measurement. Run it from where your agents run.

來源:README.md,提交 5bdfd65

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.1.3最新Nov 7, 2026
  2. v0.1.2Nov 5, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Model 整合