GET /api/servers
List all MCP servers and their status.
GET /api/servers/:name
Read a single server’s configuration.
POST /api/servers
Add a new MCP server.
POST /api/servers/batch
Add multiple servers in one request.
PUT /api/servers/:name
Update an existing server.
DELETE /api/servers/:name
Remove a server.
POST /api/servers/:name/toggle
Enable or disable a server.
POST /api/servers/:name/reload
Reconnect to an upstream server.
POST /api/servers/:serverName/tools/:toolName/toggle
Enable or disable a tool.
PUT /api/servers/:serverName/tools/:toolName/description
Override a tool description.
DELETE /api/servers/:serverName/tools/:toolName/description
Reset a tool description to upstream.
PUT /api/servers/:serverName/tools/:toolName/hidden-params
Hide top-level input parameters from models.
Prompts on servers
Toggle / describe / reset prompts.
Resources on servers
Toggle / describe / reset resources.
GET /api/settings
Read everything: servers, groups, system config.
Get All Servers
Retrieves a list of all configured MCP servers, including their status and available tools. Connected, enabled MCP servers include an optionalprotocolVersion field containing the current connection’s negotiated MCP protocol version. It is omitted for disconnected, disabled, and OpenAPI servers, or when unavailable. This is separate from the server software version.
- Endpoint:
/api/servers - Method:
GET - Response:
Get a Server
Returns the configuration of a single server, including upstream tools/prompts/resources when connected.- Endpoint:
GET /api/servers/:name - Authentication: Required.
- Returns
404if the server is not configured.
Create a New Server
Adds a new MCP server to the configuration.- Endpoint:
/api/servers - Method:
POST - Body:
name(string, required): The unique name for the server.config(object, required): The server configuration object.type(string):stdio,sse,streamable-http, oropenapi.command(string): Command to execute forstdiotype.args(array of strings): Arguments for the command.url(string): URL forsse,streamable-http, oropenapitypes.openapi(object): OpenAPI configuration.url(string): URL to the OpenAPI schema.schema(object): The OpenAPI schema object itself.
headers(object): Headers to send with requests forsse,streamable-http, andopenapitypes.keepAliveInterval(number): Health check interval in milliseconds for remote servers. Defaults to 60000.enableKeepAlive(boolean): Toggle periodic health checks for remote servers. Disconnected remote servers always retry automatically with bounded exponential backoff and jitter.enabled(boolean): Defaults totrue. Disabled servers stay in the configuration but are not connected.owner(string): The owner of the server. Defaults to the current user or'admin'.passthroughHeaders(string[]): Inbound HTTP header names that should be forwarded to the upstream server.oauth,proxy,options,description: Optional advanced settings — see MCP Settings.
Batch Create Servers
Create several servers in a single request. The body contains aservers array of { name, config } objects — the same shape POST /api/servers accepts, just batched:
- Endpoint:
POST /api/servers/batch - Authentication: Required.
- Body:
{ name, success, message? } record so partial batches do not abort the whole request.
Update a Server
Updates the configuration of an existing MCP server.- Endpoint:
/api/servers/:name - Method:
PUT - Parameters:
:name(string, required): The name of the server to update.
- Body:
config(object, required): The updated server configuration object. See “Create a New Server” for details.
Delete a Server
Removes an MCP server from the configuration.- Endpoint:
/api/servers/:name - Method:
DELETE - Parameters:
:name(string, required): The name of the server to delete.
Toggle a Server
Enables or disables an MCP server.- Endpoint:
/api/servers/:name/toggle - Method:
POST - Parameters:
:name(string, required): The name of the server to toggle.
- Body:
enabled(boolean, required):trueto enable the server,falseto disable it.
Reload a Server
Forces MCPHub to disconnect and re-establish the upstream connection (or re-spawn the stdio child) for a single server. Use this when an upstream server has been updated out-of-band or appears stuck.- Endpoint:
POST /api/servers/:name/reload - Authentication: Required.
Batch Tool Status
POST /api/servers/:serverName/tools/toggle enables or disables currently discovered tools in one request. It requires dashboard authentication and the same server configuration access as the single-tool endpoint.
enabledis a required boolean; repeated requests set the same state.toolscontains 1–100 non-empty names or patterns, up to 256 characters each. Patterns are case-sensitive full-name matches:*matches zero or more characters,?matches one; every other character is literal.- Exact names resolve runtime (server-prefixed) names first, then original upstream names. Patterns match either form using the configured name separator.
- Matching tools are deduplicated and saved in one update. Descriptions and hidden parameters are preserved. The change applies across groups and takes effect for discovery and subsequent calls without reconnecting.
- For personal OAuth or credential bindings, the inventory belongs to the authenticated caller; another user’s credentials are never borrowed. If that inventory cannot be acquired, the request returns
409without changing tool states. - Patterns are expanded once against the current inventory, not persisted as policies for future tools. An unavailable inventory returns
409; an empty match succeeds without writing.
Toggle a Tool
Enables or disables a specific tool on a server.- Endpoint:
/api/servers/:serverName/tools/:toolName/toggle - Method:
POST - Parameters:
:serverName(string, required): The name of the server.:toolName(string, required): The name of the tool.
- Body:
enabled(boolean, required):trueto enable the tool,falseto disable it.
Update Tool Description
Updates the description of a specific tool.- Endpoint:
/api/servers/:serverName/tools/:toolName/description - Method:
PUT - Parameters:
:serverName(string, required): The name of the server.:toolName(string, required): The name of the tool.
- Body:
description(string, required): The new description for the tool.
Reset Tool Description
Drops the override stored in MCPHub and falls back to the upstream tool description.- Endpoint:
DELETE /api/servers/:serverName/tools/:toolName/description - Authentication: Required.
Hide Tool Parameters
Sets the top-level input parameters of a tool that models do not see. They are removed from the input schema intools/list, search_tools results, describe_tool, the Smart Routing embedding text, generated OpenAPI specs and context cost figures, and dropped from the arguments of a call before it is forwarded, so the upstream default applies. Use it for options a deployment cannot use, such as cloud-only features of a self-hosted backend. The dashboard keeps showing the full schema.
- Endpoint:
/api/servers/:serverName/tools/:toolName/hidden-params - Method:
PUT - Parameters:
:serverName(string, required): The name of the server.:toolName(string, required): The name of the tool, bare or server-prefixed.
- Body:
hiddenParams(string[], required): Top-level parameter names. An empty array removes the setting.
- Errors:
400when a name is not a parameter of the tool or is listed in itsrequired. These checks run when the server is connected; otherwise the list is stored as given, and a required parameter is still never hidden.
Prompts
MCPHub exposes the same toggle / describe / reset triple for upstream prompts. The body shape mirrors the tool endpoints above.Resources
System Configuration
System-wide configuration (routing, install, smart routing, mcpRouter, name separator, session rebuild, OAuth server) is managed throughPUT /api/system-config. See System Config API for the full request schema and accepted top-level keys (routing, install, smartRouting, mcpRouter, nameSeparator, enableSessionRebuild, oauthServer).
Get Settings
Retrieves all server settings and configurations.- Endpoint:
/api/settings - Method:
GET - Response: