Claude Desktop Setup
Claude Desktop uses a static JSON file, so the cleanest setup is to copy the generated JSON from the installed package output.
1. Install WPF DevTools
Published-release command after GitHub Release assets exist:
irm https://installer.wpf-mcptools.evanlau1798.com | iex
The HTTPS alias resolves scripts/online-installer.ps1; promote it only after the selected version has GitHub Release assets and sidecars: release_<version>_win-<arch>.zip, SHA256SUMS.txt, release-assets.json, release-sbom.spdx.json, and release-evidence.json.
Preferred local package path:
- Review
scripts/online-installer.ps1as the canonical source entrypoint. - Run the reviewed installer against a verified local package archive.
Example:
powershell -ExecutionPolicy Bypass -File .\scripts\online-installer.ps1 -PackageArchivePath .\release\release_<version>_win-<arch>.zip -TrustedReleaseMetadataDirectory .\release -Client claude-desktop -NonInteractive -Force -OutputJson
Package-local fallback:
- Use a locally generated package, or after GitHub Release assets exist, download the matching
release_<version>_win-<arch>.zipfrom Releases together withSHA256SUMS.txt,release-assets.json,release-sbom.spdx.json, andrelease-evidence.json. - Verify the archive with
SHA256SUMS.txt,release-assets.json, andrelease-sbom.spdx.jsonbefore extraction. - Extract the package.
- Run
run.bat.
Before trusting the extracted package, keep the verified release sidecars beside the archive: SHA256SUMS.txt for the checksum, release-assets.json for the canonical release metadata, and release-sbom.spdx.json for the release asset SBOM. The SBOM sidecar is an asset-level release archive inventory, not a full package/dependency SBOM. Production payload signature verification still requires an independent WPFDEVTOOLS_RELEASE_SIGNER_THUMBPRINT; adjacent sidecars prove archive provenance but do not replace signer trust. WPFDEVTOOLS_RELEASE_SIGNER_SUBJECT is only an additional constraint after the thumbprint is pinned.
run.bat requests elevation when the current shell is not already elevated and then launches the packaged bin/install.ps1. Set WPFDEVTOOLS_SKIP_ELEVATION=1 when you need to keep the install in the current unelevated shell.
After installation, the fallback executable path when no previous live install root is reused is:
C:\Users\<you>\AppData\Roaming\WpfDevToolsMcp\<arch>\current\bin\wpf-devtools-<arch>.exe
2. Generated JSON template
The installer writes client-registration\claude-desktop.json. Its structure is:
{
"mcpServers": {
"wpf-devtools": {
"type": "stdio",
"command": "C:\\Users\\<you>\\AppData\\Roaming\\WpfDevToolsMcp\\<arch>\\current\\bin\\wpf-devtools-<arch>.exe",
"args": []
}
}
}
Use the generated client-registration\claude-desktop.json artifact as the source of truth for the resolved executable path. Only adjust the copied path in your local claude_desktop_config.json when you intentionally switch architectures or install roots.
Before using this prompt, confirm WPFDEVTOOLS_MCP_ALLOWED_TARGETS contains the running WPF app's exact local absolute executable path; unset or malformed values fail closed before connect attaches.
3. First prompt
Use the WPF DevTools MCP server after WPFDEVTOOLS_MCP_ALLOWED_TARGETS includes the running WPF app's exact local absolute executable path; connect to it, auto-discover the target if there is only one visible candidate, then summarize the root UI state with get_ui_summary(depthMode: "semantic").
Notes
- Start with
connect()in the common case afterWPFDEVTOOLS_MCP_ALLOWED_TARGETSincludes the reviewed target's exact local absolute executable path. Useget_processes(windowFilter)only when auto-discovery reports multiple candidates. - Prefer scene-level verification before visual-tree expansion.
- After each diagnostic, interaction, or mutation, follow
navigation.recommendedfirst and treatnextStepsas the compatibility field. - Keep mutation tools for later in the workflow.
- Reinstall or re-register after switching between
x64,x86, andarm64targets.