Commit Graph

10 Commits

Author SHA1 Message Date
Cliff Hall
5f36973811 Merge pull request #1884 from cliffhall/everything-server-multiple-connection-support
Everything server multiple connection support
2025-05-29 10:41:51 -04:00
David Soria Parra
2dc1a34b75 update 2025-05-29 12:04:52 +01:00
cliffhall
145f893108 Allow multiple connections to the everything server.
For both sse and streamableHttp, a server instance needs to be created for each transport. Otherwise, when a new client connects and its new transport is connected to the single server, the previous transport is overwritten in the server instance and can no longer communicate.

* In sse.ts
  - remove global server, cleanup, and transport vars
  - add transports map
  - in sse GET handler,
    - check for sessionId, there shouldn't be one, so comment "Reconnecting?" and do nothing if present
    - if sessionId not present
      - create new server and transport instance
      - connect server to transport
      - add transport to transports map
      - in server.onclose, delete the transport from the transports map and call cleanup
  - in /message POST handler
    - get the sessionId from the request
    - get the transport from the map by sessionId
    - handle the message if the transport was found

* In streamableHttp.ts
  - remove the global server and cleanup vars
  - change transports var to Map
  - in /mcp POST handler
    - when creating a new session
      - create a server instance
      - in server.onclose, delete the transport from the transports map and call cleanup
  - remove the calls to cleanup and server.close in the SIGINT handler, because the transport is closed and its onclose handler closes the server.
2025-05-22 11:41:16 -04:00
cliffhall
3894d236c0 * In src/everything/sse.ts and streamableHttp.ts
- Replace console.log with console.error throughout
* In src/everything/sse.ts
  - remove the process.exit() in the server.onclose handler so reconnections are possible
2025-05-15 14:13:15 -04:00
cliffhall
e30f30868f Update server-everything to use the latest version of the SDK
* In sse.ts & streamableHttp.ts
  - change console.log to console.error
2025-05-06 10:27:49 -04:00
cliffhall
f93911607b Update server-everything to allow choosing the transport on the command line.
# Run the default (stdio) server
```npx @modelcontextprotocol/server-everything```

# Or specify stdio explicitly
```npx @modelcontextprotocol/server-everything stdio```

# Run the SSE server
```npx @modelcontextprotocol/server-everything sse```

# Run the streamable HTTP server
```npx @modelcontextprotocol/server-everything streamableHttp```

* In src/everything/index.ts
  - refactor/extracted contents to stdio.ts
  - replaced with code that
    - Gets the single argument from the commandline as scriptName
    - switches on scriptName
    - imports the appropriate server script or outputs usage options
  - scripts run on import

* In src/everything/stdio.ts
  - added console log "Starting default (STDIO) server..."

* In src/everything/sse.ts
  - added console log "Starting SSE server..."

* In src/everything/streamableHttp.ts
  - added console log "Starting Streamable HTTP server..."

* This fixes #1594
2025-05-05 13:09:38 -04:00
Shiv Deepak Muddada
e70bcd317b remove json middleware from everything streamable http server 2025-04-22 19:51:16 -07:00
Shiv Deepak Muddada
d1d79444f7 fix: passing body to handleRequest, and optionally adding a response id if it exists 2025-04-22 19:32:07 -07:00
Shiv Deepak Muddada
03e9a7be0d ref: cleanup 2025-04-22 19:32:03 -07:00
Shiv Deepak Muddada
07af15945d add streamableHttp server support for everything server 2025-04-22 19:27:00 -07:00