Skip to content

Support for MCP v2025‑03‑26 & full notifications/cancelled capability #19

@Jens-dev

Description

@Jens-dev

📝 Description

We’re trying to connect AnythingLLM (latest version using MCP v2025‑03‑26) with the Laravel MCP server, but encountering two major roadblocks:

  1. Protocol version mismatch
    • Client initiates handshake with:
protocolVersion": "2025-03-26"

but the server only supports 2024-11-05.

Logs report: Client requested unsupported protocol version: 2025‑03‑26 {"supportedVersions":["2024‑11‑05"]}

•	Result:
•	Server rejects initialization.
•	AnythingLLM either loops back to older spec or fails altogether.
  1. notifications/cancelled not implemented
    • Config has:
'capabilities' => [
  'notifications' => [
    'initialized' => true,
    'cancelled'   => true,
    'initializedOk' => true,
  ],
  …
]

and server is restarted accordingly.

Still, log shows: MCP Processor caught McpServerException {"method":"notifications/cancelled","code":-32601,"message":"Method not found: MCP capability 'notifications' is not enabled on this server."}

•	Reason:
•	AnythingLLM receives a ping timeout and dispatches notifications/cancelled.
•	Server rejects it, causing client disconnection.

✅ Steps already taken
1. Successful MCP handshake up to initialize + notifications/initialized + resources/list via cURL.
2. Upgraded package to latest version v2.1.0 with Streamable HTTP.
3. Fully configured config/mcp.php for notifications.
4. Cleared config/routes caches and restarted server.
5. Observed persistent logs for protocol and “notifications” errors.

🚀 Expected behavior
• Server supports 2025‑03‑26 protocol version (and optionally 2024‑11‑05 for legacy clients).
• Fully implements notifications/cancelled, along with other MCP notification methods.
• Allows AnythingLLM handshake to complete, keeping SSE connection alive and avoiding client drop.

Happy to provide more logs, config files, or curl traces if needed. Thanks for your support! 😊

Log:

[2025-06-14 15:14:40] local.DEBUG: Received request {"method":"GET","path":"/mcp/sse"} 
[2025-06-14 15:14:40] local.INFO: New SSE connection {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15"} 
[2025-06-14 15:14:40] local.DEBUG: Sending SSE event {"event":"endpoint","frame":"event: endpoint
id: init-sse_12800888fd13a8728e0a8d93373ebf15
data: /mcp/message?clientId=sse_12800888fd13a8728e0a8d93373ebf15

"} 
[2025-06-14 15:14:40] local.INFO: Client connected {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15"} 
[2025-06-14 15:14:40] local.DEBUG: Received request {"method":"POST","path":"/mcp/message"} 
[2025-06-14 15:14:40] local.DEBUG: Received message {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"laravel-mcp\",\"version\":\"1.0.0\"}},\"jsonrpc\":\"2.0\",\"id\":0}"} 
[2025-06-14 15:14:40] local.WARNING: Client requested unsupported protocol version: 2025-03-26 {"supportedVersions":["2024-11-05"]} 
[2025-06-14 15:14:40] local.DEBUG: Sending SSE event {"event":"message","frame":"event: message
data: {\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"serverInfo\":{\"name\":\"Laravel MCP\",\"version\":\"1.0.0\"},\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{\"listChanged\":true},\"resources\":{\"subscribe\":true,\"listChanged\":true},\"prompts\":{\"listChanged\":true},\"logging\":{}}}}

"} 
[2025-06-14 15:14:40] local.DEBUG: Sent response {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"serverInfo\":{\"name\":\"Laravel MCP\",\"version\":\"1.0.0\"},\"protocolVersion\":\"2024-11-05\",\"capabilities\":{\"tools\":{\"listChanged\":true},\"resources\":{\"subscribe\":true,\"listChanged\":true},\"prompts\":{\"listChanged\":true},\"logging\":{}}}}
"} 
[2025-06-14 15:14:40] local.DEBUG: Received request {"method":"POST","path":"/mcp/message"} 
[2025-06-14 15:14:40] local.DEBUG: Received message {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"method\":\"notifications/initialized\",\"jsonrpc\":\"2.0\"}"} 
[2025-06-14 15:14:40] local.DEBUG: Received request {"method":"POST","path":"/mcp/message"} 
[2025-06-14 15:14:40] local.DEBUG: Received message {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"method\":\"ping\",\"jsonrpc\":\"2.0\",\"id\":1}"} 
[2025-06-14 15:14:40] local.DEBUG: Sending SSE event {"event":"message","frame":"event: message
data: {\"jsonrpc\":\"2.0\",\"id\":1,\"result\":[]}

"} 
[2025-06-14 15:14:40] local.DEBUG: Sent response {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":[]}
"} 
[2025-06-14 15:15:40] local.DEBUG: Received request {"method":"POST","path":"/mcp/message"} 
[2025-06-14 15:15:40] local.DEBUG: Received message {"clientId":"sse_12800888fd13a8728e0a8d93373ebf15","frame":"{\"jsonrpc\":\"2.0\",\"method\":\"notifications/cancelled\",\"params\":{\"requestId\":1,\"reason\":\"McpError: MCP error -32001: Request timed out\"}}"} 
[2025-06-14 15:15:40] local.DEBUG: MCP Processor caught McpServerException {"method":"notifications/cancelled","code":-32601,"message":"Method not found: MCP capability 'notifications' is not enabled on this server.","data":null} 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions