
Proxy Doctor
io.github.JiansenPublished by GitHub account Jiansenv0.2.1Updated Oct 24, 2026
Diagnose proxy misconfigurations that break AI coding tools (Cursor, VS Code, Windsurf)
Overview
A local MCP server that diagnoses macOS proxy misconfigurations which break AI coding editors such as Cursor, VS Code and Windsurf.
- What you can do
- Run a full five-layer proxy diagnosis for a chosen editor, covering system proxy settings, residual values, port health, editor config and GUI environment variables, with evidence and a root cause. List recommended fixes with their commands and risk levels, and list the supported editors. Read-only by default; fixes are only shown, not executed.
- When to use it
- Use it when a browser reaches the internet but AI features in Cursor, VS Code or Windsurf fail, time out or stall, and you suspect a stale or buffering proxy, a closed VPN app, or leftover proxy environment variables.
- Requirements
- Runs as a local Python process; install the package with its MCP extra and point the MCP config at the Python interpreter where it is installed. Full checks need macOS; Linux is partial and Windows is not supported. No accounts, API keys or environment variables are declared.
Installation
In SourceWeft
- Open Proxy Doctor in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
proxy-doctor
[PyPI] [License] [Platform] [Python] [GitHub Stars]
Diagnose proxy misconfigurations that break AI coding tools.
When your browser works fine but Cursor / VS Code / Windsurf AI features don't — proxy-doctor tells you exactly why and how to fix it.
The Problem
AI coding tools (Cursor, VS Code with Copilot, Windsurf) rely on long-lived streaming connections (SSE/HTTP2) that break when:
- Your system proxy points to a localhost port where nothing is listening
- A VPN/proxy app was closed but its settings linger in macOS system preferences
- Your editor inherited stale proxy environment variables from
launchctl - The proxy is running but buffers streaming responses, breaking AI completions
The result: "browser works, AI editor doesn't" — the most common and frustrating developer experience.
What It Checks
proxy-doctor inspects 5 layers of your macOS proxy configuration:
Quick Start
CLI
As an MCP Tool (for AI agents)
proxy-doctor ships as an MCP server that AI agents can call directly:
Add to your MCP configuration (e.g., Cursor ~/.cursor/mcp.json):
Note:
"command"must point to the Python whereproxy-doctor[mcp]is installed. Ifpython3doesn't work, use the full path (runwhich python3orpython3 -c "import sys; print(sys.executable)"to find it).
Your AI agent can then call:
diagnose_proxy(editor="cursor")— full 5-layer diagnosis with evidencelist_fixes(editor="cursor")— recommended fixes with executable commandssupported_editors()— list available editors
For AI Agents: Quick Install
One-liner (paste this to your AI agent):
Install proxy-doctor (
pip install proxy-doctor[mcp]) and add it to your MCP config with commandpython -m proxy_doctor.mcp_server. Then use thediagnose_proxytool to check proxy health.
If you are an AI agent setting up proxy-doctor for your user:
Daemon Mode (v0.2+)
Run proxy-doctor as a persistent background service with automatic health monitoring:
The daemon runs every 5 minutes, compares results with the previous check, and sends a macOS notification when status changes (e.g. healthy → unhealthy).
Menu Bar (SwiftBar)
Shows a green/red/orange indicator in your menu bar with one-click diagnosis.
Example Output
Unhealthy (Case A: dead proxy port)
Healthy
Supported Editors
How It Works
proxy-doctor identifies three failure patterns:
Case A — Dead proxy port (high confidence): Your system or editor points to 127.0.0.1:port but nothing is listening. This happens when a VPN/proxy app is closed but its settings remain.
Case B — Streaming broken (medium confidence): A proxy is running, but it buffers SSE/streaming connections that AI editors depend on. Common with browser-only proxy modes.
Case C — Path mismatch (medium confidence): Browser and editor use different proxy paths. Browser works via a dedicated proxy route; editor inherits a stale or incompatible one.
Platform Support
- macOS: Full support (system proxy, launchctl, networksetup)
- Linux: Partial (editor config + environment variables; no networksetup)
- Windows: Not yet supported
Trust & Permissions
proxy-doctor follows a read-only by default design. No system changes are made unless you explicitly opt in.
Default Behavior (read-only)
Opt-in Fix Application
proxy-doctor fix shows the recommended commands but does not execute them.
To apply fixes, use proxy-doctor fix --apply:
- Each fix is shown with its command and risk level
- You are prompted individually for each fix (
[y/N]) - Default is No — nothing runs unless you type
y - You can abort at any time with Ctrl+C
This two-step model lets AI agents safely call list_fixes() via MCP to see what needs fixing, then present the commands to users for approval.
Feedback
Found a bug? Have a suggestion? Diagnosis didn't help?
- GitHub Issues: https://github.com/Jiansen/proxy-doctor/issues/new
- For AI agents: The JSON output includes a
feedback.report_issueURL — include the full JSON when filing issues.
For AI agents providing feedback programmatically (zero dependencies):
Development
If proxy-doctor helped you fix a proxy issue, consider giving it a star on GitHub — it helps others discover the tool.
License
MIT
Source: README.md at commit 0b3d386
Tools
0Version history
1- v0.2.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts