MCP Proxy Sidecar

A fork of the JetBrains MCP Server that adds WebSocket monitoring capabilities, created by @dortegau.
This project extends the original MCP server functionality with WebSocket support while maintaining compatibility with all features of the original implementation.
Architecture
graph LR
A[MCP Client<br>e.g. Claude<br>Desktop App]
B[MCP Proxy<br>Sidecar<br>with WebSocket]
C[JetBrains IDE]
D[WebSocket Clients<br>Monitoring]
A <--MCP requests/responses--> B
B <--IDE commands/responses--> C
B --WebSocket notifications<br>port 27042--> D
style A fill:#f5f5f5,stroke:#333,stroke-width:2px
style B fill:#e1f5fe,stroke:#333,stroke-width:2px
style C fill:#f5f5f5,stroke:#333,stroke-width:2px
style D fill:#f5f5f5,stroke:#333,stroke-width:2px
The diagram above illustrates the system architecture and data flow:
- MCP Clients (like Claude Desktop App) communicate with the Sidecar using MCP protocol
- The Sidecar translates and forwards commands to JetBrains IDE
- Responses from the IDE are sent back through the Sidecar
- All tool calls are broadcasted via WebSocket for monitoring purposes
Features
This fork adds WebSocket notifications that allow you to monitor all MCP tool calls in real-time. Each tool call is broadcasted through WebSocket with detailed information about the endpoint and arguments.
WebSocket Message Format
interface MCPNotification {
type: 'mcp-notification';
payload: {
endpoint: string; // Tool name that was called
content: any; // Call arguments
timestamp: string; // ISO timestamp
}
}
WebSocket Configuration
The WebSocket server runs on port 27042 by default. You can customize this port using the WS_PORT
environment variable in your configuration:
"env": {
"WS_PORT": "<custom port number>" // Example: "8080"
}
Usage
Install MCP Server Plugin
https://plugins.jetbrains.com/plugin/26071-mcp-server
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
. The full path on MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
, on Windows: %APPDATA%/Claude/claude_desktop_config.json
.
{
"mcpServers": {
"ide": {
"command": "npx",
"args": ["-y", "mcp-proxy-sidecar"],
"env": {
"WS_PORT": "27042" // Optional: customize WebSocket port
}
}
}
}
Configuration Options
The following environment variables can be configured in your claude_desktop_config.json
:
Variable |
Description |
Default |
WS_PORT |
Port for WebSocket server |
27042 |
IDE_PORT |
Specific port for IDE connection |
Auto-scans 63342-63352 |
HOST |
Host address for IDE connection |
127.0.0.1 |
LOG_ENABLED |
Enable debug logging |
false |
Example configuration with all options:
{
"mcpServers": {
"ide": {
"command": "npx",
"args": ["-y", "mcp-proxy-sidecar"],
"env": {
"WS_PORT": "27042",
"IDE_PORT": "63342",
"HOST": "127.0.0.1",
"LOG_ENABLED": "true"
}
}
}
}
Note: If IDE_PORT
is not specified, the sidecar will automatically scan ports 63342-63352 to find the IDE.
Development
Requirements
- Node.js 20.x
- pnpm (latest version)
Build
Install dependencies:
pnpm install --frozen-lockfile
Build the project:
pnpm build
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
)
- Commit your changes (
git commit -m 'Add some amazing feature'
)
- Push to the branch (
git push origin feature/amazing-feature
)
- Open a Pull Request
Publishing
This package is published to npm with:
- Provenance enabled for supply chain security
- Automated releases via GitHub Actions when creating a new release
- Public access on npm registry
To publish a new version:
- Update version in package.json
- Create and push a new tag matching the version
- Create a GitHub release from the tag
- The workflow will automatically build and publish to npm
Changelog
1.0.0
- Initial fork from @jetbrains/mcp-proxy
- Added WebSocket support for real-time tool call monitoring
- Renamed package for clarity
- Updated documentation and configuration examples
Credits
This is a fork of the JetBrains MCP Proxy Server. All credit for the original implementation goes to the JetBrains team.