mcp.so APImcp.so ↗
Access the mcp.so directory via API. List, search, and get detailed metadata on MCP servers and clients including tags, categories, tools, and GitHub URLs.
curl -X GET 'https://api.parse.bot/scraper/02196c50-9b62-48df-83c5-292bcc15eb74/list_servers?tab=featured&page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch a paginated list of MCP servers. Returns server names, URLs, and short descriptions. Supports filtering by tab (featured or latest).
| Param | Type | Description |
|---|---|---|
| tab | string | Filter tab. Accepted values: 'featured', 'latest'. Omitting returns all servers. |
| page | integer | Page number for pagination. |
{
"type": "object",
"fields": {
"tab": "string, active filter tab or empty string",
"page": "integer, current page number",
"servers": "array of server objects with name, url, and short_description"
},
"sample": {
"data": {
"tab": "featured",
"page": 1,
"servers": [
{
"url": "https://mcp.so/server/puppeteer/modelcontextprotocol",
"name": "Puppeteer",
"short_description": "Browser automation and web scraping"
}
]
},
"status": "success"
}
}About the mcp.so API
The mcp.so API exposes 10 endpoints covering the full mcp.so directory of Model Context Protocol servers and clients. Use get_server_detail to retrieve structured metadata for any server — including its category, tags, inferred language, configuration JSON, and GitHub URL — or use search_servers to find servers by keyword. The API also enumerates all available categories, tags, and MCP client applications.
Server Discovery and Search
The list_servers endpoint returns a paginated array of server objects, each with name, url, and short_description. You can filter by tab to get featured or latest servers, or omit it to retrieve all. For keyword-based discovery, search_servers accepts a query string and returns matching servers in the same shape. Both endpoints are suitable for building indexes or autocomplete features over the mcp.so catalog.
Detailed Server Metadata
get_server_detail fetches the full record for a single server identified by slug (e.g., github, puppeteer, blender). When multiple servers share a slug, supply the optional author parameter (e.g., modelcontextprotocol) to disambiguate. The response includes tags (array of strings), category, language (inferred, e.g., TypeScript/JavaScript, Python, Docker), github_url, config (the MCP server configuration object or null), and a full description. The get_server_tools endpoint accepts the same slug/author inputs and returns each tool the server exposes — name and description per tool — making it useful for capability diffing across servers.
Categories, Tags, and Clients
list_categories returns all category objects with name, slug, and url. Pass a slug to list_servers_by_category to get paginated servers within that category (e.g., developer-tools, browser-automation, databases). The same pattern applies to tags: list_tags gives all available tags, and list_servers_by_tag accepts a tag string plus optional page. The list_clients endpoint returns MCP client applications — such as Cursor, VSCode, Windsurf, and Cline — each with name, url, and short_description.
Bulk Metadata Retrieval
get_top_servers_with_metadata returns enriched server objects — including category, tags, github_url, and language — for the top N servers in one call. Because it fetches detail pages per server, response time scales with the limit parameter. For large batch needs, prefer iterating list_servers with pagination combined with individual get_server_detail calls to control throughput.
- Build a searchable index of MCP servers filtered by category or tag for a developer portal.
- Audit the tool surface of multiple MCP servers by comparing
get_server_toolsoutput across slugs. - Track newly listed servers by polling
list_serverswithtab=latestand storing new entries. - Populate a server recommendation UI using
search_serversquery results keyed to user intent. - Aggregate GitHub URLs from
get_server_detailto cross-reference repository activity metrics. - Enumerate all MCP-compatible client applications from
list_clientsfor a compatibility matrix. - Filter servers by inferred
languagefield to surface Python-only or Docker-based integrations.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does mcp.so have an official developer API?+
When multiple servers share the same slug, how do I get the right one?+
author parameter alongside slug in get_server_detail or get_server_tools. For example, slug github with author modelcontextprotocol returns a different record than the same slug under a different author handle. If author is omitted and a slug is ambiguous, the API returns whichever record resolves first.Does the API expose download counts, install counts, or popularity metrics for servers?+
tags, category, language, github_url, config, and description, but no numeric popularity or usage signals. You can fork this API on Parse and revise it to add an endpoint that pulls any such metrics if mcp.so surfaces them on individual server pages.Does `get_top_servers_with_metadata` return all servers in the directory?+
limit parameter, selecting from the top of the mcp.so listing. It does not guarantee full catalog coverage. For broader coverage, use list_servers with pagination and request detail per server individually.Does the API return version history or changelog data for individual MCP servers?+
github_url field which you can use to query GitHub's API for version and commit history independently. You can fork this API on Parse and revise it to add an endpoint that fetches and returns version metadata from those GitHub URLs.