I’m integrating a custom MCP server with OpenAI’s Realtime API via WebSocket. The server successfully responds to tools/list with 10 tools, but the Realtime API reports 0 tools received.
The MCP server works perfectly in:
Playground (responds to tool queries correctly)
MCP Inspector (all 10 tools visible)
Realtime API WebSocket (receives 0 tools)
Setup: - Server: https://hmo-ai-assist-dev-mcp-api.bitcotapps.com/sse
- Transport: SSE (Server-Sent Events)
- Protocol: MCP with protocol version 2025-06-18
- Framework: FastMCP (Python)
Server Logs (successful response):
2025-11-30 03:11:09 - Processing request of type ListToolsRequest 2025-11-30 03:11:09 - Response sent 2025-11-30 03:11:09 - Sending message via SSE: { "jsonrpc":"2.0", "id":1, "result":{ "tools":\[ {"name":"fetch_user_id_details",...}, {"name":"fetch_patient_appointments",...}, {"name":"fetch_practitioner_appointments",...}, {"name":"fetch_patient_symptoms",...}, {"name":"fetch_patient_medical_history",...}, {"name":"email_user",...}, {"name":"generate_health_summary",...}, {"name":"generate_insurance_details_response",...}, {"name":"send_referral",...}, {"name":"fetch_practitioners",...} \] } }
Client Logs (Realtime API WebSocket):
mcp_list_tools.in_progress
Fetching tools from MCP server…
mcp_list_tools.completed
Success: 0 tools found
Session Configuration:
{
"type": "session.update",
"session": {
"tools": [{
"type": "mcp",
"server_url": "https://hmo-ai-assist-dev-mcp-api.bitcotapps.com/sse",
"server_label": "custom_mcp_server",
"require_approval": "never"
}]
}
}
Server Response Capabilities:
{
"protocolVersion": "2025-06-18",
"capabilities": {
"experimental": {},
"prompts": {"listChanged": false},
"resources": {"subscribe": false, "listChanged": false},
"tools": {"listChanged": false}
},
"serverInfo": {
"name": "admin-tools-mcp-server",
"version": "1.21.1"
}
}
Question:
Why does the Realtime API WebSocket connection receive 0 tools when the server clearly sends 10? Is there a protocol version incompatibility between Realtime API and MCP SSE transport? Do I need different capability flags for Realtime API vs Playground/Responses API?
Any insights would be appreciated!