Copilot Studio successfully connects to my MCP server and completes the OAuth flow and initialize handshake, but never calls `tools/list` to discover available tools. The Tools section in Copilot Studio shows "No tools available."
Environment
- Copilot Studio (Preview - https://copilotstudio.preview.microsoft.com)
- MCP Protocol Version: 2024-11-05
- MCP Server: AWS Lambda (Python) with OAuth 2.0 Dynamic Discovery
Steps to Reproduce
1. Create an MCP server that supports OAuth 2.0 with Dynamic Client Registration
2. Add MCP connector in Copilot Studio using "Dynamic discovery" authentication
3. Complete Google OAuth flow successfully
4. Observe that Tools section shows empty
Expected Behaviour
After `notifications/initialized`, Copilot Studio should call `tools/list` to discover available tools.
Actual Behaviour
Copilot Studio sends:
1. `initialize` (id: "1") → Server responds correctly
2. `notifications/initialized` → Server acknowledges
3. **Never sends `tools/list`**
Server Response Evidence
The initialize response looks correct:
{
"jsonrpc": "2.0",
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {"tools": {"listChanged": true}},
"serverInfo": {"name": "expert-mcp", "version": "1.0.0"}
},
"id": "1"
}
- OAuth flow completes without errors
- Connection shows green checkmark in Copilot Studio
- Same issue with listChanged: true and listChanged: false
/powervirtualagents/bots/.../modelcontextprotocol/listtools which returns {"tools": [], "resources": [], "errors": []}
This suggests Copilot Studio caches tool discovery but never populates it from the MCP server.
Any ideas on what is happening?

Report
All responses (
Answers (