Slack MCP node broken after recent n8n Cloud update — HTTP Streamable returns invalid_union JSON-RPC error

Slack MCP node broken after recent n8n Cloud update — HTTP Streamable returns invalid_union JSON-RPC error

Describe the problem/error/question

My Slack MCP node stopped working overnight with no changes made on my end. It had been working reliably for over a month.

What is the error message (if any)?

{ “code”: “invalid_union”, “errors”: […], “path”: , “message”: “Invalid input” }

The error includes "Unrecognized keys: \"ok\", \"error\"" — meaning the Slack MCP server is returning a Slack API-format response instead of JSON-RPC 2.0.

Node config:

  • Endpoint: https://mcp.slack.com/mcp

  • Server Transport: HTTP Streamable

  • Authentication: Bearer Auth (xoxp token)

What I’ve ruled out:

  • Token is valid — a direct curl test returns a clean JSON-RPC 2.0 tools/list response

  • Tried SSE as a workaround and SSE transport to https://mcp.slack.com/sse fails with “Could not connect to MCP server” (Slack only supports HTTP Streamable)

My theory: The recent n8n core update that added a GET handler for Streamable HTTP spec compliance (#28787) appears to have broken compatibility with Slack’s MCP server. The GET handshake n8n now initiates is being rejected by Slack’s server, which responds in Slack API format (ok/error) rather than JSON-RPC 2.0.

Environment:

  • n8n Cloud (pendoio.app.n8n.cloud)

  • Slack MCP node as a tool inside an AI Agent node

Has anyone else hit this? Is there a workaround while a patch is in progress?

hi @Camille_Eyman Welcome to the community!

I found only this case from 2025 regarding the issue MCP client tool uses SSE while http streamable is selected · Issue #18938 · n8n-io/n8n · GitHub
from what I can see in your case, Slack is bringing something different from JSON, which causes an error.
I would avoid the Slack MCP approach and use the Slack node instead or call the Slack API via HTTP request

The root cause is a mismatch between what Slack’s MCP server returns and what n8n’s MCP client expects. Slack’s mcp.slack.com/mcp endpoint uses its own response envelope ({"ok": true, ...}) for some calls instead of pure JSON-RPC 2.0 — n8n’s MCP client strictly validates JSON-RPC 2.0 format and rejects anything with unrecognized keys like ok or error.

This is a Slack-side implementation quirk, not a pure n8n bug, but n8n’s stricter validation after the update surfaces it.

For now the practical workarounds are:

  • Use the native Slack node in n8n (covers most common operations)
  • For operations the Slack node doesn’t cover, use an HTTP Request node calling the Slack Web API directly (https://slack.com/api/METHOD) with your bot token

If you need MCP specifically for an AI agent, you can report this as a bug on the n8n GitHub so they can add tolerance for non-standard JSON-RPC envelopes from Slack’s MCP implementation.