Skip to content

MCP for Windows #571

@NghiaTranUIT

Description

@NghiaTranUIT

Description

ProxymanApp/Proxyman#2433 (comment)

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request✅ DoneTicket is resolved

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions