mcpField
I
Index9

Index9

Local
github.com/index9-orgAI & Agents1Updated 22w ago

About Index9

Index9 is an MCP server for discovering and evaluating AI models from an editor. It is aimed at developers who need to shortlist, compare, and test models, with coverage of more than 300 models and comparisons across pricing, context, and capabilities.

Key features

  1. 01Search models semantically or with filters
  2. 02Browse providers and capability facets
  3. 03Retrieve model metadata
  4. 04Compare pricing, context, and capabilities
  5. 05Run inference or estimate costs

Use cases

  1. 01Shortlist models for a task
  2. 02Compare pricing and context across models
  3. 03Estimate model call costs
  4. 04Test models with live inference

MCP support

It gives MCP clients tools for model discovery, metadata lookup, comparison, and testing. Live tests require an OpenRouter API key; cost estimates can use dryRun.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"index9-org": {
"command": "npx",
"args": [
"-y",
"@index9/mcp"
],
"env": {
"OPENROUTER_API_KEY": "<OPENROUTER_API_KEY>"
}
}
}
}
Run commandnpx -y @index9/mcp
Environment variables to set
OPENROUTER_API_KEYSecretRequired for live test_model calls. dryRun=true works without it.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@index9/mcp6.5.2

Tools

5

Saved tool list · updated 3w ago

ParameterTypeRequiredDescription
qstringNoNatural language search query describing desired model characteristics (e.g., 'fast cheap coding model'). Uses semantic search with fuzzy matching. Must be at least 2 characters when provided. Optional — omit (along with sortBy=created or sortBy=price) to use filters only.
limitintegerNoPage size (1-100, default 20).
cursorstringNoOpaque pagination cursor from a previous response's `nextCursor` field. IMPORTANT: cursors are bound to the exact query text, filters, and sort order that produced them. Reuse the same query+filters+sort when paginating. `limit` may change between pages. To start a new search, omit the cursor.
sortByenumNoSort order for results. Options: 'relevance' (best semantic match, default), 'created' (newest models), 'price' (cheapest/most expensive, with sortOrder). Defaults to 'relevance'.relevance | created | price
maxPricenumberNoMaximum effective prompt price in USD per million tokens. Matches the basis exposed in `pricing.effectivePromptPerMillion` and `pageInfo.priceSortBasis` — token price plus per-request fees scaled to per-million, so a model with $0.30/M tokens and a $0.30 per-request fee evaluates as $0.60/M effective and is excluded by `maxPrice: 0.55`. Models with no resolvable price (zero-token, no per-request fee, non-`:free` id) are excluded when this bound is set.
minPricenumberNoMinimum effective prompt price in USD per million tokens. Matches the basis exposed in `pricing.effectivePromptPerMillion` and `pageInfo.priceSortBasis` — token price plus per-request fees scaled to per-million, so a model with $0.30/M tokens and a $0.30 per-request fee evaluates as $0.60/M effective. Models with no resolvable price (zero-token, no per-request fee, non-`:free` id) are excluded when this bound is set.
modalityenumNoRequired output modality. Filters on the model's output modalities, not input capabilities. For example, "image" finds image-generation models, while capabilitiesAll=["vision"] finds models that accept image input. Valid values: text, image, audio.text | image | audio
providerarrayNoProvider prefix filter. Array of provider slugs — a model matches if its ID starts with any of them (e.g., ['openai'] matches 'openai/gpt-4o'; ['openai','anthropic'] matches both). Pass a single-element array for one provider. Common providers: openai, anthropic, google, meta-llama, mistralai, deepseek, cohere.
sortOrderenumNoSort order. Defaults by sortBy.asc | desc
minContextintegerNoMinimum context window in tokens.
excludeFreebooleanNoWhen true, exclude models with id ending in ':free'. Useful for sortBy=price (which would otherwise be dominated by free-tier preview models) and when you want a paid SLA. Default false.
createdAfterstringNoLower bound for model created timestamp.
createdBeforestringNoUpper bound for model created timestamp.
capabilitiesAllarrayNoArray of capabilities that must ALL be present on the model (AND logic). Valid values: function_calling, structured_output, reasoning, web_search, vision, audio_input, file_input, image_generation, audio_output. Example: ["function_calling","vision"].
capabilitiesAnyarrayNoArray of capabilities where at least ONE must be present (OR logic). Valid values: function_calling, structured_output, reasoning, web_search, vision, audio_input, file_input, image_generation, audio_output. Example: ["vision","audio_input"].
requireKeywordMatchbooleanNoWhen true, suppress weak vector-only results from semantic queries. If no candidate has a BM25 keyword hit, returns an empty page with meta.confidence='low' and meta.lowConfidenceReason — instead of returning misleading nearest-neighbor matches. Filter-only queries (sortBy=created or sortBy=price without q) ignore this flag. Default false.

Details

From the project README

@index9/mcp

Discover, shortlist, compare, cost-model, and live-test 300+ AI models from your editor

Per-editor install configs (Cursor, VS Code, Claude Code, Codex): https://index9.dev/#install

Install

npx -y @index9/mcp@latest

Generic MCP client config:

{
  "mcpServers": {
    "index9": {
      "command": "npx",
      "args": ["-y", "@index9/mcp@latest"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-..."
      }
    }
  }
}

Claude Code one-liner: claude mcp add --transport stdio index9 -- npx -y @index9/mcp.

OpenRouter API key

Required for live test_model calls. Set OPENROUTER_API_KEY in your MCP client config. dryRun=true works without it.

Tools

  • list_facets: List available providers, capabilities, modalities, and tokenizers
  • find_models: Search AI models by semantic query or filters
  • get_models: Fetch full model metadata for up to 100 IDs or aliases
  • compare_models: Diff 2-10 models across pricing, context, capabilities, and tokenizer
  • test_model: Run live inference or dry-run cost estimates on 1-10 models (requires OpenRouter API key)

Response metadata

All tool responses include an _index9 object with:

  • apiBaseUrl: API base URL used for the request

Error responses also include:

  • status: upstream HTTP status code
  • _index9.retryAfterSeconds: present when Retry-After is returned
  • _index9.rateLimit: present when rate-limit headers are returned (x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset)

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.