Hi exports,
I just want to confirm openai’s implementation to deal with different mcp server_label but has same tool_name. From my experiments, it seems it will only trigger the first tool in the first defined mcp server. The tool with the same name in the second defined mcp server will never be triggered. Appreciate it if it can be confirmed. But if that’s the case, customer should expect the tool from user’s second mcp server with same name won’t be triggered. Will it be considered as bug?
my example payload:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-5-nano",
"tools": [
{
"type": "mcp",
"server_label": "deepwiki_1",
"server_url": "https://mcp.deepwiki.com/sse",
"require_approval": "never",
"allowed_tools": ["ask_question"]
},
{
"type": "mcp",
"server_label": "deepwiki_2",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": "never",
"allowed_tools": ["ask_question"]
}
],
"input": "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support"
}'
and example response:
{
"id": "resp_044a0f291787fa6b00691f8e7210888193bcedd896b691b316",
"object": "response",
"created_at": 1763675762,
"status": "completed",
"background": false,
"billing": {
"payer": "developer"
},
"error": null,
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"max_tool_calls": null,
"model": "gpt-5-nano-2025-08-07",
"output": [
{
"id": "mcpl_044a0f291787fa6b00691f8e722798819382d4727eca6c04ee",
"type": "mcp_list_tools",
"server_label": "deepwiki_1",
"tools": [
{
"annotations": {
"read_only": false
},
"description": "Ask any question about a GitHub repository",
"input_schema": {
"type": "object",
"properties": {
"repoName": {
"type": "string",
"description": "GitHub repository: owner/repo (e.g. \"facebook/react\")"
},
"question": {
"type": "string",
"description": "The question to ask about the repository"
}
},
"required": [
"repoName",
"question"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
},
"name": "ask_question"
}
]
},
{
"id": "mcpl_044a0f291787fa6b00691f8e7227e8819384786fd36026a780",
"type": "mcp_list_tools",
"server_label": "deepwiki_2",
"tools": [
{
"annotations": {
"read_only": false
},
"description": "Ask any question about a GitHub repository",
"input_schema": {
"type": "object",
"properties": {
"repoName": {
"type": "string",
"description": "GitHub repository: owner/repo (e.g. \"facebook/react\")"
},
"question": {
"type": "string",
"description": "The question to ask about the repository"
}
},
"required": [
"repoName",
"question"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
},
"name": "ask_question"
}
]
},
{
"id": "rs_044a0f291787fa6b00691f8e744ca88193a8f75537d9b9076a",
"type": "reasoning",
"summary": []
},
{
"id": "mcp_044a0f291787fa6b00691f8e78dd908193bb1648c001a0d5b3",
"type": "mcp_call",
"status": "completed",
"approval_request_id": null,
"arguments": "{\"repoName\":\"modelcontextprotocol/modelcontextprotocol\",\"question\":\"In the 2025-03-26 version of the MCP spec, what transport protocols does the specification support?\"}",
"error": null,
"name": "ask_question",
"output": "The 2025-03-26 version of the Model Context Protocol (MCP) specification supports two primary transport mechanisms: Stdio transport and HTTP-based transports, which include Streamable HTTP and Server-Sent Events (SSE) .\n\n## Supported Transport Protocols\n\n### Stdio Transport\nThe Stdio transport uses standard input/output streams for direct process communication . This is typically used for local processes on the same machine, offering optimal performance without network overhead . For shutdown, the client closes the input stream to the server process and waits for it to exit, potentially sending `SIGTERM` or `SIGKILL` if necessary .\n\n### HTTP-based Transports\nThe specification also supports HTTP-based transports . These enable remote server communication and support standard HTTP authentication methods, including OAuth 2.1 . Shutdown for HTTP transports is indicated by closing the associated HTTP connection(s) .\n\nSpecifically, the HTTP-based transports include:\n* **Streamable HTTP**: This transport uses HTTP POST for client-to-server messages and can include Server-Sent Events for streaming capabilities .\n* **Server-Sent Events (SSE)**: While not explicitly detailed as a separate top-level transport in the `architecture.mdx` for the 2025-03-26 version, the \"Multi-Language SDK Overview\" wiki page indicates SSE as a supported transport for various SDKs, including Java, TypeScript, and Python . The Java SDK, for instance, provides `WebFluxSseServerTransportProvider` and `WebMvcSseServerTransportProvider` for SSE .\n\n## Authorization\nFor HTTP-based transports, authorization is optional but, when supported, should conform to the OAuth 2.1 IETF DRAFT . Stdio transport implementations should not follow this specification for authorization and instead retrieve credentials from the environment .\n\n## Notes\nThe prompt specifically asked about the 2025-03-26 version of the MCP specification. The information provided is directly from the `docs/specification/2025-03-26/` directory and the \"Multi-Language SDK Overview\" wiki page, which details transport implementations across different SDKs. The `docs/docs.json` file confirms the existence of the `specification/2025-03-26/basic/transports` page, which would contain the definitive details on transports for that version . While the content of this specific transports page was not directly provided, the `docs/docs/learn/architecture.mdx` file and the wiki page offer a high-level overview consistent with the specification's general approach to transports.\n\nWiki pages you might want to explore:\n- [Overview (modelcontextprotocol/modelcontextprotocol)](/wiki/modelcontextprotocol/modelcontextprotocol#1)\n- [Multi-Language SDK Overview (modelcontextprotocol/modelcontextprotocol)](/wiki/modelcontextprotocol/modelcontextprotocol#6.2)\n\nView this search on DeepWiki: https://deepwiki.com/search/in-the-20250326-version-of-the_c72fb899-f707-4dc0-8fbc-5aac8466fd61\n",
"server_label": "deepwiki_1"
},
{
"id": "rs_044a0f291787fa6b00691f8e8395c88193942fd325199265d5",
"type": "reasoning",
"summary": []
},
{
"id": "msg_044a0f291787fa6b00691f8e8bc31c8193a4ce3a4d475a3672",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "The 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) supports two main transport families:\n\n- Stdio transport\n - Local, direct process communication via standard input/output.\n - No network overhead; shutdown by closing the input stream (may involve signaling if necessary).\n - Authorization is not specified for Stdio; credentials, if any, come from the environment.\n\n- HTTP-based transports\n - Streamable HTTP: HTTP POST for client-to-server messages, with possible streaming via Server-Sent Events (SSE).\n - Server-Sent Events (SSE): supported for streaming in various SDK contexts (not always explicit as a top-level transport in architecture, but indicated as supported in the SDK overview materials).\n - Authorization: optional for HTTP-based transports; if used, follows OAuth 2.1 approaches.\n\nIf you\u2019d like, I can pull the exact page references from the 2025-03-26 docs for precise quoting."
}
],
"role": "assistant"
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"prompt_cache_key": null,
"prompt_cache_retention": null,
"reasoning": {
"effort": "medium",
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"store": true,
"temperature": 1.0,
"text": {
"format": {
"type": "text"
},
"verbosity": "medium"
},
"tool_choice": "auto",
"tools": [
{
"type": "mcp",
"allowed_tools": [
"ask_question"
],
"headers": null,
"require_approval": "never",
"server_description": null,
"server_label": "deepwiki_1",
"server_url": "https://mcp.deepwiki.com/sse"
},
{
"type": "mcp",
"allowed_tools": [
"ask_question"
],
"headers": null,
"require_approval": "never",
"server_description": null,
"server_label": "deepwiki_2",
"server_url": "https://mcp.deepwiki.com/mcp"
}
],
"top_logprobs": 0,
"top_p": 1.0,
"truncation": "disabled",
"usage": {
"input_tokens": 1304,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 1287,
"output_tokens_details": {
"reasoning_tokens": 1024
},
"total_tokens": 2591
},
"user": null,
"metadata": {}
}