Prerequisites
- Two or more MCP server instances that verified successfully. An instance whose URL cannot be resolved is skipped from the bundle silently, so verify first with Add a hosted MCP server.
- An API key for the workspace.
Steps
Create the client
mcp_endpoint_url is the aggregate. Note it is served at /client-mcp/{client_id}
— outside /v1, because it is a mounted MCP application rather than a REST route.Attach instances, with a namespace each
namespace_prefix decides the tool prefix: a search tool on
the instance namespaced gh is exposed as gh__search. Two members that both
expose search stay distinguishable only if their namespaces differ, so set the
prefix deliberately rather than leaving it null.Attach skills, if the client should have them
activate_skill tool
whose enum lists them, alongside the namespaced member tools.Point the harness at the endpoint
Give the harness
mcp_endpoint_url and a token. Access is checked on every
request: the token’s subject must be the client itself, or a principal holding
the use relation on that client. See Issue MCP access
tokens.Verify
List the tools through the aggregate. This is the same call the harness makes.Troubleshooting
tools/list returns an empty array
tools/list returns an empty array
Either the client id in the path does not exist, or no member resolved. A
member whose URL cannot be resolved is skipped and logged rather than
failing the whole bundle, so one broken instance looks like a missing tool
rather than an error. Check each member’s
verification.status
individually.Tool names collide
Tool names collide
Two members exposing the same tool name with the same or null namespace
produce ambiguous entries. Set a distinct
namespace_prefix on each member.A tool that exists on the server is missing from the aggregate
A tool that exists on the server is missing from the aggregate
Member tools come from each instance’s stored snapshot, discovered at its
last verification. Run
POST /v1/mcp-server- instances/{instance_id}/discover-tools on the member,
then list again.A member is still exposed after you removed it elsewhere
A member is still exposed after you removed it elsewhere
Members are only ever the client’s own attachments. Remove one with
DELETE /v1/clients/{client_id}/mcp-instances/{mcp_instance_id} .The endpoint 404s
The endpoint 404s
/client-mcp/{client_id} is a mounted application, not a /v1 route, and
it is absent from the OpenAPI spec for that reason. Use the
mcp_endpoint_url from the client response rather than assembling the path
from the API base by hand.Related
Add a hosted MCP server
Run an MCP server as a managed workload
Issue MCP access tokens
Create, scope, rotate, and revoke the API keys that authenticate calls to
MCP endpoints and the
MCP
What the Model Context Protocol gives an agent, and how AgentArea hosts MCP
servers