[GH-ISSUE #571] MCP for Windows #566

Open
opened 2026-03-03 19:51:21 +03:00 by kerem · 1 comment
Owner

Originally created by @NghiaTranUIT on GitHub (Jan 6, 2026).
Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/571

Originally assigned to: @kics223w1 on GitHub.

Description

https://github.com/ProxymanApp/Proxyman/issues/2433#issuecomment-3707887621

Acceptance Criteria

  • Implement the mcp-server command line, separate from the main App
Image
  • Implement the UI. It's a PRO feature.
    Image

How the MCP works and why I need an mcp-server binary

  1. Add the MCP config to Claude Code
{
  "mcpServers": {
    "proxyman": {
      "command": "/Applications/Proxyman.app/Contents/MacOS/mcp-server",
      "args": [],
      "env": {}
    }
  }
}
  1. Open Claude Code -> As the MCP is pointing to the mcp-server, which is a binary file, not a main app, so the main app doesn't launch. It's correct UX

⚠️ If I point the MCP to the main binary app, every time I open Claude Code, Proxyman will open too, even though I don't use the MCP Proxyman => Bad UX

=> It's a reason why I need to support MCP on the mcp-server, not the main app
3. Chat with Claude to list all available tools in MCP Proxyman
4. Claude Code talks to mcp-server
5. mcp-server handshake with Proxyman app (and read the token) at '/Users/nghiatran/Library/Application Support/com.proxyman.NSProxy/mcp-handshake.json'
6. mcp-server call HTTP Request to a local HTTP Server on Proxyman (Use token as a Access Token, and the port in the mcp-handshake.json) to get the data and construct the MCP Response and return to the Claude Code
7. Done

mcp-server

Main app

  • If the MCP feature is enabled -> Start a local HTTP server on port 0 (auto select) at 127.0.0.1 (not 0.0.0.0), and write the handshake file at '/Users/nghiatran/Library/Application Support/com.proxyman.NSProxy/mcp-handshake.json'.
  • If the MCP feature is disabled -> Verify we don't start the HTTP Server
  • The HTTP Server should start after launch 1 second - to not burden the launch time
  • Because we listen on port 0, so the system automatically pick a available port.
  • Implement a basic router to handle the MCP Tool and the logic of each tool
  • Make sure to verify the access token in the Header
  • Unit Test
Originally created by @NghiaTranUIT on GitHub (Jan 6, 2026). Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/571 Originally assigned to: @kics223w1 on GitHub. ## Description https://github.com/ProxymanApp/Proxyman/issues/2433#issuecomment-3707887621 ## Acceptance Criteria - [x] Implement the `mcp-server` command line, separate from the main App <img width="528" height="298" alt="Image" src="https://github.com/user-attachments/assets/7d77724a-05ac-4b15-a358-2b03e1b9969b" /> - [x] Implement the UI. It's a PRO feature. <img width="712" height="742" alt="Image" src="https://github.com/user-attachments/assets/43b97ff2-9698-4d9b-904f-bc7bd5c8eb1a" /> ### How the MCP works and why I need an `mcp-server` binary 1. Add the MCP config to Claude Code ```json { "mcpServers": { "proxyman": { "command": "/Applications/Proxyman.app/Contents/MacOS/mcp-server", "args": [], "env": {} } } } ``` 2. Open Claude Code -> As the MCP is pointing to the `mcp-server`, which is a binary file, not a main app, so the main app doesn't launch. It's correct UX ✅ ⚠️ If I point the MCP to the main binary app, every time I open Claude Code, Proxyman will open too, even though I don't use the MCP Proxyman => Bad UX ❌ => It's a reason why I need to support MCP on the `mcp-server`, not the main app 3. Chat with Claude to list all available tools in MCP Proxyman 4. Claude Code talks to `mcp-server` 5. `mcp-server` handshake with Proxyman app (and read the token) at `'/Users/nghiatran/Library/Application Support/com.proxyman.NSProxy/mcp-handshake.json'` 6. `mcp-server` call HTTP Request to a local HTTP Server on Proxyman (Use `token` as a Access Token, and the port in the `mcp-handshake.json`) to get the data and construct the MCP Response and return to the Claude Code 7. Done ### mcp-server - [x] Follow the official tutorial to build the MCP with Typescript server (Backend - electronJS app) : https://modelcontextprotocol.io/docs/develop/build-server#typescript - [x] Implement the list of available tools in mcp-server (I will give you a file in Slack) - [x] Write Unit Tests ### Main app - [x] If the MCP feature is enabled -> Start a local HTTP server on port 0 (auto select) at `127.0.0.1` (not `0.0.0.0`), and write the handshake file at ``'/Users/nghiatran/Library/Application Support/com.proxyman.NSProxy/mcp-handshake.json'``. - [x] If the MCP feature is disabled -> Verify we don't start the HTTP Server - [x] The HTTP Server should start after launch 1 second - to not burden the launch time - [x] Because we listen on port `0`, so the system automatically pick a available port. - [x] Implement a basic router to handle the MCP Tool and the logic of each tool - [x] Make sure to verify the access token in the Header - [x] Unit Test
Author
Owner

@NghiaTranUIT commented on GitHub (Jan 6, 2026):

@kics223w1 I'm not sure if it's possible to create a new mcp-server binary in ElectronJS, but if you can find a different solution that does not use the mcp-server, please do it.

Criteria for the MCP

  • Support MCP on Proxyman Windows
  • When launching the Claude Code, it must NOT launch Proxyman Windows. I don't want to launch Proxyman every time I open Claude Code or Cursor (after adding the MCP Proxyman)
<!-- gh-comment-id:3716164981 --> @NghiaTranUIT commented on GitHub (Jan 6, 2026): @kics223w1 I'm not sure if it's possible to create a new `mcp-server` binary in ElectronJS, but if you can find a different solution that does not use the `mcp-server`, please do it. ## Criteria for the MCP - [x] Support MCP on Proxyman Windows - [x] When launching the Claude Code, it `must NOT` launch Proxyman Windows. I don't want to launch Proxyman every time I open Claude Code or Cursor (after adding the MCP Proxyman)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/proxyman-windows-linux#566
No description provided.