Proxy Doctor

io.github.Jiansen由 GitHub 账号 Jiansen 发布v0.2.1更新于 Oct 24, 2026

Diagnose proxy misconfigurations that break AI coding tools (Cursor, VS Code, Windsurf)

已验证STDIO仅桌面开发者工具安全与监控

概览

AI 生成的概览

本地 MCP 服务器,用于诊断导致 Cursor、VS Code、Windsurf 等 AI 编程编辑器无法联网的 macOS 代理配置错误。

可以做什么
针对指定编辑器执行五层代理诊断,涵盖系统代理设置、残留值、端口健康、编辑器配置和 GUI 环境变量,并给出证据与根本原因。列出建议的修复项及其命令和风险等级,并列出支持的编辑器。默认只读,仅展示修复而不执行。
适用场景
当浏览器能正常上网,但 Cursor、VS Code 或 Windsurf 的 AI 功能失败、超时或卡住,且怀疑是失效或缓冲的代理、已关闭的 VPN 应用或残留的代理环境变量时使用。
运行要求
以本地 Python 进程运行;需安装带 MCP 附加组件的包,并在 MCP 配置中指向安装该包的 Python 解释器。完整检查需要 macOS;Linux 仅部分支持,Windows 不支持。未声明需要账号、API 密钥或环境变量。
安装前请注意
会读取系统代理设置、编辑器配置文件、launchctl 环境变量和本地端口状态,仅写入自身缓存目录。会访问 pypi.org 检查版本。应用修复是单独的需主动启用的命令行步骤,会修改系统代理设置并逐项请求确认;MCP 工具只报告修复建议。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Proxy Doctor,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[proxy-doctor logo]

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:

LayerWhatHow
1. System ProxyWeb/HTTPS/SOCKS proxy across all network servicesnetworksetup
2. Residual ValuesDisabled proxies with stale localhost addressesParse disabled-but-set entries
3. Port HealthWhether referenced proxy ports are actually listeningsocket.connect()
4. Editor Configsettings.json, argv.json, recent error logsFile read + pattern match
5. GUI Environmenthttp_proxy/https_proxy in GUI app contextlaunchctl getenv

Quick Start

CLI

bash
# Installpip install proxy-doctor
# Run diagnosis (JSON output — default, optimized for AI agents)proxy-doctor check
# Run diagnosis (human-readable output)proxy-doctor check --human
# Show recommended fixesproxy-doctor fix
# Check a different editorproxy-doctor check --editor vscode

As an MCP Tool (for AI agents)

proxy-doctor ships as an MCP server that AI agents can call directly:

bash
# Install with MCP supportpip install proxy-doctor[mcp]
# Run MCP serverpython -m proxy_doctor.mcp_server

Add to your MCP configuration (e.g., Cursor ~/.cursor/mcp.json):

json
{  "mcpServers": {    "proxy-doctor": {      "command": "python3",      "args": ["-m", "proxy_doctor.mcp_server"]    }  }}

Note: "command" must point to the Python where proxy-doctor[mcp] is installed. If python3 doesn't work, use the full path (run which python3 or python3 -c "import sys; print(sys.executable)" to find it).

Your AI agent can then call:

  • diagnose_proxy(editor="cursor") — full 5-layer diagnosis with evidence
  • list_fixes(editor="cursor") — recommended fixes with executable commands
  • supported_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 command python -m proxy_doctor.mcp_server. Then use the diagnose_proxy tool to check proxy health.

If you are an AI agent setting up proxy-doctor for your user:

bash
# 1. Installpip install proxy-doctor[mcp]
# 2. Find the Python pathpython3 -c "import sys; print(sys.executable)"
# 3. Add to ~/.cursor/mcp.json (use the path from step 2)# {#   "mcpServers": {#     "proxy-doctor": {#       "command": "<python-path-from-step-2>",#       "args": ["-m", "proxy_doctor.mcp_server"]#     }#   }# }
# 4. If MCP is not available, use CLI directly (zero dependencies):proxy-doctor check          # JSON outputproxy-doctor check --human  # human-readableproxy-doctor fix            # show fixes (read-only)proxy-doctor fix --apply    # apply fixes (asks for confirmation)

Daemon Mode (v0.2+)

Run proxy-doctor as a persistent background service with automatic health monitoring:

bash
# Start daemon (installs as macOS launchd service)proxy-doctor daemon start
# Check daemon statusproxy-doctor daemon status
# Stop daemonproxy-doctor daemon stop
# Check for updatesproxy-doctor update

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)

bash
# If SwiftBar is installedcp plugins/swiftbar/proxy-doctor.5m.sh ~/Library/Application\ Support/SwiftBar/Plugins/chmod +x ~/Library/Application\ Support/SwiftBar/Plugins/proxy-doctor.5m.sh

Shows a green/red/orange indicator in your menu bar with one-click diagnosis.

Example Output

Unhealthy (Case A: dead proxy port)

json
{  "status": "unhealthy",  "diagnosis": {    "case": "A",    "root_cause": "Editor is configured to use proxy at 127.0.0.1:10903, but no process is listening on that port.",    "confidence": "high",    "source": "system proxy (Wi-Fi (http))",    "browser_explanation": "Browser may use a different proxy path (e.g. browser-only mode) or fall back to a direct connection."  },  "fixes": [    {      "fix_id": "clear-system-http-wi-fi",      "description": "Disable http proxy on Wi-Fi",      "command": "networksetup -setwebproxystate \"Wi-Fi\" off",      "risk": "low"    }  ]}

Healthy

proxy-doctor v0.2.0Editor: cursor | Platform: Darwin
Status: HEALTHY
No proxy contamination detected.

Supported Editors

EditorConfig DetectionLog ScanningStatus
Cursoryesyessupported
VS Codeyesyessupported
Windsurfyesyessupported
Claude Desktopplanned—future
Zedplannedplannedfuture

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)

AccessWhatWhy
ReadsSystem proxy settings, editor config files, launchctl env vars, local port statusCore diagnostic functionality
Writes~/.proxy-doctor/ only (cache, logs, update state)Daemon state persistence
Networkpypi.org (version check only)Auto-update feature
Does NOTModify proxy settings, change editor config, send telemetry, access credentialsBy design

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?

For AI agents providing feedback programmatically (zero dependencies):

bash
# Create a GitHub issue via CLI (requires gh)proxy-doctor check | gh issue create --repo Jiansen/proxy-doctor \  --title "Diagnosis report: [describe issue]" --body-file -
# Or simply: copy the JSON output into a new issue at# https://github.com/Jiansen/proxy-doctor/issues/new

Development

bash
git clone https://github.com/Jiansen/proxy-doctor.gitcd proxy-doctor
# Install in development modepip install -e ".[dev,mcp]"
# Run testsmake test
# Run lintermake lint

If proxy-doctor helped you fix a proxy issue, consider giving it a star on GitHub — it helps others discover the tool.

[Star on GitHub]

License

MIT

来源:README.md,提交 0b3d386

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分