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

# Groups

> Manage server groups to organize and route requests.

<Card title="GET /api/groups" href="#get-all-groups">Get a list of all groups.</Card>
<Card title="POST /api/groups" href="#create-a-new-group">Create a new group.</Card>
<Card title="GET /api/groups/:id" href="#get-a-group">Get details of a specific group.</Card>
<Card title="PUT /api/groups/:id" href="#update-a-group">Update an existing group.</Card>
<Card title="DELETE /api/groups/:id" href="#delete-a-group">Delete a group.</Card>
<Card title="POST /api/groups/:id/servers" href="#add-server-to-group">Add a server to a group.</Card>
<Card title="DELETE /api/groups/:id/servers/:serverName" href="#remove-server-from-group">Remove a server from a group.</Card>
<Card title="PUT /api/groups/:id/servers/batch" href="#batch-update-group-servers">Batch update servers in a group.</Card>
<Card title="GET /api/groups/:id/server-configs" href="#get-group-server-configs">Get detailed server configurations in a group.</Card>
<Card title="PUT /api/groups/:id/server-configs/:serverName/tools" href="#update-group-server-tools">Update tool selection for a server in a group.</Card>

***

### Get All Groups

Retrieves a list of all server groups.

* **Endpoint**: `/api/groups`
* **Method**: `GET`
* **Success Response**:
  ```json theme={null}
  {
    "success": true,
    "data": [
      {
        "id": "group-1",
        "name": "My Group",
        "description": "A collection of servers.",
        "servers": ["server1", "server2"],
        "owner": "admin"
      }
    ]
  }
  ```

***

### Create a New Group

Creates a new server group.

* **Endpoint**: `/api/groups`
* **Method**: `POST`
* **Body**:
  * `name` (string, required): The name of the group.
  * `description` (string, optional): A description for the group.
  * `servers` (array, optional): A list of server names or capability-scoped server configuration objects.
* **Request Example**:
  ```json theme={null}
  {
    "name": "My New Group",
    "description": "A description for the new group",
    "servers": [
      "server1",
      {
        "name": "server2",
        "tools": ["toolA", "toolB"],
        "prompts": ["draft_prompt"],
        "resources": ["resource://docs/guide"]
      }
    ]
  }
  ```

***

### Get a Group

Retrieves details for a specific group by its ID or name.

* **Endpoint**: `/api/groups/:id`
* **Method**: `GET`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.

***

### Update a Group

Updates an existing group's name, description, or server list.

* **Endpoint**: `/api/groups/:id`
* **Method**: `PUT`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group to update.
* **Body**:
  * `name` (string, optional): The new name for the group.
  * `description` (string, optional): The new description for the group.
  * `servers` (array, optional): The new list of servers for the group. See [Batch Update Group Servers](#batch-update-group-servers) for format.
* **Request Example**:
  ```json theme={null}
  {
    "name": "Updated Group Name",
    "description": "Updated description"
  }
  ```

***

### Delete a Group

Deletes a group by its ID or name.

* **Endpoint**: `/api/groups/:id`
* **Method**: `DELETE`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group to delete.

***

### Add Server to Group

Adds a single server to a group.

* **Endpoint**: `/api/groups/:id/servers`
* **Method**: `POST`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.
* **Body**:
  * `serverName` (string, required): The name of the server to add.
* **Request Example**:
  ```json theme={null}
  {
    "serverName": "my-server"
  }
  ```

***

### Remove Server from Group

Removes a single server from a group.

* **Endpoint**: `/api/groups/:id/servers/:serverName`
* **Method**: `DELETE`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.
  * `:serverName` (string, required): The name of the server to remove.

***

### Batch Update Group Servers

Replaces all servers in a group with a new list. The list can be simple strings or detailed configuration objects.

* **Endpoint**: `/api/groups/:id/servers/batch`
* **Method**: `PUT`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.
* **Body**:
  * `servers` (array, required): An array of server names (strings) or server configuration objects.
* **Request Example (Simple)**:
  ```json theme={null}
  {
    "servers": ["server1", "server2"]
  }
  ```
* **Request Example (Detailed)**:
  ```json theme={null}
  {
    "servers": [
      {
        "name": "server1",
        "tools": "all",
        "prompts": "all",
        "resources": "all"
      },
      {
        "name": "server2",
        "tools": ["toolA", "toolB"],
        "prompts": ["draft_prompt"],
        "resources": ["resource://docs/guide"]
      }
    ]
  }
  ```

Each detailed server object accepts these optional capability selectors:

* `tools`: `"all"` or an array of tool names.
* `prompts`: `"all"` or an array of prompt names.
* `resources`: `"all"` or an array of resource URIs.

***

### Get Group Server Configs

Retrieves the detailed configuration for all servers within a group, including which tools, prompts, and resources are enabled.

* **Endpoint**: `/api/groups/:id/server-configs`
* **Method**: `GET`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.
* **Success Response**:
  ```json theme={null}
  {
    "success": true,
    "data": [
      {
        "name": "server1",
        "tools": "all",
        "prompts": "all",
        "resources": "all"
      },
      {
        "name": "server2",
        "tools": ["toolA", "toolB"],
        "prompts": ["draft_prompt"],
        "resources": ["resource://docs/guide"]
      }
    ]
  }
  ```

***

### Update Group Server Tools

Updates the tool selection for a specific server within a group.

* **Endpoint**: `/api/groups/:id/server-configs/:serverName/tools`
* **Method**: `PUT`
* **Parameters**:
  * `:id` (string, required): The ID or name of the group.
  * `:serverName` (string, required): The name of the server to update.
* **Body**:
  * `tools` (string or array of strings, required): Either the string `"all"` to enable all tools, or an array of tool names to enable specifically.
* **Request Example**:
  ```json theme={null}
  {
    "tools": ["toolA", "toolC"]
  }
  ```
