tabby-mcp-server 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -354,6 +354,13 @@ This project builds upon the work of [tabby-mcp-server](https://github.com/thuan
354
354
 
355
355
  ## 📝 Changelog
356
356
 
357
+ ### v1.1.1 (2026-01-21)
358
+
359
+ **Bug Fixes:**
360
+ - 🔧 Fixed Streamable HTTP connection leak - connections were not being cleaned up when clients disconnected
361
+ - Added `transport.onclose` handler to properly remove closed sessions from tracking
362
+ - Enhanced SSE stream close logging for better debugging
363
+
357
364
  ### v1.1.0 (2026-01-20)
358
365
 
359
366
  **Major Fixes:**
package/dist/index.js CHANGED
@@ -52531,7 +52531,7 @@ let McpService = class McpService {
52531
52531
  // Initialize MCP Server
52532
52532
  this.server = new mcp_js_1.McpServer({
52533
52533
  name: 'Tabby MCP',
52534
- version: '1.1.0'
52534
+ version: '1.1.1'
52535
52535
  });
52536
52536
  // Configure Express
52537
52537
  this.configureExpress();
@@ -52576,7 +52576,7 @@ let McpService = class McpService {
52576
52576
  res.status(200).json({
52577
52577
  status: 'ok',
52578
52578
  server: 'Tabby MCP',
52579
- version: '1.1.0',
52579
+ version: '1.1.1',
52580
52580
  transport: 'StreamableHTTP + SSE',
52581
52581
  uptime: process.uptime()
52582
52582
  });
@@ -52585,7 +52585,7 @@ let McpService = class McpService {
52585
52585
  this.app.get('/info', (_, res) => {
52586
52586
  res.status(200).json({
52587
52587
  name: 'Tabby MCP',
52588
- version: '1.1.0',
52588
+ version: '1.1.1',
52589
52589
  protocolVersion: '2025-03-26',
52590
52590
  transports: ['streamable-http', 'sse'],
52591
52591
  endpoints: {
@@ -52640,7 +52640,12 @@ let McpService = class McpService {
52640
52640
  res.write(': heartbeat\n\n');
52641
52641
  }
52642
52642
  }, 15000);
52643
- res.on('close', () => clearInterval(heartbeat));
52643
+ res.on('close', () => {
52644
+ clearInterval(heartbeat);
52645
+ this.logger.info(`Streamable HTTP: SSE stream closed for session: ${sessionId}`);
52646
+ // Note: Don't delete transport here - it may still be used for POST requests
52647
+ // The transport.onclose handler will clean up when fully disconnected
52648
+ });
52644
52649
  return;
52645
52650
  }
52646
52651
  // No session - return info about how to connect
@@ -52684,6 +52689,11 @@ let McpService = class McpService {
52684
52689
  this.logger.info(`Streamable HTTP: Session initialized: ${sid}`);
52685
52690
  }
52686
52691
  });
52692
+ // Register close handler to clean up when connection is closed
52693
+ transport.onclose = () => {
52694
+ this.logger.info(`Streamable HTTP: Transport closed (onclose): ${sessionId}`);
52695
+ delete this.streamableTransports[sessionId];
52696
+ };
52687
52697
  this.streamableTransports[sessionId] = transport;
52688
52698
  // Connect to MCP server
52689
52699
  await this.server.connect(transport);