Skip to content

Blog

Gasoline v5.6.0 Released

Gasoline v5.6.0 focuses on server-side reliability with persistence guarantees and comprehensive architecture invariant tests.

  • Persistent Message Queue — Guarantees no messages lost during server restarts
  • Transaction-Safe State — Atomic operations for observer state updates
  • Architecture Validation — New test suite validating core invariants
  • Improved graceful shutdown of long-running observations
  • Better handling of concurrent client connections
  • Enhanced observability into server health and performance
  • Stricter validation of MCP protocol compliance
  • 50+ new architecture invariant tests
  • Stress testing with high message volume
  • Connection resilience testing
Terminal window
npm install -g gasoline-mcp@5.6.0

v5.6.0 Release

Gasoline v5.7.5 Released

This release makes Gasoline MCP feel instant. The new fast-start mode responds to MCP clients in ~130ms while the daemon boots in the background.

Previously, MCP clients had to wait for the full daemon to boot before getting any response. Now, initialize and tools/list respond immediately from the bridge process:

Before: Client → wait 2-4s for daemon → get response
After: Client → get response in ~130ms → daemon boots in background

This means your AI coding agent gets tool definitions instantly and can start planning while the server finishes starting up. If you call a tool before the daemon is ready, you get a helpful retry message instead of a hang.

The --doctor command now checks if port 7890 is available:

Terminal window
npx gasoline-mcp --doctor
# Now shows:
# ✅ Port 7890
# Default port is available
#
# Or if blocked:
# ⚠️ Port 7890
# Port 7890 is in use (PID: 12345)
# Suggestion: Use --port 7891 or kill the process using the port

When the daemon can’t start because the port is blocked, you now get actionable suggestions:

Server failed to start: port 7890 already in use. Port may be in use. Try: npx gasoline-mcp --port 7891

Daemon startup timeout reduced from 10s to 4s. If something is wrong, you’ll know in 4 seconds instead of 10.

Terminal window
npx gasoline-mcp@5.7.5

See the complete list of changes on GitHub.

Gasoline v5.7.0 Released

This release focuses on reliability and developer experience improvements, with a new graceful shutdown system and improved extension connectivity.

Stop running servers cleanly with the new --stop flag:

Terminal window
gasoline-mcp --stop # Stop server on default port (7890)
gasoline-mcp --stop --port 8080 # Stop server on specific port

The shutdown uses a hybrid approach for maximum reliability:

  1. PID file (fast) - Reads process ID from ~/.gasoline-{port}.pid
  2. HTTP endpoint (graceful) - Sends shutdown request to /shutdown
  3. lsof fallback - Finds process by port if other methods fail

The extension now uses a server-sent events based /sync endpoint instead of polling. This means:

  • Lower CPU usage when idle
  • Faster response to server queries
  • More reliable connection state tracking

The --persist flag has been removed. The server now always runs as a background daemon that persists until explicitly stopped with --stop.

  • New regression test framework in tests/regression/
  • Comprehensive UAT test suite with shutdown tests
  • Major documentation cleanup (40+ obsolete files removed)
  • Better error handling for multi-client scenarios
Terminal window
npx gasoline-mcp@5.7.0

Or if you’ve installed globally:

Terminal window
npm install -g gasoline-mcp@5.7.0

See the complete list of changes on GitHub.

Gasoline v5.5.0: Rock-Solid MCP Protocol Compliance

Gasoline v5.5.0 is a stability release focused on MCP protocol compliance. If you experienced “Unexpected end of JSON input” errors or connection issues with Claude Desktop or Cursor, this release fixes them all.

The Problem: Intermittent Connection Failures

Section titled “The Problem: Intermittent Connection Failures”

Users reported sporadic errors when connecting to Gasoline via Claude Desktop:

[error] Unexpected end of JSON input

The MCP server appeared to be working — valid JSON responses were logged — but immediately after each response, a parse error occurred.

Our investigation uncovered three distinct MCP protocol violations:

Go’s json.Encoder.Encode() adds a trailing newline to JSON output. Our stdio bridge then called fmt.Println(), adding a second newline. The empty line between messages was parsed as an empty JSON message, causing the parse error.

Fix: Changed fmt.Println(string(body)) to fmt.Print(string(body)) in the bridge — the HTTP response already includes the trailing newline.

JSON-RPC 2.0 notifications (requests without an id field) must not receive responses. We were responding to notifications/initialized with an empty response, violating the spec.

Fix: Notifications now return nil from the handler and receive no response. HTTP transport returns 204 No Content.

The stdio bridge could exit before the final response was written to stdout, truncating the last message.

Fix: Implemented an exit gate pattern — the process waits for any pending responses to flush before exiting.

v5.5.0 adds 10 new Go tests that verify MCP protocol compliance:

  • TestMCPProtocol_ResponseNewlines — exactly one trailing newline per response
  • TestMCPProtocol_NotificationNoResponse — notifications receive no response
  • TestMCPProtocol_JSONRPCStructure — valid JSON-RPC 2.0 structure
  • TestMCPProtocol_IDNeverNull — response ID is never null (Cursor requirement)
  • TestMCPProtocol_ErrorCodes — standard JSON-RPC error codes
  • TestMCPProtocol_InitializeResponse — MCP initialize handshake
  • TestMCPProtocol_ToolsListStructure — tools/list response format
  • TestMCPProtocol_HandlerUnit — handler method dispatch
  • TestMCPProtocol_HTTPHandler — HTTP transport compliance
  • TestMCPProtocol_BridgeCodeVerification — static analysis of bridge code

These tests are designed to be unalterable — they verify the MCP spec, not implementation details. Any future change that breaks MCP compliance will fail these tests.

The GitHub API version check now fails silently. Previously, rate limit errors (403) would log warnings even though version checking is non-critical.

All npm packages prior to v5.5.0 have been deprecated. Users installing old versions will see a warning directing them to upgrade.

Terminal window
npx gasoline-mcp@5.5.0

Or update your MCP configuration:

{
"mcpServers": {
"gasoline": {
"type": "stdio",
"command": "npx",
"args": ["-y", "gasoline-mcp@5.5.0", "--port", "7890", "--persist"]
}
}
}

GitHub Release

Gasoline v5.1.0: Single-Tab Tracking Isolation

Gasoline v5.1.0 is a security-focused release that fixes a critical privacy vulnerability in how the extension captures browser telemetry. If you’re running any previous version, upgrade immediately.

Prior to v5.1.0, the extension captured console logs, network requests, and other telemetry from every open browser tab — regardless of whether tracking was enabled for that tab. If you had 40 tabs open and clicked “Track This Page” on one of them, data from all 40 tabs was forwarded to the MCP server.

This was a privacy vulnerability. Tabs containing banking sites, personal email, or other sensitive sessions would leak telemetry into the AI assistant’s context.

v5.1.0 introduces tab-scoped filtering in the content script. The extension now:

  1. Only captures from the explicitly tracked tab. All other tabs are completely isolated.
  2. Attaches a tabId to every forwarded message for data attribution.
  3. Blocks Chrome internal pages (chrome://, about://, devtools://) from being tracked.
  4. Clears tracking state on browser restart — no stale tab references.

The button has been renamed from “Track This Page” to “Track This Tab” to reflect the actual behavior.

When no tab is tracked, the MCP server now prepends a warning to all observe() responses:

WARNING: No tab is being tracked. Data capture is disabled. Ask the user to click ‘Track This Tab’ in the Gasoline extension popup.

This prevents the AI assistant from silently operating on stale or missing data.

API responses from network_waterfall and network_bodies now include:

  • Unit suffixes: durationMs, transferSizeBytes instead of ambiguous duration, size
  • compressionRatio: Computed field showing transfer efficiency
  • capturedAt timestamps on all entries
  • limitations array explaining what the data can and can’t tell you

These changes help LLMs interpret network data without guessing units.

Gasoline is now available on PyPI alongside NPM:

Terminal window
pip install gasoline-mcp
gasoline-mcp

Same binary, same behavior. Platform-specific wheels for macOS (arm64, x64), Linux (arm64, x64), and Windows (x64).

Five issues are deferred to v5.2. See KNOWN-ISSUES.md for details:

  • query_dom not yet implemented
  • Accessibility audit runtime error
  • network_bodies returns no data in some cases
  • Extension timeouts after several operations
  • observe() responses missing tabId metadata
Terminal window
npx gasoline-mcp@5.1.0

Or update your .mcp.json:

{
"mcpServers": {
"gasoline": {
"type": "stdio",
"command": "npx",
"args": ["-y", "gasoline-mcp@5.1.0", "--port", "7890", "--persist"]
}
}
}

GitHub Release · CHANGELOG.md