From 0ef64e9823549513783d100213a6b06b5a6839ed Mon Sep 17 00:00:00 2001 From: Nikita Nemirovsky Date: Sat, 3 Oct 2026 13:07:52 +0400 Subject: [PATCH 1/5] fix(plugin): pin the server binary to the plugin version and verify its checksum run.sh fetched whatever release was latest from the GitHub API and ran it unchecked, once, forever: a later release never replaced the cached binary, and nothing confirmed the download was the file goreleaser built. The plugin directory also holds a plugin whose launcher runs a file it cannot read, so a reviewer will look at exactly this. The version now comes from .claude-plugin/plugin.json, so each plugin version runs the binary from its own release tag. The download goes to a temp file, is checked against that release's checksums file, and only then is moved into place as bin/iwdp-mcp-. A mismatch or a missing entry refuses to run. Unsupported OS or architecture now fails with a message instead of a 404. --- scripts/run.sh | 60 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/scripts/run.sh b/scripts/run.sh index 4082a64..1dbfa95 100755 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,36 +1,64 @@ #!/usr/bin/env bash +# Launches the iwdp-mcp server, downloading its release binary on first run. +# +# The binary is pinned to this plugin's own version and checked against the +# release's checksums file before it is ever run. set -euo pipefail REPO="nnemirovsky/iwdp-mcp" BINARY_NAME="iwdp-mcp" -# Determine install location: prefer plugin root, fall back to script dir. -if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then - INSTALL_DIR="${CLAUDE_PLUGIN_ROOT}/bin" -else - INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)/../bin" +PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(cd "$(dirname "$0")/.." && pwd)}" + +# Release tags match the plugin version, so a plugin version always runs the +# binary built from the same commit. +VERSION="$(sed -nE 's/^[[:space:]]*"version":[[:space:]]*"([^"]+)".*/\1/p' "${PLUGIN_ROOT}/.claude-plugin/plugin.json" | head -1)" +if [ -z "$VERSION" ]; then + echo "iwdp-mcp: cannot read the plugin version from ${PLUGIN_ROOT}/.claude-plugin/plugin.json" >&2 + exit 1 fi -BINARY="${INSTALL_DIR}/${BINARY_NAME}" +INSTALL_DIR="${PLUGIN_ROOT}/bin" +BINARY="${INSTALL_DIR}/${BINARY_NAME}-${VERSION}" -if [ ! -f "$BINARY" ]; then +if [ ! -x "$BINARY" ]; then OS="$(uname -s | tr '[:upper:]' '[:lower:]')" + case "$OS" in + darwin|linux) ;; + *) echo "iwdp-mcp: no release binary for ${OS}" >&2; exit 1 ;; + esac ARCH="$(uname -m)" case "$ARCH" in - x86_64) ARCH="amd64" ;; - aarch64) ARCH="arm64" ;; + x86_64|amd64) ARCH="amd64" ;; + aarch64|arm64) ARCH="arm64" ;; + *) echo "iwdp-mcp: no release binary for ${ARCH}" >&2; exit 1 ;; esac - # Resolve latest version tag (e.g. "v0.1.0" → "0.1.0") - VERSION="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name"' | sed -E 's/.*"v?([^"]+)".*/\1/')" ASSET="${BINARY_NAME}_${VERSION}_${OS}_${ARCH}" - URL="https://github.com/${REPO}/releases/download/v${VERSION}/${ASSET}" + BASE="https://github.com/${REPO}/releases/download/v${VERSION}" - echo "Downloading ${BINARY_NAME} v${VERSION} from ${URL}..." >&2 mkdir -p "$INSTALL_DIR" - curl -fsSL "$URL" -o "$BINARY" - chmod +x "$BINARY" - echo "Installed ${BINARY_NAME} v${VERSION} to ${BINARY}" >&2 + TMP="$(mktemp "${INSTALL_DIR}/.${ASSET}.XXXXXX")" + trap 'rm -f "$TMP"' EXIT + + echo "Downloading ${ASSET} from ${BASE}..." >&2 + curl -fsSL "${BASE}/${ASSET}" -o "$TMP" + + EXPECTED="$(curl -fsSL "${BASE}/${BINARY_NAME}_${VERSION}_checksums.txt" | awk -v f="$ASSET" '$2 == f { print $1 }')" + if command -v sha256sum >/dev/null 2>&1; then + ACTUAL="$(sha256sum "$TMP" | awk '{ print $1 }')" + else + ACTUAL="$(shasum -a 256 "$TMP" | awk '{ print $1 }')" + fi + if [ -z "$EXPECTED" ] || [ "$EXPECTED" != "$ACTUAL" ]; then + echo "iwdp-mcp: checksum mismatch for ${ASSET}, refusing to run it" >&2 + exit 1 + fi + + chmod 755 "$TMP" + mv "$TMP" "$BINARY" + trap - EXIT + echo "Installed ${ASSET} to ${BINARY}" >&2 fi exec "$BINARY" "$@" From 3f13af3adce45758aa609d12d1105649fa3e14b5 Mon Sep 17 00:00:00 2001 From: Nikita Nemirovsky Date: Sat, 3 Oct 2026 13:09:05 +0400 Subject: [PATCH 2/5] docs(claude): move CLAUDE.md under .claude and note the plugin directory rules A CLAUDE.md at the plugin root is never loaded as plugin context and the validator warns about it. .claude/CLAUDE.md still loads as project memory. Also notes that run.sh now needs the tag's release to exist before that plugin version can start, and the validator rules that cause policy holds. --- CLAUDE.md => .claude/CLAUDE.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) rename CLAUDE.md => .claude/CLAUDE.md (91%) diff --git a/CLAUDE.md b/.claude/CLAUDE.md similarity index 91% rename from CLAUDE.md rename to .claude/CLAUDE.md index 1399bbe..866a01d 100644 --- a/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -136,6 +136,20 @@ git tag vX.Y.Z git push origin vX.Y.Z ``` +`scripts/run.sh` downloads the server binary for the version in `plugin.json` and +checks it against that release's checksums file. Until the tag's release workflow +has published its assets, the plugin at that commit cannot start, so publish a +plugin version in the directory only after its GitHub release exists. + +## Plugin Directory + +- This file lives in `.claude/` because a `CLAUDE.md` at the plugin root draws a + validator warning. It still loads as project memory. +- No text file may name the listing icon or any other image or font file in the + plugin. That puts the plugin on a policy hold. +- The launcher downloading and running a binary is an expected policy hold: a + reviewer reads `scripts/run.sh` for each version. + ## Key Dependencies - `github.com/modelcontextprotocol/go-sdk` v1.4.0 — official MCP Go SDK From c84d743dcdaa1b2169e83c7d8cb0cfe60fc36850 Mon Sep 17 00:00:00 2001 From: Nikita Nemirovsky Date: Sat, 3 Oct 2026 13:09:13 +0400 Subject: [PATCH 3/5] docs(privacy): add a privacy policy The directory's compliance step asks to confirm the plugin's privacy policy describes the data it handles. This one covers the first-run download from GitHub, that the server otherwise only talks to localhost, and that tool results can carry page data such as cookies and storage. --- PRIVACY.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 PRIVACY.md diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 0000000..9835386 --- /dev/null +++ b/PRIVACY.md @@ -0,0 +1,40 @@ +# Privacy policy + +iwdp-mcp runs entirely on your machine. It has no server of its own, collects no +telemetry, and sends nothing to the author or to any third party. + +## Network access + +* On first run, `scripts/run.sh` downloads the server binary for the installed + plugin version from this repository's GitHub releases, together with the + release's checksums file. GitHub sees that request like any other download. +* After that, the server talks only to `localhost`: to ios-webkit-debug-proxy, + which it may start for you, and through it to Safari on a device or simulator + you have connected and enabled Web Inspector on. + +## What it reads + +Only what you or Claude ask for through its tools, from the Safari page being +debugged. Depending on the tool, that can include the page's DOM, styles, console +output, network requests and responses, cookies (including httpOnly ones), local +and session storage, IndexedDB, and screenshots. That data can contain personal +information if the page you are debugging holds any. + +## What it writes + +* The downloaded binary, under the plugin's `bin/` directory. +* Screenshots, heap snapshots and large JSON results, under + `$TMPDIR/iwdp-mcp/`, so they can be handed to Claude as files. +* Changes to the debugged page when a tool is asked to make them, such as + navigating, running JavaScript, editing the DOM or CSS, or setting cookies and + storage. + +## What it passes to Claude + +Tool results go back to Claude Code, which handles them under Anthropic's terms, +not this plugin's. Avoid debugging pages that hold data you do not want in your +session. + +## Contact + +Questions go to [GitHub issues](https://github.com/nnemirovsky/iwdp-mcp/issues). \ No newline at end of file From 71622467dcf8d5779356a475b7102bdbc918bba0 Mon Sep 17 00:00:00 2001 From: Nikita Nemirovsky Date: Sat, 3 Oct 2026 13:09:13 +0400 Subject: [PATCH 4/5] chore(plugin): add author, listing links, license and keywords The validator warned about the missing author. Without explicit links the listing scrapes them from the README, whose first link is the CI badge. --- .claude-plugin/plugin.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 4766ae0..d3a5387 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,6 +2,25 @@ "name": "iwdp-mcp", "version": "0.5.3", "description": "iOS Safari debugging via ios-webkit-debug-proxy — MCP server with full WebKit Inspector Protocol support", + "author": { + "name": "Nikita Nemirovsky", + "url": "https://github.com/nnemirovsky" + }, + "homepage": "https://github.com/nnemirovsky/iwdp-mcp", + "repository": "https://github.com/nnemirovsky/iwdp-mcp", + "documentationUrl": "https://github.com/nnemirovsky/iwdp-mcp#readme", + "supportUrl": "https://github.com/nnemirovsky/iwdp-mcp/issues", + "privacyPolicyUrl": "https://github.com/nnemirovsky/iwdp-mcp/blob/main/PRIVACY.md", + "license": "MIT", + "keywords": [ + "ios", + "safari", + "webkit", + "debugging", + "web-inspector", + "iphone", + "mcp" + ], "mcpServers": { "iwdp-mcp": { "command": "${CLAUDE_PLUGIN_ROOT}/scripts/run.sh" From 953678e8b39a5f1e933c7336ed179c351d63bd16 Mon Sep 17 00:00:00 2001 From: Nikita Nemirovsky Date: Sat, 3 Oct 2026 13:12:09 +0400 Subject: [PATCH 5/5] chore(plugin): add listing icon The validator warned that there was none. The portal reads it only on the first save, so it has to land before submitting. --- .claude-plugin/icon.png | Bin 0 -> 27771 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .claude-plugin/icon.png diff --git a/.claude-plugin/icon.png b/.claude-plugin/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90a54cb4701edbd76f6eb84105d7eafcaf4776de GIT binary patch literal 27771 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 literal 0 HcmV?d00001