-
-
Notifications
You must be signed in to change notification settings - Fork 32
feat(sidecar): Allow multiple stdio MCP servers to run #935
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
2871007 to
3792fb6
Compare
| "dependencies": { | ||
| "@hono/mcp": "^0.1.1", | ||
| "@hono/node-server": "^1.18.0", | ||
| "@hono/node-server": "^1.19.3", |
There was a problem hiding this comment.
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`, | ||
| }); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
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.
betegon
left a comment
There was a problem hiding this 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 }); |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
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>
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-mcpflag is passed.