mcpField
F
fiddler-mcp-setup

fiddler-mcp-setup

github.com/telerikAgent workflows1287 installsUpdated 12w ago
Repository

About fiddler-mcp-setup

fiddler-mcp-setup is a procedural skill for configuring Fiddler Everywhere's MCP server for supported agent tools. It checks installation and connectivity, identifies the provider, then guides login and configuration through Fiddler's local API.

Key features

  1. 01Check Fiddler installation and reachability
  2. 02Detect the agent provider
  3. 03Discover the MCP server port
  4. 04Check existing provider configuration
  5. 05Trigger login when required
  6. 06Configure the provider automatically

Use cases

  1. 01Setting up Fiddler MCP for an agent
  2. 02Finding a non-default local server port
  3. 03Refreshing an existing provider configuration

MCP support

It configures Fiddler Everywhere's MCP server for the selected agent provider using local management endpoints. It can also initiate login through the server's MCP interface.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/telerik/fiddler-agent-tools --skill fiddler-mcp-setup

After installing, type/fiddler-mcp-setupin Claude Code to confirm it loaded.

Details

From the project README

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 containsProvider value
code, code-helpervscode
cursorcursor
claudeclaude_code
copilotcopilot_cli
codexcodex_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"
ResultAction
Any HTTP response codePort 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.

ResponseAction
Indicates config exists / already configuredInform 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 configuredProceed to Step 5.
403Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription."
User not logged inFollow 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.

ResponseAction
Success / 2xxConfiguration written. Proceed to Step 6.
403Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription."
User not logged inFollow the Login procedure in Step 4, then retry Step 5.
Any other failureNote 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."

Comments

Markdown supported