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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions