---
title: "List MCP servers"
method: GET
path: "/api/public/organizations/{orgId}/mcp-servers"
tags: ["MCP servers"]
---

# List MCP servers

`GET /api/public/organizations/{orgId}/mcp-servers`

## Request

- Base URL: `https://charts.basedash.com`
- URL: `https://charts.basedash.com/api/public/organizations/{orgId}/mcp-servers`
- Auth: HTTP bearer

Lists all MCP servers for an organization. Requires admin access to the organization. Results are paginated and ordered by creation date (newest first).

## Path parameters

- `orgId` string, required: Organization ID

## Query parameters

- `limit` integer: Maximum number of items to return (1-100, default 50)
- `cursor` string: Cursor for pagination (ID of the last item from previous page)

## Response `200`

MCP servers retrieved successfully

- object
  - `data` object[], required
    - `id` string, required: MCP server ID
    - `displayName` string, required: Display name for the MCP server
    - `serverUrl` string, required: MCP server URL
    - `serverLabel` string, required: Stable server label used when exposing tools to AI models
    - `transportType` 'STREAMABLE_HTTP' | 'SSE' | 'null', nullable, required: Transport protocol used by the MCP server
    - `setupState` 'INCOMPLETE' | 'CONNECTED' | 'BROKEN', required: MCP server setup state
    - `lastSyncStatus` union, required: Status of the last schema sync
      - 'PENDING'
      - 'SUCCESS'
      - 'FAILED'
      - 'NEVER_SYNCED'
    - `lastSyncAttemptAt` string, date-time, nullable, required: Last tool sync attempt timestamp
    - `lastSuccessfulSyncAt` string, date-time, nullable, required: Last successful tool sync timestamp
    - `hasCompletedFirstSync` boolean, required: Whether the first tool sync has completed
    - `syncErrorMessage` string, nullable, required: Error message from the last failed sync
    - `tools` object[], required: Available MCP tools
      - `id` string, required: Tool ID
      - `name` string, required: Tool name
      - `description` string, nullable, required: Tool description
      - `readOnlyHint` boolean, nullable, required: Whether the tool advertises that it only reads data
      - `accessMode` 'ALWAYS_ALLOW' | 'NEEDS_APPROVAL' | 'BLOCKED', required: Tool access mode
      - `foundInServer` boolean, required: Whether this tool was found during the latest sync
    - `createdAt` string, date-time, required: Creation timestamp
    - `updatedAt` string, date-time, required: Last update timestamp
  - `pagination` PaginationMeta, required
    - `nextCursor` string, nullable, required: Cursor for the next page (null if no more pages)
    - `hasMore` boolean, required: Whether there are more items after this page

## Other responses

- `401`: Unauthorized - Missing or invalid API key
- `404`: Not found - Organization not found or no access
- `429`: Rate limit exceeded - Too many requests
- `500`: Internal server error

---

[API](https://skmtc.dev/basedash/apis/basedash-public-api.md) - [All operations](https://skmtc.dev/basedash/apis/basedash-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/basedash/apis/basedash-public-api/revisions/efb9d40bc6f7?raw)
