Skip to content

List MCP Servers

GET/v1/mcp/servers

Returns a paginated list of all enabled MCP tool servers available on SandBase. Use this endpoint to discover servers by category, browse available integrations, and find the name identifier needed for other MCP endpoints.

This endpoint is also available at /api/mcp/servers without authentication for public browsing.

Authentication

EndpointAuth Required
GET /v1/mcp/serversYes — Authorization: Bearer <API_KEY>
GET /api/mcp/serversNo — public access

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed). Values less than 1 are treated as 1.
pageSizeinteger20Number of results per page. Must be between 1 and 100; invalid values default to 20.

Response

Returns a paginated list of MCP server objects wrapped in the standard response envelope.

Response Fields

FieldTypeDescription
codeinteger0 on success
data.dataarrayArray of MCP server objects
data.totalintegerTotal number of enabled MCP servers
data.pageintegerCurrent page number
data.page_sizeintegerNumber of items per page

Server Object

FieldTypeDescription
namestringUnique server identifier (e.g. exa/exa). Use this in other MCP endpoints.
display_namestringHuman-readable server name (e.g. Exa Search)
descriptionstringBrief description of the server's capabilities
vendorstringServer vendor/publisher name
capability_tagsstring[]Category tags (e.g. ["web-search", "research"])
enabledbooleanAlways true in list results (disabled servers are excluded)

Example Request

bash
# List first page of MCP servers (authenticated)
curl "https://api.sandbase.ai/v1/mcp/servers?page=1&pageSize=10" \
  -H "Authorization: Bearer sb-your-api-key"

# Public access (no auth required)
curl "https://api.sandbase.ai/api/mcp/servers?page=1&pageSize=10"

Example Response

json
{
  "code": 0,
  "data": {
    "data": [
      {
        "name": "exa/exa",
        "display_name": "Exa Search",
        "description": "Web search optimized for AI — returns clean, structured content from across the internet.",
        "vendor": "Exa",
        "capability_tags": ["web-search", "research"],
        "enabled": true
      },
      {
        "name": "browserbase/browserbase",
        "display_name": "Browserbase",
        "description": "Cloud browser automation — navigate pages, extract data, fill forms, and take screenshots.",
        "vendor": "Browserbase",
        "capability_tags": ["browser", "automation", "scraping"],
        "enabled": true
      },
      {
        "name": "neon/neon-postgres",
        "display_name": "Neon Postgres",
        "description": "Serverless Postgres database — run SQL queries, manage schemas, and handle migrations.",
        "vendor": "Neon",
        "capability_tags": ["database", "postgres", "sql"],
        "enabled": true
      }
    ],
    "total": 2100,
    "page": 1,
    "page_size": 10
  },
  "message": "ok"
}

Error Responses

StatusError CodeDescription
401unauthorizedMissing or invalid API key (authenticated endpoint only)
500internal_errorFailed to query MCP servers from database

Error Example

json
{
  "error": "internal_error",
  "message": "Failed to query MCP servers"
}

Pagination

Results are ordered by sort_order (descending) then display_name (ascending). To iterate through all servers:

python
import requests

page = 1
all_servers = []

while True:
    resp = requests.get(
        "https://api.sandbase.ai/v1/mcp/servers",
        params={"page": page, "pageSize": 100},
        headers={"Authorization": "Bearer sb-your-api-key"}
    )
    data = resp.json()["data"]
    all_servers.extend(data["data"])

    if len(all_servers) >= data["total"]:
        break
    page += 1

print(f"Found {len(all_servers)} MCP servers")