model-radar
MCP server that pings free coding LLM models across HTTPS providers and subscription CLIs (Claude Code, Grok, Antigravity/agy, Codex), ranks them by latency, and helps AI agents pick the fastest available model — or pin several subscriptions for a parallel review.
Inspired by free-coding-models.
Install
pip install model-radar-mcp
Quick Start
1. Configure an API key
# Option A: Save to ~/.model-radar/config.json
model-radar configure nvidia nvapi-xxx
# Option B: Environment variable
export NVIDIA_API_KEY=nvapi-xxx
Or copy the template: cp config.example.json ~/.model-radar/config.json and edit it.
2. Add to your MCP client
Claude Code (~/.claude/settings.json):
{
"mcpServers": {
"model-radar": {
"command": "model-radar",
"args": ["serve"]
}
}
}
Cursor (~/.cursor/mcp.json):
Stdio (Cursor starts the server):
{
"mcpServers": {
"model-radar": {
"command": "/path/to/your/.venv/bin/model-radar",
"args": ["serve"]
}
}
}
Streamable HTTP (persistent server — recommended):
{
"mcpServers": {
"model-radar": {
"url": "http://127.0.0.1:8743/mcp",
"transportType": "streamable-http"
}
}
}
Start the server first:
model-radar serve --transport sse --port 8743
OpenClaw (~/.openclaw/config/mcporter.json):
{
"mcpServers": {
"model-radar": {
"type": "http",
"url": "http://127.0.0.1:8743/mcp"
}
}
}
Web dashboard: Add --web for a localhost UI at http://127.0.0.1:8743/ for status, config, discovery, and running prompts. The server binds to 127.0.0.1 only; keys never leave your machine.
model-radar serve --transport sse --port 8743 --web
Auto-restart wrapper:
while true; do model-radar serve --transport sse --port 8743; sleep 1; done
Then call restart_server() from any MCP client to reload with updated code.
3. CLI usage
# Scan models
model-radar scan --min-tier S --limit 10
# List providers
model-radar providers
# Save a key
model-radar configure nvidia nvapi-xxx
Catalogs are live
Model ids are not a hardcoded list. On startup, once an hour, and after a completion 404, model-radar fetches each provider’s /v1/models (Ollama /api/tags, grok models / agy models) and replaces that provider’s catalog — new ids in, retired ids gone. GET /v1/models is free; completions are what you pay for.
Seed tuples in the package are a fallback plus SWE-bench overlays for known ids. See Catalog playbook.
model-radar db refresh # force live replace
python scripts/catalog-report.py # seed vs live vs missing keys (no secrets)
Providers
HTTPS providers take an API key (configure_key or env). Call list_providers() for the current count and key status.
| Provider | Env Var | Notes |
|---|---|---|
| NVIDIA NIM | NVIDIA_API_KEY |
Rate-limited, no expiry |
| Groq | GROQ_API_KEY |
Free tier |
| Cerebras | CEREBRAS_API_KEY |
Small, fast; catalog rotates often |
| SambaNova | SAMBANOVA_API_KEY |
$5 credits / 3 months |
| OpenRouter | OPENROUTER_API_KEY |
:free ids change frequently |
| Hugging Face | HF_TOKEN / HUGGINGFACE_API_KEY |
Free monthly credits |
| Replicate | REPLICATE_API_TOKEN |
Dev quota |
| DeepInfra | DEEPINFRA_API_KEY |
Free dev tier |
| Fireworks | FIREWORKS_API_KEY |
$1 free credits |
| Codestral/Mistral | CODESTRAL_API_KEY |
30 req/min, 2000/day |
| Hyperbolic | HYPERBOLIC_API_KEY |
$1 free trial |
| Scaleway | SCALEWAY_API_KEY |
1M free tokens |
| Google AI | GOOGLE_API_KEY |
14.4K req/day |
| SiliconFlow | SILICONFLOW_API_KEY |
Free model quotas |
| Together AI | TOGETHER_API_KEY |
Credits vary |
| Cloudflare | CLOUDFLARE_API_TOKEN |
10K neurons/day |
| Perplexity | PERPLEXITY_API_KEY |
Tiered limits |
| xAI | XAI_API_KEY |
Or use the grok CLI instead |
| Inference.net | INFERENCE_NET_API_KEY |
Free tier |
| SEA-LION | SEALION_API_KEY |
Free tier |
| MiniMax | MINIMAX_API_KEY |
api.minimax.io (M3). Same token works on /anthropic — do not set ANTHROPIC_AUTH_TOKEN globally |
| Ollama | none (local daemon) | Models already pulled on 127.0.0.1:11434 |
CLI subscriptions
If you already pay for a monthly plan, model-radar can ride that subscription — no API key. The official CLI is auto-detected from $PATH at startup.
| CLI | Rides | Login |
|---|---|---|
claude |
Claude Pro / Max | claude auth login |
grok |
SuperGrok | grok login |
agy (provider key gemini) |
Google AI Pro/Ultra / Gemini | run agy once to sign in |
codex |
ChatGPT Plus / Pro | codex login |
The old gemini CLI was deprecated (June 2026) in favor of Antigravity CLI (agy). Install: curl -fsSL https://antigravity.google/cli/install.sh | bash. agy models may also list Claude and GPT-OSS on the same login. Codex-in-agy is a conversation mode; for model-radar use the standalone codex CLI.
These never join get_fastest() / default ask() — that would spend quota by accident. Pin them:
ask(prompt="Review this paragraph…", providers=["claude", "grok", "gemini"])
ask(prompt="…", model_ids=["sonnet", "grok-4.6"])
MCP Tools
Discovery
list_providers()— See all providers, API-key status, and installed subscription CLIslist_models(tier?, provider?, min_tier?, free_only?)— Browse the catalog (refreshes a provider if its list is older than an hour)scan(verify?)— Ping models in parallel, ranked by latency.verify=Truechecks for non-empty output.get_fastest(min_tier?, count?, free_only?, verified?)— Best N models right nowget_workers(count?, min_tier?, verified?)— N verified-alive models from N distinct providersprovider_status()— Per-provider health check
Execution
run(prompt, model_id?, free_only?)— Execute on fastest model with auto-fallbackask(prompt, count=3, model_ids?, providers?)— Same prompt on N models (Ollama sequential, remotes parallel)recommend(job)— Short diverse lineup fortranslate/rewrite/review/codequality_probe(job)— Time + pass/fail on a fixed prompt for that jobbatch_run(prompts, results_file?)— Batch execution with incremental JSONL, resume support, adaptive concurrency
Evaluation (LLM-as-Judge)
judge(prompt, rubric, count=3)— Rate a single item with N diverse judgescompare(item_a, item_b, blind=True)— Blind A/B comparison, randomized order per judgebatch_judge(items, rubric, results_file?)— Evaluate at scale with incremental resultsbacktranslate_eval(text, translation, source_lang, target_lang)— Back-translation quality metric
Quality & Setup
benchmark(model_id?)— Quality-test with 5 coding challengesrefresh_models()— Fetch live lists and replace each provider’s catalog (purge retired ids)setup_guide(provider?)— Setup instructions for unconfigured providersconfigure_key(provider, api_key)— Save an API keyrestart_server()— Restart for code updates (SSE mode)server_stats()— Uptime and start time
Tier Scale (SWE-bench Verified)
| Tier | Score | Meaning |
|---|---|---|
| S+ | 70%+ | Elite frontier coders |
| S | 60-70% | Excellent |
| A+ | 50-60% | Great |
| A | 40-50% | Good |
| A- | 35-40% | Decent |
| B+ | 30-35% | Average |
| B | 20-30% | Below average |
| C | <20% | Lightweight/edge |
Documentation
- Architecture — Module map, live catalogs, transport, rate limiting
- MCP Transport — Transport options, stateless HTTP, client configuration
- Catalog playbook — Live vs seed, TTL, purge, 404 refetch
- Local MCP ops — systemd restart, keys, compare runs
- Translation Pipeline Playbook — Batch translation patterns
- LLM-as-Judge Playbook — Evaluation patterns and judge selection
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file model_radar_mcp-0.11.0.tar.gz.
File metadata
- Download URL: model_radar_mcp-0.11.0.tar.gz
- Upload date:
- Size: 91.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8420e6e17d5652ada26ef3f7768a2f7db0267f211f7f1ffa0aa85eac8b79e8f
|
|
| MD5 |
fef6805bab40c43776b1ef3051ab5253
|
|
| BLAKE2b-256 |
46332099e1da7cc11de24b057007c83d0138a72651be5e1615b5ca7481e3af70
|
Provenance
The following attestation bundles were made for model_radar_mcp-0.11.0.tar.gz:
Publisher:
publish.yml on srclight/model-radar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
model_radar_mcp-0.11.0.tar.gz -
Subject digest:
b8420e6e17d5652ada26ef3f7768a2f7db0267f211f7f1ffa0aa85eac8b79e8f - Sigstore transparency entry: 2469926250
- Sigstore integration time:
-
Permalink:
srclight/model-radar@3ddfbe4bf2e8d1a475f0050cb68436f68aa21097 -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/srclight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3ddfbe4bf2e8d1a475f0050cb68436f68aa21097 -
Trigger Event:
release
-
Statement type:
File details
Details for the file model_radar_mcp-0.11.0-py3-none-any.whl.
File metadata
- Download URL: model_radar_mcp-0.11.0-py3-none-any.whl
- Upload date:
- Size: 107.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5d7826f14ff512a9fe03e4db2c391d740298d33ddb5d6f01e6c391a2aca23e4
|
|
| MD5 |
308835cab25ed5431d6538bbdf3e0fd2
|
|
| BLAKE2b-256 |
a13482ae854880d156c490a86e2b60a0653de4d9a8788453a5d5ee41ef544e0d
|
Provenance
The following attestation bundles were made for model_radar_mcp-0.11.0-py3-none-any.whl:
Publisher:
publish.yml on srclight/model-radar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
model_radar_mcp-0.11.0-py3-none-any.whl -
Subject digest:
c5d7826f14ff512a9fe03e4db2c391d740298d33ddb5d6f01e6c391a2aca23e4 - Sigstore transparency entry: 2469926284
- Sigstore integration time:
-
Permalink:
srclight/model-radar@3ddfbe4bf2e8d1a475f0050cb68436f68aa21097 -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/srclight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3ddfbe4bf2e8d1a475f0050cb68436f68aa21097 -
Trigger Event:
release
-
Statement type: