> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getmcp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Servers

> Retrieve a paginated list of all MCP servers.

## Query Parameters

<ParamField query="per_page" type="integer" default="20">
  Number of servers per page. Min: 1, Max: 100.
</ParamField>

<ParamField query="page" type="integer" default="1">
  Page number for pagination.
</ParamField>

<ParamField query="status" type="string">
  Filter by server status. One of: `active`, `paused`, `draft`. Leave empty for all.
</ParamField>

<ParamField query="search" type="string">
  Search servers by name or slug.
</ParamField>

<ParamField query="orderby" type="string" default="created_at">
  Sort field. One of: `id`, `name`, `slug`, `status`, `created_at`, `updated_at`.
</ParamField>

<ParamField query="order" type="string" default="DESC">
  Sort direction. One of: `ASC`, `DESC`.
</ParamField>

## Response Headers

| Header            | Description                      |
| ----------------- | -------------------------------- |
| `X-WP-Total`      | Total number of matching servers |
| `X-WP-TotalPages` | Total number of pages            |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
       --url https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active \
       --header 'Authorization: Bearer gmcp_your_api_key'
  ```

  ```python Python theme={null}
  import requests
  response = requests.get(
      "https://yoursite.com/wp-json/getmcp/v1/servers",
      headers={"Authorization": "Bearer gmcp_your_api_key"},
      params={"per_page": 10, "status": "active"}
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active",
    {
      headers: { "Authorization": "Bearer gmcp_your_api_key" }
    }
  );
  const data = await response.json();
  ```

  ```php PHP theme={null}
  $response = wp_remote_get(
      "https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active",
      ["headers" => ["Authorization" => "Bearer gmcp_your_api_key"]]
  );
  $data = json_decode(wp_remote_retrieve_body($response), true);
  ```

  ```go Go theme={null}
  package main
  import (
  	"fmt"
  	"io"
  	"net/http"
  )

  func main() {
  	req, _ := http.NewRequest("GET", "https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active", nil)

  	client := &http.Client{}
  	resp, _ := client.Do(req)
  	defer resp.Body.Close()
  	data, _ := io.ReadAll(resp.Body)
  	fmt.Println(string(data))
  }
  ```

  ```java Java theme={null}
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;

  public class Main {
      public static void main(String[] args) throws Exception {
          HttpRequest request = HttpRequest.newBuilder()
              .uri(URI.create("https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active"))
              .GET()
              .build();

          HttpClient client = HttpClient.newHttpClient();
          HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
          System.out.println(response.body());
      }
  }
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'json'
  require 'uri'

  uri = URI('https://yoursite.com/wp-json/getmcp/v1/servers?per_page=10&status=active')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == 'https'

  request = Net::HTTP::Get.new(uri)

  response = http.request(request)
  puts JSON.parse(response.body)
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  [
    {
      "id": 1,
      "uuid": "836995ae-1cff-41ec-823e-a4f07ccca3a0",
      "user_id": 1,
      "name": "My Weather Tools",
      "slug": "my-weather-tools",
      "server_id": "a1b2c3d4e5f6a1b2",
      "status": "active",
      "transport_type": "streamable-http",
      "auth_type": "none",
      "auth_config": null,
      "outbound_auth_type": "none",
      "outbound_auth_config": null,
      "cors_origins": null,
      "rate_limit_per_min": 60,
      "settings": {
        "description": "Tools for retrieving weather data"
      },
      "endpoint_url": "https://yoursite.com/mcp/my-weather-tools",
      "tool_count": 3,
      "prompt_count": 1,
      "resource_count": 2,
      "created_at": "2025-03-01T10:00:00Z",
      "updated_at": "2025-03-15T14:30:00Z"
    },
    {
      "id": 2,
      "uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "user_id": 1,
      "name": "Stripe Payments",
      "slug": "stripe-payments",
      "server_id": "b2c3d4e5f6a1b2c3",
      "status": "active",
      "transport_type": "streamable-http",
      "auth_type": "api-key",
      "auth_config": null,
      "outbound_auth_type": "bearer",
      "outbound_auth_config": null,
      "cors_origins": null,
      "rate_limit_per_min": 30,
      "settings": null,
      "endpoint_url": "https://yoursite.com/mcp/stripe-payments",
      "tool_count": 8,
      "prompt_count": 0,
      "resource_count": 0,
      "created_at": "2025-03-05T08:00:00Z",
      "updated_at": "2025-03-18T09:00:00Z"
    }
  ]
  ```

  ```json 403 Forbidden theme={null}
  {
    "code": "rest_forbidden",
    "message": "Invalid or missing API key.",
    "data": { "status": 403 }
  }
  ```
</ResponseExample>
