Skip to content

SSE stream disconnected: TypeError: terminated #1211

@whynixx

Description

@whynixx

I got an error "SSE stream disconnected: TypeError: terminated" every 5 minutes with the server connection on the cline or cursor, does anyone know why?
ts code:
`import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
import express from 'express';
import * as z from 'zod/v4';

const app = express();
app.use(express.json());

// Create the MCP server once (can be reused across requests)
const server = new McpServer({
name: 'example-server',
version: '1.0.0'
});

// Set up your tools, resources, and prompts
server.registerTool(
'echo',
{
title: 'Echo',
description: 'echo',
inputSchema: { name: z.string() },
},
async ({ name }) => {

  return { content: [{ type: 'text', text: `Hello ${name}` }] };
}

);

app.post('/mcp', async (req, res) => {
try {
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined,
enableJsonResponse: true
});

    res.on('close', () => {
        transport.close();
    });

    await server.connect(transport);
    await transport.handleRequest(req, res, req.body);
} catch (error) {
    console.error('Error handling MCP request:', error);
    if (!res.headersSent) {
        res.status(500).json({
            jsonrpc: '2.0',
            error: {
                code: -32603,
                message: 'Internal server error'
            },
            id: null
        });
    }
}

});

// Reusable handler for GET and DELETE requests
const handleSessionRequest = async (req: express.Request, res: express.Response) => {
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined,
enableJsonResponse: true
});
await transport.handleRequest(req, res);
};

// Handle GET requests for server-to-client notifications via SSE
app.get('/mcp', handleSessionRequest);

const port = parseInt(process.env.PORT || '3000');
app.listen(port, () => {
console.log(MCP Server running on http://localhost:${port}/mcp);
}).on('error', error => {
console.error('Server error:', error);
process.exit(1);
});
mcp setting:"demo": {
"disabled": false,
"timeout": 1800,
"type": "streamableHttp",
"url": "http://localhost:3000/mcp"
}`
cline version 3.38.3

Image

cursor version 1.4.3

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions