MC

MCP Server Search and Discovery Tools

Search and discover MCP server listings, query server details, and find the best match from this comprehensive list.

Quick Install
npx -y @atonomus/mcp-servers-search

Overview

This repository provides a focused set of tools for searching and discovering MCP (Model Context Protocol) servers. It collects or indexes server listings, exposes a simple HTTP API for querying server details, and offers a “best match” endpoint to find the most suitable server given a set of capabilities, tags, or other filters. The project is useful for service registries, client bootstrapping, monitoring dashboards, and developer tooling that needs to locate MCP-capable endpoints programmatically.

Designed for developers who want an easy-to-run directory of MCP servers, the project supports full-text and attribute-based search, configurable ranking, and both ad-hoc and automated discovery workflows. It can be deployed locally for testing or in production behind a standard reverse proxy or load balancer.

Features

  • Index and query MCP server listings using HTTP REST endpoints
  • Full-text search across server names, descriptions, and tags
  • Filter by capabilities, region, tags, or custom metadata
  • “Best match” ranking to select the most appropriate server for a requested capability set
  • Lightweight Node.js/Express implementation with optional Docker image
  • Simple JSON API responses for easy client integration
  • Configurable via environment variables (port, database, indexing options)

Installation / Configuration

Clone the repository and use npm (or yarn/pnpm) to install dependencies.

git clone https://github.com/atonomus/mcp-servers-search.git
cd mcp-servers-search
npm install

Development and production commands:

# Run in development (auto-reload)
npm run dev

# Build and start production
npm run build
npm start

Docker:

# Build
docker build -t mcp-servers-search:latest .

# Run (example)
docker run -e PORT=8080 -p 8080:8080 mcp-servers-search:latest

Environment variables (common):

VariableDefaultDescription
PORT3000HTTP server port
DATABASE_URLsqlite://./data/servers.dbDB connection string (SQLite/Postgres supported)
INDEX_PATH./data/indexPath for search index files
DATA_REFRESH_INTERVAL3600Seconds between automatic listing refreshes

Example .env:

PORT=3000
DATABASE_URL=sqlite://./data/servers.db
INDEX_PATH=./data/index
DATA_REFRESH_INTERVAL=3600

Available Resources

The server exposes a small set of HTTP endpoints suitable for direct consumption by clients, dashboards, or other services.

  • GET /api/servers
    • Returns a list of all servers (supports pagination).
  • GET /api/servers/:id
    • Retrieve full metadata for a specific server.
  • GET /api/search
    • Search by query string, tags, capabilities, region, and other filters.
  • GET /api/match
    • Find the best match for a requested capability set or tags.

Sample endpoints table:

EndpointMethodQuery ParamsDescription
/api/serversGETpage, limitList servers
/api/servers/:idGETServer details
/api/searchGETq, tags, region, limitFiltered search
/api/matchGETcapabilities, tags, regionBest-match selection

Example JSON response (server item):

{
  "id": "srv_123",
  "name": "MCP West Coast",
  "url": "https://west.example.com/mcp",
  "region": "us-west",
  "tags": ["image", "vision", "low-latency"],
  "capabilities": ["image-classification", "image-caption"],
  "score": 0.92,
  "meta": { "uptime": "99.9%" }
}

Use Cases

  1. Client bootstrapping

    • A client wants to find a nearby MCP server that supports “image-caption”:
      • Request: GET /api/match?capabilities=image-caption&region=eu
      • Response: Best matching server URL and score for immediate connection.
  2. Service dashboard and monitoring

    • A dashboard polls /api/servers to build an overview of available MCP endpoints and displays tags, latency averages, and uptime meta.
  3. Automated routing / gateway

    • A gateway queries /api/match with an incoming request’s required capabilities and routes traffic to the selected MCP server, improving client experience by matching capabilities and geography.
  4. Developer exploration

    • A developer searches for experimental servers capable of “multimodal” features:
      • Request: GET /api/search?q=multimodal&tags=experimental&limit=10

Concrete example (curl):

# Search for servers with image capabilities and the tag "low-latency"
curl "http://localhost:3000/api/search?q=image&tags=low-latency&limit=5" | jq

# Find the best match for a capability set
curl "http://localhost:3000/api/match?capabilities=image-caption,image-classification&region=us-west"

Extending and Integrating

  • Indexing: The search index can be extended to include custom scoring (e.g., ping latency, recent success rates).
  • Data sources: Ingest lists from static JSON, admin UIs, or remote registries. The codebase includes hooks for scheduled refresh tasks.
  • Security: Deploy behind API gateways or add token-based auth for private registries. Rate limiting and caching layers are recommended for high-traffic environments.

Repository and contribution details are available on GitHub: https://github.com/atonomus/mcp-servers-search.

Tags:search