SuperAPI AI Directory

fiddler-mcp-setup

Agents & models

View repository

Updated 10-16 04:15

About this skill

Fiddler MCP Setup

Configure the Fiddler Everywhere MCP server so that agent tools can call Fiddler's traffic inspection, status, and session APIs.


Operating rules

  • Shell-first. MCP is not yet configured, so you cannot use MCP tools.
  • Sequential execution only. Follow steps strictly in order — do not run steps or scripts in parallel. Each step may depend on values produced by the previous one.
  • On Windows — detect opened terminal. Only if it is not PowerShell, wrap scripts with: powershell.exe -Command 'script'. Use single quotes to wrap the script.

Step 1 — Verify Fiddler is installed

macOS:

if [ -d "/Applications/Fiddler Everywhere.app" ]; then echo "INSTALLED"; else echo "NOT_INSTALLED"; fi

Linux:

if command -v fiddler-everywhere &>/dev/null; then echo "INSTALLED"; else echo "NOT_INSTALLED"; fi

Windows (PowerShell):

$installed = Get-ItemProperty `
  "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
  "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
  "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" `
  -ErrorAction SilentlyContinue |
  Where-Object { $_.DisplayName -like "*Fiddler Everywhere*" }
if ($installed) { "INSTALLED" } else { "NOT_INSTALLED" }

If NOT_INSTALLED: stop and tell the user:

"Fiddler Everywhere is not installed. Please install it first."


Step 2 — Detect the provider

Identify which agent is being configured and set PROVIDER.

Parent process name

Inspect the parent process:

macOS / Linux:

ps -p $PPID -o comm= 2>/dev/null

Windows (PowerShell):

(Get-Process -Id (Get-CimInstance Win32_Process -Filter "ProcessId=$PID").ParentProcessId).Name

Match the output against known process names:

Process name contains Provider value
code, code-helper vscode
cursor cursor
claude claude_code
copilot copilot_cli
codex codex_cli

If matched unambiguously, set PROVIDER to Provider value from the table and proceed to Step 3.

If still unrecognised, ask the user:

"Which agent are you setting Fiddler MCP up for? (VS Code / GitHub Copilot, Cursor, Claude Code CLI, GitHub Copilot CLI, or OpenAI Codex CLI)"

Use the user's answer to set PROVIDER from the table above.


Step 3 — Discover the port

Fiddler Everywhere listens on port 8868 by default. Confirm it is reachable and set PORT for all subsequent steps.

macOS / Linux:

curl -s -o /dev/null -w "%{http_code}" "http://localhost:8868/api/McpManagement/Detect?provider=PROVIDER"

Windows (PowerShell):

curl.exe -s -o NUL -w "%{http_code}" "http://localhost:8868/api/McpManagement/Detect?provider=PROVIDER"
Result Action
Any HTTP response code Port 8868 is reachable. Set PORT=8868 and proceed to Step 4.
000 (connection refused) Port 8868 is not listening. Run the port discovery script below.

Port discovery script:

macOS / Linux:

python3 -c "
import json, glob, os
ports = set()
for f in glob.glob(os.path.expanduser('~/.fiddler/*/Settings/appsettings.json')):
    try:
        p = json.load(open(f)).get('MCPServerSettings', {}).get('Port')
        if p and p != 8868:
            ports.add(p)
    except: pass
print(' '.join(str(p) for p in ports) if ports else 'none')
"

Windows (PowerShell):

$ports = Get-ChildItem "$env:USERPROFILE\.fiddler\*\Settings\appsettings.json" -ErrorAction SilentlyContinue |
  ForEach-Object { (Get-Content $_ | ConvertFrom-Json).MCPServerSettings.Port } |
  Where-Object { $_ -and $_ -ne 8868 } | Select-Object -Unique
Write-Output $(if ($ports) { $ports -join ' ' } else { 'none' })

For each port returned, probe it:

macOS / Linux:

curl -s -o /dev/null -w "%{http_code}" "http://localhost:PORT/api/McpManagement/Detect?provider=PROVIDER"

Windows (PowerShell):

curl.exe -s -o NUL -w "%{http_code}" "http://localhost:PORT/api/McpManagement/Detect?provider=PROVIDER"

Set PORT to the first port that returns any HTTP response. If no port responds, Fiddler is not running — launch it and retry from the top of Step 3.

Launch Fiddler:

macOS:

open -a "Fiddler Everywhere" && sleep 15

Linux:

(nohup fiddler-everywhere &>/dev/null &); sleep 15

Windows: Important On windows if the current terminal used is bash, use the specific GitBash script.

PowerShell

$candidates = @(
  "$env:LOCALAPPDATA\Programs\Fiddler Everywhere\Fiddler Everywhere.exe",
  "C:\Program Files\Fiddler Everywhere\Fiddler Everywhere.exe",
  "C:\Program Files (x86)\Fiddler Everywhere\Fiddler Everywhere.exe"
)
$fiddlerExe = $candidates | Where-Object { Test-Path $_ } | Select-Object -First 1
if ($fiddlerExe) {
  $cmdLine = '"' + $fiddlerExe + '"'
  Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{ CommandLine = $cmdLine } | Out-Null
  Start-Sleep 15
}

Git Bash

FIDDLER_EXE=""
for dir in "$LOCALAPPDATA/Programs/Fiddler Everywhere" \
           "/c/Program Files/Fiddler Everywhere" \
           "/c/Program Files (x86)/Fiddler Everywhere"; do
  if [ -f "$dir/Fiddler Everywhere.exe" ]; then
    FIDDLER_EXE="$dir/Fiddler Everywhere.exe"
    break
  fi
done
if [ -n "$FIDDLER_EXE" ]; then
  "$FIDDLER_EXE" &
  sleep 15
fi

Important: Wait 15 seconds for Fiddler to launch, before continuing with the next steps!

If still unreachable after relaunch:

"Fiddler Everywhere is not reachable. Please verify it is running and try again."

PORT is used in all subsequent steps.


Step 4 — Check for existing configuration

Call the Detect endpoint to see if Fiddler MCP is already configured for this provider:

macOS / Linux:

curl -s "http://localhost:$PORT/api/McpManagement/Detect?provider=PROVIDER"

Windows (PowerShell):

curl.exe -s "http://localhost:$PORT/api/McpManagement/Detect?provider=PROVIDER"

Replace PROVIDER with the value from Step 2.

Response Action
Indicates config exists / already configured Inform the user: "Fiddler MCP is already configured for PROVIDER." Ask if they want to re-run setup to refresh the configuration. Only continue if confirmed.
Indicates not configured Proceed to Step 5.
403 Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription."
User not logged in Follow the Login procedure below, then retry Step 4.

Login (if Fiddler reports the user is not logged in)

Use the MCP protocol to trigger the login flow. Follow these sub-steps in order.

1. Open an MCP session and get the session ID:

macOS / Linux:

SESSION_ID=$(curl -si -X POST "http://localhost:$PORT/mcp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"mcp-setup","version":"1.0"}}}' \
  | grep -i "^mcp-session-id:" | awk '{print $2}' | tr -d '\r')
echo "Session ID: $SESSION_ID"

Windows (PowerShell):

$initResp = curl.exe -si -X POST "http://localhost:$PORT/mcp" `
  -H "Content-Type: application/json" `
  -H "Accept: application/json, text/event-stream" `
  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"mcp-setup\",\"version\":\"1.0\"}}}'
$SESSION_ID = ($initResp | Select-String "(?i)mcp-session-id:\s*(\S+)").Matches.Groups[1].Value.Trim()
Write-Host "Session ID: $SESSION_ID"

If SESSION_ID is empty, Fiddler may not be fully started — wait a few seconds and retry.

2. Fetch the tools list to confirm initiate_login is available:

macOS / Linux:

curl -s -X POST "http://localhost:$PORT/mcp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Windows (PowerShell):

curl.exe -s -X POST "http://localhost:$PORT/mcp" `
  -H "Content-Type: application/json" `
  -H "Accept: application/json, text/event-stream" `
  -H "Mcp-Session-Id: $SESSION_ID" `
  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}'

Confirm initiate_login appears in the response before continuing.

3. Call initiate_login:

macOS / Linux:

curl -s -X POST "http://localhost:$PORT/mcp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Mcp-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"initiate_login","arguments":{}}}'

Windows (PowerShell):

curl.exe -s -X POST "http://localhost:$PORT/mcp" `
  -H "Content-Type: application/json" `
  -H "Accept: application/json, text/event-stream" `
  -H "Mcp-Session-Id: $SESSION_ID" `
  -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"initiate_login\",\"arguments\":{}}}'

Tell the user:

"A login window has been opened in your browser. Please complete sign-in, then let me know when done."

Wait for the user to confirm sign-in is complete, then retry the step that triggered this login flow.


Step 5 — Autoconfigure

Call the Configure endpoint. Fiddler will automatically generate or reuse the API key and write the correct config file for the provider:

macOS / Linux:

curl -s -X POST "http://localhost:$PORT/api/McpManagement/Configure" \
  -H "Content-Type: application/json" \
  -d '{"provider":"PROVIDER"}'

Windows (PowerShell):

curl.exe -s -X POST "http://localhost:$PORT/api/McpManagement/Configure" `
  -H "Content-Type: application/json" `
  -d '{\"provider\":\"PROVIDER\"}'

Replace PROVIDER with the value from Step 2.

Response Action
Success / 2xx Configuration written. Proceed to Step 6.
403 Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription."
User not logged in Follow the Login procedure in Step 4, then retry Step 5.
Any other failure Note the response and ask the user to check Fiddler is running correctly.

Step 6 — Confirm success

Tell the user:

"Fiddler MCP has been configured for PROVIDER. Restart your agent (reload the VS Code window, restart Cursor, etc.) to pick up the new configuration, then try using a Fiddler tool."