MCP Registry Search: find and add MCP servers

Search 31,000+ MCP servers by task, tool or tag, get install configs, and submit new servers.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
94%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~900Tokens (tool definitions)
~2.6 KBTypical response size
Moderate attention impact (0.70% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp-registry-search": {
      "url": "https://ai.mcpharbor.dev/mcp"
    }
  }
}

Remote endpoints

https://ai.mcpharbor.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_servers(offset, tag, query, limit, transport)

Search the registry for MCP servers. Matches names, titles, descriptions, tags and the names of the tools each server exposes. Returns short summaries; call get_server for install instructions. Search before submit_server so you don't add a duplicate.

Input Schema

{
  "type": "object",
  "properties": {
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0
    },
    "tag": {
      "type": "string",
      "description": "Only servers with this tag, e.g. search."
    },
    "query": {
      "type": "string",
      "description": "Free text, e.g. \"github issues\", or a tool name such as \"get_forecast\". Omit to list everything."
    },
    "limit": {
      "default": 10,
      "maximum": 50,
      "type": "integer",
      "minimum": 1
    },
    "transport": {
      "type": "string",
      "enum": [
        "stdio",
        "streamable-http",
        "sse"
      ],
      "description": "Only servers with this transport."
    }
  },
  "additionalProperties": false
}
🟢get_server(name)

Get one server by its exact name: its server.json manifest, its review status, and ready-to-use install snippets. Use it to check on a server you submitted; status is pending until a maintainer approves it.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Exact server name, e.g. io.github.acme/weather-mcp."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
🟡submit_server(name, version, description, title, tools, ...)

Add an MCP server to the registry. New submissions are reviewed by a maintainer before they appear in search; get_server shows their status meanwhile. Fill in what you know from the server's README or package metadata. If the result is an error, fix the fields it names and call again. Never include secrets: env_vars takes variable names only, not values.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Unique name: a reverse-DNS namespace you can vouch for, a slash, and a short name. For a GitHub project use io.github.<owner>/<repo>, e.g. io.github.acme/weather-mcp. Lowercase letters, digits, dots, hyphens and underscores."
    },
    "version": {
      "type": "string",
      "description": "Current version, e.g. 1.2.0. Defaults to 0.1.0."
    },
    "description": {
      "type": "string",
      "description": "What the server does and anything it needs to run, in one or two sentences.",
      "maxLength": 1000,
      "minLength": 10
    },
    "title": {
      "type": "string",
      "description": "Human-readable name, e.g. Weather.",
      "maxLength": 120
    },
    "tools": {
      "type": "array",
      "description": "Names of the tools the server exposes.",
      "items": {
        "type": "string"
      }
    },
    "transport": {
      "type": "string",
      "enum": [
        "stdio",
        "streamable-http",
        "sse"
      ],
      "description": "stdio for a server run locally from a package; streamable-http for a hosted server reached by URL; sse only for older hosted servers."
    },
    "tags": {
      "type": "array",
      "description": "Lowercase topic tags, e.g. weather, data.",
      "items": {
        "type": "string"
      },
      "maxItems": 12
    },
    "remote_url": {
      "type": "string",
      "description": "Required for streamable-http and sse: the URL clients connect to."
    },
    "package_registry": {
      "type": "string",
      "enum": [
        "npm",
        "pypi",
        "oci",
        "nuget",
        "mcpb",
        "cargo"
      ],
      "description": "Required for stdio: where the package is published."
    },
    "package_identifier": {
      "type": "string",
      "description": "Required for stdio: the package name or image, e.g. @acme/weather-mcp or ghcr.io/acme/weather-mcp."
    },
    "repository_url": {
      "type": "string",
      "description": "Source repository URL."
    },
    "website_url": {
      "type": "string",
      "description": "Documentation or home page URL."
    },
    "env_vars": {
      "type": "array",
      "description": "Names of environment variables the server needs, e.g. WEATHER_API_KEY. Names only.",
      "items": {
        "type": "string"
      }
    },
    "license": {
      "type": "string",
      "description": "SPDX license identifier, e.g. MIT."
    }
  },
  "required": [
    "name",
    "title",
    "description",
    "transport"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools