I’m having trouble getting the MCP Server Trigger node to work properly — even with a minimal setup.
Steps to Reproduce:
Add an empty MCP Server Trigger node to a new workflow
Copy the Test URL
Click “Test Step” so the node starts listening
Run the following command: curl <Test URL>
Expected Behavior:
I expected the connection to remain open or stream messages (since it’s SSE-based).
Actual Result:
After a long pause, I received this output:
event: endpoint
data: /mcp-test/4590a747-4dbc-48cd-b651-60a7d9a0a83c/messages?sessionId=66e7c2f4-c99d-41d6-bb7a-0da3f8c5833f
curl: (18) transfer closed with outstanding read data remaining
What I’ve Tried:
Re-tested multiple times from scratch
Tried bypassing Nginx/SSL using curl http://127.0.0.1:5678/mcp-test/...
Still received the same curl: (18) error.
Question:
Has anyone successfully used the MCP Server Trigger with SSE?
Am I missing a configuration step to keep the connection open or respond properly?
Did you create the MCP SERVER and then create your workflow with the MCP Client?
Pasting the MCP SERVER test URL into your workflow with the MCP Client?
I ask this because regarding your question we have the following scenario:
The error curl: (18) transfer closed with outstanding read data remaining is a classic symptom that curl, by default, is not correctly waiting for the continuous streaming nature of Server-Sent Events (SSE) that the MCP Trigger uses
You receiving the event event: endpoint is a good sign: it shows that the initial connection is established and N8N sends the first SSE control message. The problem is that, shortly after, curl interprets that the transfer has finished (or the server has closed it), even though the SSE logic is to keep the connection open
Curl needs to be instructed not to wait for a traditional end-of-file and to process the data as it arrives. The -N or --no-buffer flag is made for exactly this.
In your terminal, run the curl command adding the -N flag.
bash curl -N Replace with the test URL copied from the MCP Trigger node.
After running this command (and with N8N in “Listening…” mode in the “Test Step”), the connection should remain open in your terminal, waiting for new events that N8N can send. You will not see curl exit immediately after the endpoint event. To stop it, you will need to use Ctrl+C.
There may be some clues in the N8N logs, so check the logs of your N8N Docker container or the N8N service right after trying to connect with curl -N. Look for errors or messages related to MCP Trigger or the connection termination.
I tested the MCP Server node by dropping it into a workflow and using curl, expecting that the “Test Step” feature would provide some indication (like other trigger nodes). However, there was no reaction.
Based on your suggestion, I ran a few more tests:
Test A: Using curl
Command:
curl -N <sse_url>
Result:
event: endpoint
data: /mcp-test/f5b28055-b062-463a-a02c-ee1b72d25a00/messages?sessionId=eb39a8a9-4a63-40ed-9dcb-7d3bab0f2bf9
curl: (18) transfer closed with outstanding read data remaining