The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Server Mcpindex listing page.
An MCP server for finding MCP servers, plus advisory trust verdicts agent frameworks can call before invoking a tool - from mcpindex.ai.
A drop-in MCP server that lets your agent discover, compare, install, and pre-flight other MCP servers from inside the agent loop. Backed by mcpindex.ai - the agent-native MCP server index of the official registry (live count at mcpindex.ai/stats), screened and drift-monitored daily.
Live site · npx mcp-server-mcpindex · Remote MCP · Install gate · Docs · Trust
This is the directory / advisory client (recommend, search, trust). It does not install the in-path drift gate — that is curl -fsSL https://mcpindex.ai/install.sh | sh.
Requires Node 20+. Speaks both protocol eras on stdio: the 2026-07-28 revision (server/discover, per-request _meta envelope) and the initialize handshake every current client uses (2025-11-25 down to 2024-10-07), selected per connection.
Prefer not to install anything? mcpindex is also a hosted remote MCP server. Point any client that supports remote MCP (Claude connectors, Cursor, etc.) at:
Streamable HTTP, no credentials. Same six tools as the npm package.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
@latestkeeps you current: this is the advisory discovery server (not the in-path drift gate), so it carries no version pin —npxfetches the newest on your next host restart, no manual upgrade step.
Restart Claude Desktop. Then ask:
"Find me an MCP server that can read PDFs and write the contents to S3."
Claude calls recommend_mcp_for_task and returns the top 3 ranked servers with install commands.
Add to .cursor/mcp.json:
Add to your Cline settings:
| Tool | What it does |
|---|---|
recommend_mcp_for_task | Pass a natural-language task. Returns top 3 servers with reasoning, install commands, quality scores. |
search_mcp_servers | Keyword + semantic search across the full registry. Optional category filter. |
get_install_command | Get the exact install JSON/CLI for a server + client (Claude Desktop, Claude Code, Cursor, Gemini CLI, Cline, Zed). |
compare_servers | Side-by-side comparison of 2-5 servers - quality scores, install paths, env vars. |
check_tool_trust | Pre-invocation advisory verdict for a specific tool on a server. Fail-CLOSED: returns UNVERIFIED when no verdict on file. |
assess_server | Aggregated pre-flight verdict across all tools on a server. Same shape as check_tool_trust. |
check_tool_trust is the directory client integration surface (not the in-path mcpindex-gate). It lets agent frameworks (Composio, Mastra, LangChain, DSPy, raw LLM-tool-call loops) ask for an advisory screen verdict before dispatching a call. At v1 you will see REVIEW or UNVERIFIED — not a safety clearance.
Using Mastra? The sibling package
@mcp-index/mastraships this exact screen as a ready-madebeforeToolCallhook -npm i @mcp-index/mastra, no wiring required.
The free-tier verdict ships directives + dimensions + freshness. Evidence quotes, LLM rationale, and chain history are paid-tier surfaces and intentionally omitted here.
Every v1 verdict ships with these three caveats, and your gate SHOULD surface them on every dispatch decision:
conformance_monitored_not_enforced - publishers self-declare; mcpindex monitors drift but does not block at the network layer.calibrated_false_v1 - dimension severities are not yet calibrated against real-world incident data.advisory_deployment - the verdict is advisory; the agent (or human reviewing the agent) is the decision-maker.History anchoring: OTS Bitcoin-anchored history; Bitcoin-finalized at N=6 confirmations (~1 hr); pending in ~10 min. Sub-window precision asserted, not proven.
If the verdict endpoint is unreachable, returns 404, times out, returns malformed JSON, or has no verdict on file yet for that server, check_tool_trust returns directive: "UNVERIFIED" + status: "ERROR". It never silently coerces to ALLOW. Your gate code SHOULD treat UNVERIFIED as "human review required", never as "looks fine, ship it."
status is telemetry about screen completeness, distinct from the directive trust decision: EVALUATED (full screen), PARTIAL (only part of the surface, e.g. description-level — see granularity), STALE (verdict past its freshness window), ERROR (unreachable / no verdict on file). A PARTIAL screen is never reported as EVALUATED.
This is tested. See test/trust.test.mjs.
The trust client is also exported as a plain ES module:
By default, calls go to https://mcpindex.ai. Override with MCPINDEX_API_BASE=... if you self-host.
The free tier is rate-limited to 60 req/min/IP. Paid keys are coming for higher throughput and the full evidence-bearing verdict (evidence quotes, LLM rationale, chain history).
Three ways to bring mcpindex into an agent, for different surfaces:
| Package | Install | What it does |
|---|---|---|
mcp-server-mcpindex (this package) | npm i -g mcp-server-mcpindex | Directory + advisory screen as an MCP server: find servers by task, and check_tool_trust before a call. |
@mcp-index/mastra | npm i @mcp-index/mastra | The same advisory screen wired into Mastra as a beforeToolCall hook (warn / enforce). |
@mcp-index/sdk | npm i @mcp-index/sdk | In-path drift gate: wrap() an MCP session and HOLD a call when a tool's contract drifts from your pin. |
Advisory screen vs drift gate: this package and @mcp-index/mastra ask mcpindex "has this tool been vetted?" (a network verdict). @mcp-index/sdk asks a different question locally: "did this tool's contract change since I pinned it?" Complementary, and none depends on another.
MIT.
Unofficial. Not affiliated with Anthropic.