diff --git a/.changeset/gmail-mcp-http-listener-resilient.md b/.changeset/gmail-mcp-http-listener-resilient.md deleted file mode 100644 index 5e9beea..0000000 --- a/.changeset/gmail-mcp-http-listener-resilient.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@razroo/gmail-mcp": patch ---- - -Make the Streamable HTTP listener resilient to port conflicts. Previously, if `PORT` (default `3000`) was already bound — typically by a zombie `gmail-mcp` from a prior session, or a second instance running in another project — `app.listen(PORT)` threw `EADDRINUSE` and the whole process crashed, which killed the stdio MCP transport too even though stdio doesn't need the port. Now we attach an `error` handler to the HTTP server: on `EADDRINUSE` we log a warning and continue, so stdio MCP clients (Claude Desktop, opencode, etc.) keep working. Also added a `DISABLE_HTTP=true` env var for consumers who only use stdio and want to skip the HTTP listener entirely. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e1aa19..a6c80b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @razroo/gmail-mcp +## 1.8.1 + +### Patch Changes + +- 31cb523: Make the Streamable HTTP listener resilient to port conflicts. Previously, if `PORT` (default `3000`) was already bound — typically by a zombie `gmail-mcp` from a prior session, or a second instance running in another project — `app.listen(PORT)` threw `EADDRINUSE` and the whole process crashed, which killed the stdio MCP transport too even though stdio doesn't need the port. Now we attach an `error` handler to the HTTP server: on `EADDRINUSE` we log a warning and continue, so stdio MCP clients (Claude Desktop, opencode, etc.) keep working. Also added a `DISABLE_HTTP=true` env var for consumers who only use stdio and want to skip the HTTP listener entirely. + ## 1.8.0 ### Minor Changes diff --git a/package.json b/package.json index f02300c..e655a7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@razroo/gmail-mcp", - "version": "1.8.0", + "version": "1.8.1", "description": "Gmail MCP - Provides complete Gmail API access with file-based OAuth2 authentication", "type": "module", "bin": { diff --git a/src/index.ts b/src/index.ts index 4647227..8833b82 100644 --- a/src/index.ts +++ b/src/index.ts @@ -332,7 +332,7 @@ const constructRawMessage = async (gmail: gmail_v1.Gmail, params: NewMessage) => function createServer({ config }: { config?: Record }) { const serverInfo = { name: "Gmail-MCP", - version: "1.8.0", + version: "1.8.1", description: "Gmail MCP - Provides complete Gmail API access with file-based OAuth2 authentication" }