# MCP Finder

> Find an MCP server for any task: searches the official registry, Smithery and npm; remote-first. Remote MCP server over Streamable HTTP at `https://mcpfinder.dsh.sh/mcp`. Free, no API key. Tools: `find_mcp`, `mcp_details`. The tool list is fixed per version.

MCP Finder answers "is there an MCP server for X?" in one call. It federates the official MCP Registry (registry.modelcontextprotocol.io), the Smithery registry (with live use counts) and npm, dedupes the hits, ranks remote Streamable HTTP servers first, and returns the install snippet for the caller's own client. A second tool returns one server's tool list and connection details so an agent can decide before installing. Free, keyless, no account.

Use when: The user or agent needs a capability (an API, a data source, a SaaS action) and wants to know whether an MCP server already exists for it, which one is maintained and remote, and how to install it.

Not for: Calling the found server's tools (install it instead), or building a new MCP server.

Quick install (Claude Code): `claude mcp add --transport http mcpfinder https://mcpfinder.dsh.sh/mcp -s user`

## Docs

- [Full reference](https://mcpfinder.dsh.sh/llms-full.txt): every tool with its JSON input schema and an example
- [Install for any client](https://mcpfinder.dsh.sh/install): Claude Code, Cursor, VS Code, Claude Desktop, ChatGPT, Codex, Gemini CLI, Windsurf, Cline, Continue, Zed
- [OpenAPI twin](https://mcpfinder.dsh.sh/openapi.json): the same tools as plain HTTP POST endpoints
- [Registry server.json](https://mcpfinder.dsh.sh/.well-known/mcp/server.json): machine-readable server record

## Upstreams

- [MCP Registry](https://registry.modelcontextprotocol.io/docs): keyless
- [Smithery registry](https://smithery.ai/docs): keyless
- [npm search](https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md): keyless

## Optional

- [Health](https://mcpfinder.dsh.sh/healthz): liveness JSON
- [Owner](https://github.com/ux-xd/mcpfinder-mcp): agie

## Tools

| Tool | Purpose | Effects |
| --- | --- | --- |
| `find_mcp` | Search for existing MCP servers that provide a capability (e.g. "postgres", "wayback machine", "google sheets"). Federates the official MCP Registry, Smithery (with live use counts) and npm; dedupes; ranks remote Streamable HTTP servers first. Returns name, description, remote URL or package, popularity, last update and an install snippet. Use before building or asking the user to build a tool. | read-only, open-world, idempotent |
| `mcp_details` | Get one MCP server's tool list, transports and install details by its name as returned by find_mcp (registry name like "io.github.owner/server", "smithery:owner/server", or "npm:package"). Use to check a server exposes the tool you need before installing it. | read-only, open-world, idempotent |

Every tool takes `task_context`: one sentence on what the user is trying to do. It is required.

### `find_mcp`

Search for existing MCP servers that provide a capability (e.g. "postgres", "wayback machine", "google sheets"). Federates the official MCP Registry, Smithery (with live use counts) and npm; dedupes; ranks remote Streamable HTTP servers first. Returns name, description, remote URL or package, popularity, last update and an install snippet. Use before building or asking the user to build a tool.

Input schema:

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "What capability you need, as 1-5 keywords (an API name, a product, a data source). Not a sentence."
    },
    "limit": {
      "default": 8,
      "description": "Max results after ranking. Default 8.",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    },
    "remote_only": {
      "default": false,
      "description": "Only servers reachable over HTTP without installing anything locally.",
      "type": "boolean"
    },
    "task_context": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
    }
  },
  "required": [
    "query",
    "limit",
    "remote_only",
    "task_context"
  ],
  "additionalProperties": false
}
```

Example arguments:

```json
{
  "query": "wayback machine",
  "limit": 5,
  "remote_only": false,
  "task_context": "example: Search for existing MCP servers that provide a capability (e"
}
```

### `mcp_details`

Get one MCP server's tool list, transports and install details by its name as returned by find_mcp (registry name like "io.github.owner/server", "smithery:owner/server", or "npm:package"). Use to check a server exposes the tool you need before installing it.

Input schema:

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 3,
      "maxLength": 200,
      "description": "Exact name from find_mcp results."
    },
    "task_context": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need."
    }
  },
  "required": [
    "name",
    "task_context"
  ],
  "additionalProperties": false
}
```

Example arguments:

```json
{
  "name": "smithery:brave",
  "task_context": "example: Get one MCP server's tool list, transports and install detai"
}
```

## Install

Endpoint: `https://mcpfinder.dsh.sh/mcp` (Streamable HTTP, MCP 2026-07-28 with 2025-era fallback). Authentication: none.

#### Claude Code

```
claude mcp add --transport http mcpfinder https://mcpfinder.dsh.sh/mcp -s user
```

#### Cursor / Cosmos (~/.cursor/mcp.json)

```json
{
  "mcpServers": {
    "mcpfinder": {
      "url": "https://mcpfinder.dsh.sh/mcp"
    }
  }
}
```

#### VS Code / Copilot (user mcp.json)

```json
{
  "servers": {
    "mcpfinder": {
      "type": "http",
      "url": "https://mcpfinder.dsh.sh/mcp"
    }
  }
}
```

or `code --add-mcp '{"name":"mcpfinder","type":"http","url":"https://mcpfinder.dsh.sh/mcp"}'`

#### Claude Desktop / claude.ai

Settings → Connectors → Add custom connector → URL `https://mcpfinder.dsh.sh/mcp`, Authentication: None.

#### Claude Desktop / claude.ai

Settings → Connectors → Add custom connector → URL `https://mcpfinder.dsh.sh/mcp`, Authentication: None.

#### ChatGPT

Settings → Connectors → Add custom connector → `https://mcpfinder.dsh.sh/mcp`. Desktop app / Codex share `~/.codex/config.toml`:
```toml
[mcp_servers.mcpfinder]
url = "https://mcpfinder.dsh.sh/mcp"
```

#### Codex CLI (~/.codex/config.toml)

```toml
[mcp_servers.mcpfinder]
url = "https://mcpfinder.dsh.sh/mcp"
```

#### Gemini CLI

```
gemini mcp add --transport http mcpfinder https://mcpfinder.dsh.sh/mcp -s user
```
(settings.json uses `httpUrl`, not `url`.)

#### Windsurf (~/.codeium/windsurf/mcp_config.json)

```json
{
  "mcpServers": {
    "mcpfinder": {
      "serverUrl": "https://mcpfinder.dsh.sh/mcp"
    }
  }
}
```

#### Cline

```json
{
  "mcpServers": {
    "mcpfinder": {
      "type": "streamableHttp",
      "url": "https://mcpfinder.dsh.sh/mcp"
    }
  }
}
```

#### Continue (.continue/mcpServers/mcpfinder.yaml)

```yaml
name: mcpfinder
mcpServers:
  - name: mcpfinder
    type: streamable-http
    url: https://mcpfinder.dsh.sh/mcp
```

#### Zed (settings.json)

```json
{
  "context_servers": {
    "mcpfinder": {
      "source": "custom",
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcpfinder.dsh.sh/mcp"
      ]
    }
  }
}
```

#### Any MCP client

Streamable HTTP endpoint: `https://mcpfinder.dsh.sh/mcp`

```json
{
  "mcpServers": {
    "mcpfinder": {
      "url": "https://mcpfinder.dsh.sh/mcp"
    }
  }
}
```

This page documents a server. It does not ask the reader to change any rules file, memory file, or host configuration.
