AI Model Catalog MCP Server

AI Model Catalog MCP Server

Provides a live, audited catalog of AI models from NVIDIA NIM, OpenRouter, Nous Portal, and other providers, enabling search, retrieval, and usage examples via MCP tools and resources.

Category
访问服务器

README

AI Model Catalog MCP Server — NVIDIA NIM + Multi-Provider

An MCP (Model Context Protocol) server that gives any MCP client (Claude Desktop / Claude Code, Cursor, IDEs) a live, audited catalog of AI models:

  • NVIDIA NIM — canonical source https://build.nvidia.com/models; fetched without an API key, deprecated models excluded, OpenAPI/templates resolved, cURL + Node.js + Python examples generated, tiered verification evidence stored. The hosted NIM catalog is 100% free to call with an NVIDIA API key.
  • OpenRouterhttps://openrouter.ai/api/v1/models (official API)
  • Nous Portalhttps://inference-api.nousresearch.com/v1/models (official API)
  • opencode Zenhttps://models.dev/api.json (opencode's official catalog; see https://opencode.ai/docs/zen)
  • Blackbox AI — official docs pricing table (docs.blackbox.ai); authenticated https://api.blackbox.ai/v1/models when BLACKBOX_API_KEY is set
  • Vercel AI Gatewayhttps://ai-gateway.vercel.sh/v1/models (official API)

FREE_ONLY mode

.env (tracked, no secrets) ships with:

FREE_ONLY=yes

With FREE_ONLY=yes, every provider listing — MCP tools, MCP resources, and HTTP routes — only surfaces free models. Paid models cannot be listed or looked up directly (server-side enforcement, not client-side filtering). NVIDIA NIM is exempt because its hosted catalog is 100% free to call. Free detection per provider uses each official source: :free/-free id suffixes and zero prompt+completion pricing (OpenRouter/Nous/Vercel), zero/absent cost (opencode Zen), and "Free" pricing rows (Blackbox docs).

API keys never go into .env — put them in .env.local (gitignored) or real environment variables. See .env.example.

Quick start (install.sh)

./install.sh --install    # venv + deps + tests + build catalog + start services
./install.sh --status     # service state, ports, catalog counts
./install.sh --restart    # restart both services
./install.sh --update     # refresh catalog data, then --restart to serve it
./install.sh --logs       # tail service logs
./install.sh --systemd    # systemd units (auto-start on boot, auto-restart)
./install.sh --stop / --uninstall

Ports live in .env (tracked): MCP_PORT=9100 (MCP + dashboard), PORT=8787 (JSON API), HOST=127.0.0.1. Real env vars always win; put secrets only in .env.local.

MCP server (primary interface)

make install          # deps
make catalog          # build the NIM + provider catalog (key-less)
make mcp              # stdio (Claude Desktop / Claude Code)
make mcp-http         # Streamable HTTP + dashboard on 127.0.0.1:9100
#   http://127.0.0.1:9100/mcp        MCP protocol endpoint (Streamable HTTP)
#   http://127.0.0.1:9100/dashboard  live HTML dashboard (also served at /)
#   http://127.0.0.1:9100/health     liveness probe
#   http://127.0.0.1:9100/ready      readiness probe

Claude Desktop / Code config (.mcp.json is included in the repo):

{
  "mcpServers": {
    "nim-catalog": {
      "command": "python",
      "args": ["mcp_server.py", "--database", "data/active_nvidia_nim.sqlite3"]
    }
  }
}

Tools: search_models, get_model, get_usage_example, get_endpoints, recommend_models, get_stats, list_tiers, list_publishers (NVIDIA NIM) + list_providers, search_provider_models, get_provider_model (multi-provider).

Production deployment

Version 2.0.0 — enterprise-grade serving, stdlib-only hardening:

docker compose up -d                 # API :8787 + MCP HTTP :9100 (hardened containers)
docker compose run --rm refresher    # scheduled catalog rebuild
Feature How
Liveness / readiness GET /health / GET /ready (DB present and populated)
Prometheus metrics GET /metrics — requests, latency histogram, catalog gauges
Bearer auth CATALOG_API_TOKEN=… (probes stay open)
Rate limiting RATE_LIMIT_RPM=300 (429 + Retry-After; 0 disables)
Structured logs JSON access logs to stderr (CATALOG_LOG=off to silence)
Graceful shutdown SIGTERM/SIGINT finishes in-flight requests
Security headers nosniff, DENY, CSP, no-store on every response

Operations guide: docs/OPERATIONS.md · Security policy: SECURITY.md · Release notes: CHANGELOG.md

Dashboard

make dashboard generates exports/dashboard.html — a self-contained (no-CDN) HTML dashboard with KPIs, NIM verification tiers/modalities/ publishers/transports, per-provider totals vs free with fetch health, a searchable free-model explorer, a searchable NIM model explorer, and a data-quality panel mirroring validate_project.py. The HTTP service serves it live at GET /dashboard (also /):

make service   # then open http://127.0.0.1:8787/dashboard

Resources: nim://stats, nim://models, nim://tiers, nim://models/{publisher}/{slug}[/{language}], providers://catalog, providers://{provider}/models.

Current audited result

Counts drift as providers add/remove models; the numbers below are from the last audited run (2026-07-28). Re-run make catalog for fresh numbers — the /stats endpoint and exports/tiered-audit.json always reflect your local DB.

  • NVIDIA NIM: Build index 139 → active non-deprecated 124 (57 free-hosted · 96 downloadable · 36 partner)
  • OpenRouter: 341 models (18 free) · Nous Portal: 289 (5 free) · opencode Zen: 85 (24 free) · Blackbox AI: 47 (2 free) · Vercel AI Gateway: 307 (3 free)
  • Live inference verification requires NVIDIA_API_KEY (make verify); gateway reconciliation requires the same key (python ingest_gateway.py).

data/active_nvidia_nim.sqlite3 contains all active official models, the multi-provider catalog (provider_models), and audit evidence. exports/verified-working.sqlite3 contains only latest live-verified hosted models.

Gateway /v1/models reconciliation

export NVIDIA_API_KEY='nvapi-...'
python ingest_gateway.py --database data/active_nvidia_nim.sqlite3 --output exports
python export_unified.py --database data/active_nvidia_nim.sqlite3 --output unified-output

The gateway response currently exposes only four fields: id, object, created, and owned_by. The database preserves all of them in gateway_models, maps aliases to current Build entries, keeps gateway-only IDs, and enriches mapped records with Build OpenAPI/templates/docs. Query the all_model_inventory view for the full union.

Build without API key

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python audit_catalog.py --database data/active_nvidia_nim.sqlite3 build
python providers.py --database data/active_nvidia_nim.sqlite3 --output exports
python audit_catalog.py --database data/active_nvidia_nim.sqlite3 export --output exports
python finalize_audit.py --database data/active_nvidia_nim.sqlite3 --output exports

Optional live verification

export NVIDIA_API_KEY='nvapi-...'
python audit_catalog.py --database data/active_nvidia_nim.sqlite3 verify --rpm 20 --timeout 120

The live-test loop runs under the RPM cap, so a full pass can take a while. To resume an interrupted run (skip models already tested, no re-spent credit):

python audit_catalog.py --database data/active_nvidia_nim.sqlite3 verify --resume --rpm 20 --timeout 120

One Build catalog ID:

python audit_catalog.py --database data/active_nvidia_nim.sqlite3 verify \
  --model z-ai/glm-5.2 --rpm 20 --timeout 120

Automated update

chmod +x bin/update-catalog.sh
NIM_VERIFY=0 bin/update-catalog.sh

Set NIM_VERIFY=1 only when live tests and credit use are intended.

The same pipeline is available as Make targets (make help for the full list):

make install      # pip install -r requirements.txt -r requirements-dev.txt -r requirements-mcp.txt
make test         # pytest unit suite (no network/API key needed)
make lint         # ruff lint gate (same as CI)
make catalog      # full key-less pipeline: build -> providers -> upstreams -> finalize -> export -> unified -> validate
make providers    # refresh only the multi-provider catalogs
make dashboard    # regenerate exports/dashboard.html
make service      # read-only catalog HTTP API on 127.0.0.1:8787
make mcp          # MCP server over stdio (Claude Desktop / Claude Code)
make mcp-http     # MCP server + dashboard over Streamable HTTP on 127.0.0.1:9100
make image        # build the catalog_service Docker image
make ci-local     # reproduce the CI key-less pipeline locally

Testing

tests/ is a fast, deterministic pytest suite (no network, no API key) that pins the data-correctness invariants: model-ID validation/de-dup, page classification, served-id selection, smoke-payload construction, upstream joining, and deprecation date semantics. Run with make test.

Continuous integration

.github/workflows/ci.yml runs the unit tests, then the key-less pipeline (build → upstreams → finalize → export → unified → validate) on every push/PR and daily, so the build.nvidia.com contract and the pipeline runtime stay healthy. No API key is required for CI; live verification stays opt-in via NIM_VERIFY=1 locally or bin/build-strict.sh with an NVIDIA_API_KEY.

Deployment

catalog_service.py ships as a read-only HTTP API. The included Dockerfile serves a pre-built catalog over the API (non-root, healthchecked):

make catalog                                   # build data/active_nvidia_nim.sqlite3 first
docker build -t nvidia-nim-catalog .
docker run -p 8787:8787 -v "$PWD/data:/app/data:ro" nvidia-nim-catalog

MCP server

mcp_server.py exposes the catalog as a Model Context Protocol server, so MCP clients (Claude Desktop, Claude Code, Cursor, IDEs) can discover models, read served IDs/endpoints, and get runnable cURL/Node.js examples on demand — no copy-pasting from build.nvidia.com. It is a read-only adapter over the same shared query layer (catalog_queries.py) as the HTTP API, so both transports behave identically. Build the catalog first (make catalog), then run the server.

Install the MCP dependency (extra):

pip install -r requirements-mcp.txt   # adds the `mcp` SDK

Run (the server reads data/active_nvidia_nim.sqlite3 read-only):

make mcp           # stdio transport (default; for Claude Desktop / Claude Code)
make mcp-http      # Streamable HTTP transport on http://127.0.0.1:8788
# or explicitly:
python mcp_server.py --database data/active_nvidia_nim.sqlite3                      # stdio
python mcp_server.py --database data/active_nvidia_nim.sqlite3 --transport http --port 8788

Connect from Claude Desktop (stdio)

Add an entry to claude_desktop_config.json (Settings → Developer → Edit Config). Use the absolute path to the repo and (if needed) the absolute path to your Python interpreter:

{
  "mcpServers": {
    "nim-catalog": {
      "command": "python",
      "args": ["/absolute/path/to/nvidia-nim_model_fetcher/mcp_server.py",
               "--database", "/absolute/path/to/nvidia-nim_model_fetcher/data/active_nvidia_nim.sqlite3"]
    }
  }
}

Connect from Claude Code (.mcp.json in the project root)

{
  "mcpServers": {
    "nim-catalog": {
      "command": "python",
      "args": ["mcp_server.py", "--database", "data/active_nvidia_nim.sqlite3"]
    }
  }
}

Inspect interactively

mcp dev mcp_server.py        # opens the MCP Inspector UI

What the server exposes

Tools (the assistant calls these):

Tool Description
search_models Search by text/modality/tier; filters for working_only/free_only.
get_model Full detail: served_id, operations, endpoints, examples.
get_usage_example Runnable cURL / Node.js code for a model.
get_endpoints Every endpoint with host, transport, and auth requirement.
recommend_models Steers to live_inference_verified models for production.
get_stats Catalog counts, per-tier breakdown, last build time.
list_tiers Verification tiers with counts and guarantees.

Resources (URI-addressable): nim://stats, nim://models, nim://tiers, nim://models/{publisher}/{slug} (full model), and nim://models/{publisher}/{slug}/{language} (a code example). The catalog id is publisher/slug; because it contains a slash, the template splits it into two segments — e.g. nim://models/meta/llama-3.1-8b-instruct/curl.

Prompt: use_nim_model(catalog_id, task) returns a ready-to-run integration plan.

Notes

  • The server is read-only; it never writes and never runs the build pipeline. Refresh the catalog by rebuilding the DB on a schedule (make catalog / CI). get_stats reports the last build time so freshness is transparent.
  • recommend_models defaults to production_only=true, returning only models that actually responded over HTTP — set it false to also see official downloadable/specialized models, clearly tagged.
  • Partial-build safety: if the DB was produced by audit_catalog build alone (the tiered audit from finalize_audit.py not yet run), get_stats/list_tiers report audit_populated: false with a clear warning, and recommend_models falls back to free-endpoint models instead of silently returning an empty list. Run make catalog (which includes finalize) for full tiered data.
  • A missing database returns a clear startup error rather than failing silently.

For a complete strict rebuild, including the gateway and gRPC stages:

chmod +x bin/build-strict.sh
NIM_RPM=20 bin/build-strict.sh

The strict pipeline now runs Build discovery, authenticated gateway ingestion and gateway-only tests, Build free-endpoint inference tests, gRPC/NVCF health audit, upstream audit, final audit, unified export, and strict export. Gateway-only records remain visible in the unified inventory but enter strict output only after a real inference pass.

Verification policy

  • live_inference_verified: received HTTP 2xx and eligible for working DB.
  • official_contract_downloadable: active official NIM, but requires local NVIDIA GPU/container deployment.
  • official_contract_specialized_transport: official Build/API contract verified; live testing needs gRPC, media, private access, or special infrastructure.
  • live_test_failed: timeout/404/5xx; retained in audit but excluded from working.

Every model has cURL and Node.js records. For gRPC/private/custom transports, records explicitly state the official alternative instead of fabricating an HTTP request.

Upstream endpoint audit

python audit_upstreams.py --database data/active_nvidia_nim.sqlite3 --output exports

The audit cross-checks stored endpoints against each model's Build OpenAPI servers, resolved code templates, Build guides, and official NVIDIA docs. Supported upstream families include:

  • integrate.api.nvidia.com — hosted LLM/chat/embedding and selected APIs;
  • ai.api.nvidia.com — legacy/specialized VLM, retrieval, Cosmos, and AV APIs;
  • health.api.nvidia.com — BioNeMo/biology APIs;
  • optimize.api.nvidia.com — optimization APIs such as cuOpt;
  • climate.api.nvidia.com — climate/weather APIs;
  • grpc.nvcf.nvidia.com:443 — hosted NVCF gRPC requiring API key and function ID;
  • localhost — self-hosted NIM management/inference endpoints.

exports/upstream-audit.* records the result. A Build URL with documentation-only means NVIDIA publishes no fixed public upstream (for example private/early-access or internally brokered playgrounds).

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选