Skip to content

Conversation

@BYK
Copy link
Member

@BYK BYK commented Sep 18, 2025

When we detect Spotlight running on the port we try to connect, instead of quitting we just open a STDIO proxy to that MCP server when --stdio-mcp flag is passed.

@vercel
Copy link

vercel bot commented Sep 18, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
spotlightjs Ready Ready Preview Comment Sep 18, 2025 11:04pm

When we detect Spotlight running on the port we try to connect, instead of quitting we just open a STDIO proxy to that MCP server when `--stdio-mcp` flag is passed.
"dependencies": {
"@hono/mcp": "^0.1.1",
"@hono/node-server": "^1.18.0",
"@hono/node-server": "^1.19.3",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This upgrade is crucial as we need a bugfix introduced in 1.18.2: honojs/node-server#271

serverType: ProxyServerType.HTTPStream,
url: `http://localhost:${sidecarPort}/mcp`,
});
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Unhandled Error in Network Operation

The await startStdioServer() call inside the isSidecarRunning().then() block lacks error handling. If this network operation fails, it results in an unhandled promise rejection, which may crash the process or leave it in an inconsistent state.

Fix in Cursor Fix in Web

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will add this in a follow up.

Copy link
Member

@betegon betegon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought this was going to be kind of a big PR, what a surprise. This is super easy to maintain :)

let's merge this thing!

});
}
} else if (!serverInstance) {
serverInstance = startServer({ port: sidecarPort, basePath, filesToServe, incomingPayload, stdioMCP });
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

somewhat related: how's that we didn't need async for this but it's needed for startStdioServer?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It kind of did and we cheated to not make a breaking change. This actually is a great point, I'll change the public API to make it async.

@BYK BYK merged commit 48c6753 into main Sep 19, 2025
18 checks passed
@BYK BYK deleted the byk/feat/multi-stdio-mcp branch September 19, 2025 12:08
betegon pushed a commit that referenced this pull request Sep 20, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and publish to npm
yourself or [setup this action to publish
automatically](https://github.com/changesets/action#with-publishing). If
you're not ready to do a release yet, that's fine, whenever you add more
changesets to main, this PR will be updated.


# Releases
## @spotlightjs/[email protected]

### Major Changes

- Remove integrations architecture in favour of fixed telemetry features
and remove the ability to use the package as an overlay on top of apps.
([#917](#917))

- Remove all vite-plugins as they are deprecated
([#937](#937))

### Minor Changes

- - Implement URL-based routing in overlay with BrowserRouter for web
apps and HashRouter for Electron
([#921](#921))
- Remove sentry-integration.ts and simplify telemetry implementation
- Moved telemetry logic from App.tsx to dedicated Telemetry component

### Patch Changes

- Remove local resource handling and vite plugin as overlay feature is
not supported ([#924](#924))

- Refactor to remove object destructuring from hooks returning only one
value ([#930](#930))

## @spotlightjs/[email protected]

### Major Changes

- Make `setupSidecar` async as it should be
([#936](#936))

- Remove all vite-plugins as they are deprecated
([#937](#937))

### Minor Changes

- Add support for multiple stdio MCP servers to run, as a proxy for the
existing main sidecar
([#935](#935))

- Adds stdio based MCP server via a `--stdio-mcp` CLI argument. Also
removes the context-based message buffers to be able to achieve this as
there's no context-id for the stdio transport. This feature was not used
anyway. ([#933](#933))

Moves all log messages to stderr as they should have been to avoid
clobbering the MCP stdio transport.

### Patch Changes

- - To check all items in an envelope for errors.
([#880](#880))

- restructured the sidecar server and minor improvements
([#918](#918))

- To add a soft reset buffer when its cleared.
([#895](#895))

## @spotlightjs/[email protected]

### Major Changes

- Make `setupSidecar` async as it should be
([#936](#936))

- Remove all vite-plugins as they are deprecated
([#937](#937))

### Minor Changes

- Add support for multiple stdio MCP servers to run, as a proxy for the
existing main sidecar
([#935](#935))

- Adds stdio based MCP server via a `--stdio-mcp` CLI argument. Also
removes the context-based message buffers to be able to achieve this as
there's no context-id for the stdio transport. This feature was not used
anyway. ([#933](#933))

Moves all log messages to stderr as they should have been to avoid
clobbering the MCP stdio transport.

### Patch Changes

- Remove local resource handling and vite plugin as overlay feature is
not supported ([#924](#924))

- Updated dependencies
\[[`2fe54bb`](2fe54bb),
[`20783d0`](20783d0),
[`48c6753`](48c6753),
[`65f4e9f`](65f4e9f),
[`bb85759`](bb85759),
[`1f2096e`](1f2096e),
[`cec5457`](cec5457),
[`5670dd4`](5670dd4),
[`605b1e1`](605b1e1),
[`69bfd17`](69bfd17),
[`3d56a55`](3d56a55)]:
    -   @spotlightjs/[email protected]
    -   @spotlightjs/[email protected]

## @spotlightjs/[email protected]

### Minor Changes

- Run electron app in background and add a menu tray
([#929](#929))

- Make app window draggable
([#931](#931))

- Added Auto Updater
([#922](#922))

### Patch Changes

- - Implement URL-based routing in overlay with BrowserRouter for web
apps and HashRouter for Electron
([#921](#921))
- Remove sentry-integration.ts and simplify telemetry implementation
- Moved telemetry logic from App.tsx to dedicated Telemetry component
- Updated dependencies
\[[`2fe54bb`](2fe54bb),
[`20783d0`](20783d0),
[`48c6753`](48c6753),
[`65f4e9f`](65f4e9f),
[`bb85759`](bb85759),
[`1f2096e`](1f2096e),
[`cec5457`](cec5457),
[`5670dd4`](5670dd4),
[`605b1e1`](605b1e1),
[`69bfd17`](69bfd17),
[`3d56a55`](3d56a55)]:
    -   @spotlightjs/[email protected]
    -   @spotlightjs/[email protected]

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants