mcpindex

io.github.gautamgb由 GitHub 账号 gautamgb 发布v0.4.0更新于 Oct 24, 2026

The MCP server index that vets servers, not just lists them. Advisory screen before you install.

已验证Streamable HTTP可网页运行开发者工具安全与监控

概览

AI 生成的概览

一个 MCP 服务器索引,让助手推荐、搜索、比较并预检其他 MCP 服务器,并提供咨询性信任判定。

可以做什么
  • 推荐与搜索 MCP 服务器:把自然语言任务转成带理由和质量评分的排序推荐,或按关键词与语义检索,可加分类筛选。
  • 比较与安装:对 2 至 5 个服务器做并排比较,并给出面向 Claude Desktop、Claude Code、Cursor、Gemini CLI、Cline、Zed 等客户端的确切安装命令或配置块。
  • 信任筛查:针对某个服务器的具体工具获取咨询性判定,或对整个服务器获取汇总的预检评估,含维度、时效和明示局限。
适用场景
适合希望助手在对话中直接挑选合适的 MCP 服务器、比较候选方案,或生成可直接粘贴的安装配置的场景。也适用于在派发工具调用前想做咨询性信任检查的智能体框架。
运行要求
可使用无需凭据的远程 streamable HTTP 端点,或用 npx 运行 npm 包,后者需要 Node 20 及以上。默认调用 mcpindex.ai 后端;免费额度限制为每 IP 每分钟 60 次请求。
安装前请注意
信任判定仅供参考:v1 公开筛查只返回 REVIEW 或 UNVERIFIED,不会返回 ALLOW 或 DENY,且筛查停留在描述层面,工具名未经独立核实。判定可能过期或缺失,客户端在无判定时按失败关闭处理。证据引文、理由和链上历史属于付费内容。项目自称非官方,与 Anthropic 无关联。

安装

在 SourceWeft 中

  1. 打开 控制台中的 mcpindex,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.gautamgb%2Fmcp-server-mcpindex/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "mcpindex": {
      "type": "http",
      "url": "https://mcpindex.ai/api/mcp"
    }
  }
}

README

mcp-server-mcpindex

[mcpindex] [npm] [npm downloads] [servers indexed] [screened] [last commit] [Smithery] [Glama]

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

Install

bash
npm install -g mcp-server-mcpindex

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.

Or connect remotely (no install)

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:

https://mcpindex.ai/api/mcp

Streamable HTTP, no credentials. Same six tools as the npm package.

Claude Code

bash
claude mcp add --scope user mcpindex -- npx -y mcp-server-mcpindex@latest

Gemini CLI

bash
gemini mcp add -s user mcpindex npx -y mcp-server-mcpindex@latest

Use it from Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "mcpindex": {      "command": "npx",      "args": ["-y", "mcp-server-mcpindex@latest"]    }  }}

@latest keeps you current: this is the advisory discovery server (not the in-path drift gate), so it carries no version pin — npx fetches 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.

Use it from Cursor

Add to .cursor/mcp.json:

json
{  "mcpServers": {    "mcpindex": {      "command": "npx",      "args": ["-y", "mcp-server-mcpindex@latest"]    }  }}

Use it from Cline

Add to cline_mcp_settings.json:

json
{  "mcpServers": {    "mcpindex": {      "command": "npx",      "args": ["-y", "mcp-server-mcpindex@latest"]    }  }}

Use it from Zed

Zed reads MCP servers from context_servers, not mcpServers. Add to ~/.config/zed/settings.json:

json
{  "context_servers": {    "mcpindex": {      "command": "npx",      "args": ["-y", "mcp-server-mcpindex@latest"]    }  }}

Tools exposed

ToolWhat it does
recommend_mcp_for_taskPass a natural-language task. Returns top 3 servers with reasoning, install commands, quality scores.
search_mcp_serversKeyword + semantic search across the full registry. Optional category filter.
get_install_commandGet the exact install JSON/CLI for a server + client (Claude Desktop, Claude Code, Cursor, Gemini CLI, Cline, Zed).
compare_serversSide-by-side comparison of 2-5 servers - quality scores, install paths, env vars.
check_tool_trustPre-invocation advisory verdict for a specific tool on a server. Fail-CLOSED: returns UNVERIFIED when no verdict on file.
assess_serverAggregated pre-flight verdict across all tools on a server. Same shape as check_tool_trust.

Agent-framework integration: advisory pre-invocation screen

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/mastra ships this exact screen as a ready-made beforeToolCall hook - npm i @mcp-index/mastra, no wiring required.

Verdict contract (v1)

The tool returns the API's verdict as the API sent it (same fields and values the hosted endpoint at /api/mcp returns) plus four flat convenience fields this client adds at the end: server_id, tool_name, source_url, fetched_at.

jsonc
{  "subject": { "server_id": "github", "tool_name": "create_pull_request", "tool_verified": false },  "directive": "ALLOW" | "DENY" | "REVIEW" | "UNVERIFIED",  "status":    "EVALUATED" | "PARTIAL" | "STALE" | "ERROR",  "granularity": "description-level" | null,  // scope of a PARTIAL screen  "dimensions": [    { "id": "tool_safety", "verdict": "PASS", "severity": "INFO" }  ],  "expires_at": "2026-06-30T00:00:00Z",  "honest_limits": [    "semantic_only_no_conformance",    "calibrated_false_v1",    "description_level_screen",    "advisory",    "tool_name_not_independently_verified"  ],  "verdict_contract_version": "1.1.0",  "server_id": "github",  "tool_name": "create_pull_request",  "source_url": "https://mcpindex.ai/api/v1/trust/tool/github/create_pull_request",  "fetched_at": "2026-05-28T18:42:11.118Z"}

verdict_contract_version is the API's own version and is never rewritten by this client. subject.tool_verified: false means the API did not confirm the tool name exists on the server: today's screens are description-level, so any tool name on a screened server gets that server's verdict.

The free-tier verdict ships directives + dimensions + freshness. Evidence quotes, LLM rationale, and chain history are paid-tier surfaces and intentionally omitted here.

Honest limits (pin these to your gate UI)

honest_limits is the API's list, relayed verbatim; your gate SHOULD surface it on every dispatch decision. A screened verdict carries the screen's own limits (for example semantic_only_no_conformance, description_level_screen, tool_name_not_independently_verified). When there is no verdict on file, or the client fails closed, the list is the v1 floor:

  1. conformance_monitored_not_enforced - publishers self-declare; mcpindex monitors drift but does not block at the network layer.
  2. calibrated_false_v1 - dimension severities are not yet calibrated against real-world incident data.
  3. advisory_deployment - the verdict is advisory; the agent (or human reviewing the agent) is the decision-maker.

The client never merges the floor into a list the API sent, since that could contradict it.

History anchoring: OTS Bitcoin-anchored history; Bitcoin-finalized at N=6 confirmations (~1 hr); pending in ~10 min. Sub-window precision asserted, not proven.

Integration pattern (LangChain-style, direct LLM-tool-call convention)

js
import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const mcpindex = new Client({ name: 'gate', version: '1.0.0' }, { capabilities: {} });await mcpindex.connect(new StdioClientTransport({  command: 'npx', args: ['-y', 'mcp-server-mcpindex@latest'],}));
// gateToolCall wraps any agent tool dispatch. Plug it in front of// the LangChain / DSPy / Mastra / Composio tool-call hook.async function gateToolCall({ serverId, toolName, invoke, askHuman }) {  const res = await mcpindex.callTool({    name: 'check_tool_trust',    arguments: { server_id: serverId, tool_name: toolName },  });  const verdict = JSON.parse(res.content[0].text);
  // Pin the v1 caveats in the audit log no matter what.  audit.log({ verdict, caveats: verdict.honest_limits });
  switch (verdict.directive) {    case 'REVIEW':      // Fail-CLOSED to human. Do NOT auto-execute on REVIEW.      // At v1 this is the common screened outcome (semantic-only).      return askHuman({ verdict, action: `${serverId}/${toolName}` });
    case 'UNVERIFIED':      // No verdict on file (or upstream unreachable). Fail-CLOSED.      // Recommend human review. Do NOT fail-open to invoke().      return askHuman({        verdict,        action: `${serverId}/${toolName}`,        note: 'No trust verdict on file. Human review required before first use.',      });
    case 'ALLOW':      // Reserved in the contract — not produced by the v1 public screen.      // Keep the branch for future conformance-earned ALLOW; do not expect it today.      return invoke();
    case 'DENY':      // Reserved in the contract — not produced by the v1 public screen.      throw new Error(        `mcpindex denied ${serverId}/${toolName}: ${JSON.stringify(verdict.dimensions)}`,      );
    default:      // Unknown directive. Fail-CLOSED.      return askHuman({ verdict, action: `${serverId}/${toolName}` });  }}

The load-bearing rule: never fail-open

If the verdict endpoint is unreachable, returns a non-2xx status, times out, returns malformed JSON, gets a server_id / tool_name that would walk the API path (.., /, empty), 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.

Using the library directly (without MCP)

The trust client is also exported as a plain ES module:

js
import { checkToolTrust, assessServer } from 'mcp-server-mcpindex/src/trust.mjs';
const verdict = await checkToolTrust({  serverId: 'github',  toolName: 'create_pull_request',});
if (verdict.directive !== 'ALLOW') {  // Hand to a human, log, or block.}

Backend

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).

Related packages

Three ways to bring mcpindex into an agent, for different surfaces:

PackageInstallWhat it does
mcp-server-mcpindex (this package)npm i -g mcp-server-mcpindexDirectory + advisory screen as an MCP server: find servers by task, and check_tool_trust before a call.
@mcp-index/mastranpm i @mcp-index/mastraThe same advisory screen wired into Mastra as a beforeToolCall hook (warn / enforce).
@mcp-index/sdknpm i @mcp-index/sdkIn-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.

License

MIT.

Project

Unofficial. Not affiliated with Anthropic.

来源:mcp-server-mcpindex/README.md,提交 4f15285

工具

6

recommend_mcp_for_task

Recommend MCP servers for a task

Recommend the best MCP servers for a natural-language task. Returns top 3 ranked picks with reasoning, install commands, and quality scores. Use this when the user asks for the right MCP server for a task they want to do.

输入参数task必填

search_mcp_servers

Search MCP servers

Keyword + semantic search across every MCP server mcpindex indexes. Use when the user knows what tool category they want but not which server.

输入参数limitquery必填category

get_install_command

Get install command

Get the exact install command for a given MCP server and client. Returns a JSON block ready to paste into the client config.

输入参数client必填server_slug必填

compare_servers

Compare MCP servers

Side-by-side comparison of 2-5 MCP servers - quality scores, install paths, env vars.

输入参数slugs必填

check_tool_trust

Check tool trust (advisory)

Pre-invocation advisory screen for a specific tool on an MCP server. Returns an advisory verdict object (directive ALLOW | DENY | REVIEW | UNVERIFIED, dimensions, freshness). At v1 the public screen produces REVIEW or UNVERIFIED only - ALLOW/DENY are reserved. Not the in-path gate (mcpindex-gate). Agents SHOULD treat UNVERIFIED as "human review required", never as ALLOW.

输入参数server_id必填tool_name必填

assess_server

Assess server trust (advisory)

Aggregated pre-flight trust assessment across all tools on an MCP server. Same verdict shape as check_tool_trust. Use for "is THIS server worth integrating?" decisions. v1 advisory; conformance monitored not enforced; verdicts may be UNVERIFIED if not yet probed.

输入参数server_id必填

版本历史

1
  1. v0.4.0最新Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。