MCP Proxy Sidecar
by dortegau
MCP Proxy Sidecar is a fork of the JetBrains MCP Server that enhances it with WebSocket monitoring capabilities. It allows real-time monitoring of MCP tool calls, providing detailed information about endpoints and arguments.
Last updated: N/A
MCP Proxy Sidecar
npm version License Publish to NPM
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.
