If I connect 2 mcp servers with the same tool_names like this:
{
"mcp_servers":
{
"ben-github": {
"url": "http://host.docker.internal:8001/sse"
},
"misha-github": {
"url": "http://host.docker.internal:8002/sse"
}
}
}
For example using 2 GitHub mcp server - one per organization.
curl -X 'GET' \
'http://localhost:8000/mcp/servers/ben-github/tools' \
-H 'accept: application/json'
Response:
{
"_meta": null,
"nextCursor": null,
"tools": [
{
"name": "get_me",
"description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"description": "Optional: reason the session was created",
"type": "string"
}
}
}
}
]
}
curl -X 'GET' \
'http://localhost:8000/mcp/servers/misha-github/tools' \
-H 'accept: application/json'
Response:
{
"_meta": null,
"nextCursor": null,
"tools": [
{
"name": "get_me",
"description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"description": "Optional: reason the session was created",
"type": "string"
}
}
}
}
]
}
Or using the unified api:
curl -X 'GET' \
'http://localhost:8000/mcp/tools' \
-H 'accept: application/json'
Response:
{
"ben-github": {
"_meta": null,
"nextCursor": null,
"tools": [
{
"name": "get_me",
"description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"description": "Optional: reason the session was created",
"type": "string"
}
}
}
}
]
},
"misha-github": {
"_meta": null,
"nextCursor": null,
"tools": [
{
"name": "get_me",
"description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...",
"inputSchema": {
"type": "object",
"properties": {
"reason": {
"description": "Optional: reason the session was created",
"type": "string"
}
}
}
}
]
}
}
Then I try to actually use the tools, and I cannot tell the service what server I want to run with:
curl -X 'POST' \
'http://localhost:8000/mcp/tools/get_me/call' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}'
It only uses the 2nd mcp server...
If I connect 2
mcpservers with the sametool_names like this:{ "mcp_servers": { "ben-github": { "url": "http://host.docker.internal:8001/sse" }, "misha-github": { "url": "http://host.docker.internal:8002/sse" } } }For example using 2
GitHub mcpserver - one per organization.Response:
{ "_meta": null, "nextCursor": null, "tools": [ { "name": "get_me", "description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...", "inputSchema": { "type": "object", "properties": { "reason": { "description": "Optional: reason the session was created", "type": "string" } } } } ] }Response:
{ "_meta": null, "nextCursor": null, "tools": [ { "name": "get_me", "description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...", "inputSchema": { "type": "object", "properties": { "reason": { "description": "Optional: reason the session was created", "type": "string" } } } } ] }Or using the unified
api:Response:
{ "ben-github": { "_meta": null, "nextCursor": null, "tools": [ { "name": "get_me", "description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...", "inputSchema": { "type": "object", "properties": { "reason": { "description": "Optional: reason the session was created", "type": "string" } } } } ] }, "misha-github": { "_meta": null, "nextCursor": null, "tools": [ { "name": "get_me", "description": "Get details of the authenticated GitHub user. Use this when a request include \"me\", \"my\"...", "inputSchema": { "type": "object", "properties": { "reason": { "description": "Optional: reason the session was created", "type": "string" } } } } ] } }Then I try to actually use the tools, and I cannot tell the service what server I want to run with:
It only uses the 2nd
mcpserver...