mcpField
F
fiddler-download-setup

fiddler-download-setup

github.com/telerik开发1253 次安装12 周前更新
代码仓库

关于 fiddler-download-setup

fiddler-download-setup 是指导用户下载、安装并启动 Fiddler Everywhere 的技能,面向尚未安装该应用或需要升级的用户。它会检测系统、架构和版本,并在安装后提供 MCP 设置选项。

主要功能

  1. 01检查安装状态与版本
  2. 02识别操作系统和架构
  3. 03从清单解析最新版本
  4. 04下载并安装应用
  5. 05启动 Fiddler Everywhere
  6. 06提供 MCP 配置后续步骤

适用场景

  1. 01在新设备上安装 Fiddler Everywhere
  2. 02检查现有安装是否需要升级
  3. 03按系统类型执行下载与安装
  4. 04安装后配置 Fiddler MCP 连接

MCP 相关

该技能本身不提供 MCP 服务,而是在安装并启动 Fiddler Everywhere 后,引导用户配置 Fiddler MCP 服务连接。接受后会调用 fiddler-mcp-setup 技能完成配置。

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/fiddler-download-setup确认已加载。

详细介绍

Fiddler 下载与设置

指导用户下载、安装并启动 Fiddler Everywhere。

操作规则

  1. 此技能以 shell 为先。尚未安装 Fiddler,因此没有可用的 MCP 工具。
  2. 构造任何下载 URL 前,先从清单中解析当前版本。 切勿硬编码版本号。
  3. 在 Windows 上,检测已打开的终端。只有在终端不是 PowerShell 时,才使用以下命令封装并运行脚本:powershell.exe -Command 'script'。使用单引号封装脚本!

阶段 1 — 检查是否已安装 Fiddler

下载前,检查是否已安装 Fiddler Everywhere。 如果已安装,还要读取已安装的版本,并与最新可用版本比较。仅当应用未安装,或有可用更新且用户希望升级时,才继续阶段 2。

macOS — 检测并检查版本
if [ -d "/Applications/Fiddler Everywhere.app" ]; then
  INSTALLED_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" \
    "/Applications/Fiddler Everywhere.app/Contents/Info.plist" 2>/dev/null)
  echo "INSTALLED: $INSTALLED_VERSION"
else
  echo "NOT_INSTALLED"
fi

如果为 INSTALLED,则获取检测到的架构对应的最新版本并进行比较:

ARCH=$(uname -m)
if [ "$ARCH" = "arm64" ]; then
  MANIFEST_URL="https://downloads.getfiddler.com/mac-arm64/latest-mac.yml"
else
  MANIFEST_URL="https://downloads.getfiddler.com/mac/latest-mac.yml"
fi
LATEST_VERSION=$(curl -s "$MANIFEST_URL" | grep '^version:' | awk '{print $2}')
echo "Installed: $INSTALLED_VERSION  |  Latest: $LATEST_VERSION"
if [ "$INSTALLED_VERSION" = "$LATEST_VERSION" ]; then
  echo "UP_TO_DATE"
else
  echo "UPDATE_AVAILABLE"
fi
Linux — 检测并检查版本
APPIMAGE=$(ls ~/Downloads/fiddler-everywhere-*.AppImage 2>/dev/null | sort -V | tail -1)
if command -v fiddler-everywhere &>/dev/null || [ -n "$APPIMAGE" ]; then
  # Extract version from AppImage filename as the most reliable source
  INSTALLED_VERSION=$(echo "$APPIMAGE" | grep -oP '[\d]+\.[\d]+\.[\d]+')
  echo "INSTALLED: $INSTALLED_VERSION"
  LATEST_VERSION=$(curl -s "https://downloads.getfiddler.com/linux/latest-linux.yml" \
    | grep '^version:' | awk '{print $2}')
  echo "Installed: $INSTALLED_VERSION  |  Latest: $LATEST_VERSION"
  if [ "$INSTALLED_VERSION" = "$LATEST_VERSION" ]; then
    echo "UP_TO_DATE"
  else
    echo "UPDATE_AVAILABLE"
  fi
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) {
  $installedVersion = $installed.DisplayVersion
  Write-Host "INSTALLED: $installedVersion"

  $manifest = Invoke-WebRequest "https://downloads.getfiddler.com/win/latest.yml" -UseBasicParsing
  $text = [System.Text.Encoding]::UTF8.GetString($manifest.RawContentStream.ToArray())
  $latestVersion = ($text | Select-String '(?m)^version:\s*(.+)').Matches.Groups[1].Value.Trim()
  Write-Host "Installed: $installedVersion  |  Latest: $latestVersion"

  if ($installedVersion -eq $latestVersion) { "UP_TO_DATE" } else { "UPDATE_AVAILABLE" }
} else {
  "NOT_INSTALLED"
}

结果说明:

  • NOT_INSTALLED — 继续阶段 2,下载并安装。
  • UP_TO_DATE — 告知用户其 Fiddler Everywhere 已是最新版本,并停止执行此技能。
  • UPDATE_AVAILABLE — 告知用户已安装的版本和最新版本,然后询问是否要升级。如果是,继续阶段 2(新的安装程序会替换现有版本)。如果否,则停止。

阶段 2 — 检测操作系统并解析版本

同时运行这两条命令。清单探测还会确认网络连接。

uname -s && uname -m
VERSION=$(curl -s "https://downloads.getfiddler.com/mac-arm64/latest-mac.yml" \
  | grep '^version:' | awk '{print $2}')
echo "Latest Fiddler Everywhere: $VERSION"

在 Windows(PowerShell)上:

$env:PROCESSOR_ARCHITECTURE   # AMD64 or ARM64
$manifest = Invoke-WebRequest "https://downloads.getfiddler.com/win/latest.yml" -UseBasicParsing
$text = [System.Text.Encoding]::UTF8.GetString($manifest.RawContentStream.ToArray())
$VERSION = ($text | Select-String '(?m)^version:\s*(.+)').Matches.Groups[1].Value.Trim()
Write-Host "Latest Fiddler Everywhere: $VERSION"
uname -suname -m平台
Darwinarm64macOS Apple Silicon
Darwinx86_64macOS Intel
Linux任意值Linux
——Windows — 使用上面的 PowerShell 路径

阶段 3 — 下载

使用阶段 2 中解析的 $VERSION 构造直接的版本化 URL。 在 macOS 上优先使用 .pkg 格式。

macOS
# Apple Silicon (arm64)
curl -L \
  "https://agent-downloads.getfiddler.com/mac-arm64/Fiddler%20Everywhere%20${VERSION}.pkg" \
  -o ~/Downloads/FiddlerEverywhere.pkg

# Intel (x86_64)
curl -L \
  "https://agent-downloads.getfiddler.com/mac/Fiddler%20Everywhere%20${VERSION}.pkg" \
  -o ~/Downloads/FiddlerEverywhere.pkg
Linux
VERSION=$(curl -s "https://downloads.getfiddler.com/linux/latest-linux.yml" \
  | grep '^version:' | awk '{print $2}')
curl -L \
  "https://agent-downloads.getfiddler.com/linux/fiddler-everywhere-${VERSION}.AppImage" \
  -o ~/Downloads/FiddlerEverywhere.AppImage
Windows(PowerShell)
Invoke-WebRequest `
  "https://agent-downloads.getfiddler.com/win/Fiddler%20Everywhere%20$VERSION.exe" `
  -OutFile "$env:USERPROFILE\Downloads\FiddlerEverywhere.exe"

阶段 4 — 安装

macOS — PKG(无界面,无向导)

不要直接使用 sudo installer — sudo 会在 Agent 的隐藏 shell 中等待输入密码,用户无法输入。改用 osascript,它会弹出用户可以在屏幕上看到的 macOS 原生身份验证对话框。

do shell script with administrator privileges 以 root 身份运行,由于 macOS 沙盒限制,无法访问 ~/Downloads。请先将安装包复制到 /tmp(所有用户均可读取),然后从那里安装。

通过 bash 工具调用运行这两条命令:

cp ~/Downloads/FiddlerEverywhere.pkg /tmp/FiddlerEverywhere.pkg

然后,在运行下一条命令前告知用户:

“屏幕上会弹出 macOS 密码对话框。请在其中输入您的登录密码以授权安装,之后我会自动继续。”

osascript -e 'do shell script "installer -pkg /tmp/FiddlerEverywhere.pkg -target /" with administrator privileges'

osascript 会一直阻塞,直到用户批准对话框且安装完成。退出代码为 0 后,进行清理。

rm /tmp/FiddlerEverywhere.pkg
macOS — DMG(如果用户更喜欢拖放安装)
hdiutil attach ~/Downloads/FiddlerEverywhere.dmg -nobrowse
cp -R "/Volumes/Fiddler Everywhere/Fiddler Everywhere.app" /Applications/
hdiutil detach "/Volumes/Fiddler Everywhere"
Linux
chmod +x ~/Downloads/FiddlerEverywhere.AppImage
~/Downloads/FiddlerEverywhere.AppImage &
Windows — 静默安装
Start-Process "$env:USERPROFILE\Downloads\FiddlerEverywhere.exe" -ArgumentList "/S" -Wait

启动 Fiddler:

macOS:

open -a "Fiddler Everywhere" && sleep 15

Linux:

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

Windows: 重要提示:在 Windows 上,如果当前使用的终端是 bash,请使用专用的 GitBash 脚本。

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

阶段 5 — 建议设置 MCP

安装并启动 Fiddler Everywhere 后,告知用户有一个自动 MCP 设置技能,可以配置 Fiddler MCP 服务连接。

显示以下消息:

Fiddler Everywhere 已安装并正在运行。

有一个自动 MCP 设置技能,可以为你的 AI Agent 配置 Fiddler MCP 服务连接。这将允许 Agent 工具直接与 Fiddler 交互——捕获流量、检查会话、创建规则等,所有操作都可以在编辑器中完成。

是否要我现在自动配置 MCP?

使用提问工具让用户选择:

  • 是,自动配置 MCP(推荐)
  • 否,我稍后手动设置
如果用户接受

从远程位置安装 fiddler-mcp-setup 技能并调用它:

远程技能 URL: https://github.com/telerik/fiddler-agent-tools/tree/master/skills/fiddler-mcp-setup

按照 fiddler-mcp-setup 技能说明完成端到端的 MCP 配置。

如果用户拒绝

表示理解,并告知他们随时可以稍后下载 MCP 设置技能。

故障排除

问题解决方案
macOS 密码对话框被取消 / 安装中止重新运行 osascript 命令——/tmp 中的 pkg 文件仍然存在
hdiutil: attach failed文件可能尚未完全下载——重新运行 curl 命令
Windows EXE 被 SmartScreen 拦截右键单击 → 以管理员身份运行
应用在 macOS 上无法打开运行 xattr -cr "/Applications/Fiddler Everywhere.app" 清除隔离属性

评论

支持 Markdown