mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 14:32:04 +00:00
Fixes critical bug where session restoration successfully restored InstanceContext but failed to reconnect the transport layer, causing all requests on restored sessions to hang indefinitely. Root Cause: The handleRequest() method's session restoration flow (lines 1119-1197) called createSession() which creates a NEW transport separate from the current HTTP request. This separate transport is not linked to the current req/res pair, so responses cannot be sent back through the active HTTP connection. Fix Applied: Replace createSession() call with inline transport creation that mirrors the initialize flow. Create StreamableHTTPServerTransport directly for the current HTTP req/res context and ensure transport is connected to server BEFORE handling request. This makes restored sessions work identically to fresh sessions. Impact: - Zero-downtime deployments now work correctly - Users can continue work after container restart without restarting MCP client - Session persistence is now fully functional for production use Technical Details: The StreamableHTTPServerTransport class from MCP SDK links a specific HTTP req/res pair to the MCP server. Creating transport in createSession() binds it to the wrong req/res (or no req/res at all). The initialize flow got this right, but restoration flow did not. Files Changed: - src/http-server-single-session.ts: Fixed session restoration (lines 1163-1244) - package.json, package.runtime.json, src/mcp-engine.ts: Version bump to 2.19.3 - CHANGELOG.md: Documented fix with technical details Testing: All 13 session persistence integration tests pass, verifying restoration works correctly. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
33 lines
737 B
JSON
33 lines
737 B
JSON
{
|
|
"name": "n8n-mcp-runtime",
|
|
"version": "2.19.3",
|
|
"description": "n8n MCP Server Runtime Dependencies Only",
|
|
"private": true,
|
|
"main": "dist/index.js",
|
|
"types": "dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"require": "./dist/index.js",
|
|
"import": "./dist/index.js"
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"@modelcontextprotocol/sdk": "^1.13.2",
|
|
"@supabase/supabase-js": "^2.57.4",
|
|
"express": "^5.1.0",
|
|
"express-rate-limit": "^7.1.5",
|
|
"dotenv": "^16.5.0",
|
|
"lru-cache": "^11.2.1",
|
|
"sql.js": "^1.13.0",
|
|
"uuid": "^10.0.0",
|
|
"axios": "^1.7.7"
|
|
},
|
|
"engines": {
|
|
"node": ">=16.0.0"
|
|
},
|
|
"optionalDependencies": {
|
|
"better-sqlite3": "^11.10.0"
|
|
}
|
|
}
|