1. Conduid
  2. Developer Tools
  3. WPFVisualTreeMcp
MCP server · Developer Tools

WPFVisualTreeMcp

MCP server for inspecting WPF application Visual Trees - enables AI agents to debug and analyze WPF UI hierarchies in real-time

Unclaimed devtools
34Low

Scored 7 months ago · breakdown

About WPFVisualTreeMcp

WPFVisualTreeMcp is an MCP server published by faze79 in the Developer Tools category: mCP server for inspecting WPF application Visual Trees - enables AI agents to debug and analyze WPF UI hierarchies in real-time.

The repository has 21 stars and 8 forks, with the last commit 2 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/faze79/WPFVisualTreeMcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (13)

wpf_attachAttach to a WPF application by process ID or name
ParameterTypeDescription
process_idintegerProcess ID to attach to
process_namestringProcess name to attach to (e.g., 'MyApp' or 'MyApp.exe')
wpf_export_treeExport visual tree to XAML or JSON format
ParameterTypeDescription
element_handlestringHandle of root element (optional, defaults to main window)
formatstringExport format
wpf_find_elementsSearch for elements by type, name, or property value
ParameterTypeDescription
element_namestringx:Name of the element to find
property_filterobjectProperty name/value pairs to filter by
type_namestringElement type name (e.g., 'Button', 'TextBox', 'System.Windows.Controls.Button')
wpf_get_binding_errorsList all binding errors in the attached application

Parameters not published.

wpf_get_bindingsGet all data bindings for an element with their status
ParameterTypeDescription
element_handle *stringHandle of the element to inspect
wpf_get_element_propertiesGet all dependency properties of a UI element
ParameterTypeDescription
element_handle *stringHandle of the element to inspect
wpf_get_layout_infoGet layout information (ActualWidth, ActualHeight, Margin, Padding, etc.)
ParameterTypeDescription
element_handle *stringHandle of the element
wpf_get_resourcesEnumerate resource dictionaries and their contents
ParameterTypeDescription
element_handlestringRequired when scope is 'element'
scopestringScope of resources to enumerate
wpf_get_stylesGet applied styles and templates for an element
ParameterTypeDescription
element_handle *stringHandle of the element to inspect
wpf_get_visual_treeGet the visual tree hierarchy starting from a root element
ParameterTypeDescription
max_depthintegerMaximum tree depth to traverse
root_handlestringHandle of root element (optional, defaults to main window)
Show all 13 tools
wpf_highlight_elementVisually highlight an element in the running application
ParameterTypeDescription
duration_msintegerDuration of highlight in milliseconds
element_handle *stringHandle of the element to highlight
wpf_list_processesList all running WPF applications available for inspection

Parameters not published.

wpf_watch_propertyMonitor a property for changes
ParameterTypeDescription
element_handle *stringHandle of the element
property_name *stringName of the property to watch

Ask AI

✦

Ask AI about WPFVisualTreeMcp

Powered by Claude · Grounded in docs

I know everything about WPFVisualTreeMcp. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

WpfVisualTreeMcp

Build Release .NET MCP Compatible

MCP server for inspecting WPF application Visual Trees - enables AI agents to debug and analyze WPF UI hierarchies in real-time

📢 Latest Updates: See RELEASE_NOTES.md for recent improvements including screenshot capture, DLL auto-injection, AdornerLayer/Popup traversal, and IPC deadlock fixes.

Overview

WpfVisualTreeMcp is a Model Context Protocol (MCP) server that allows AI coding agents (Claude Code, Cursor, GitHub Copilot) to inspect and interact with running WPF applications. Think of it as giving your AI assistant the same capabilities as tools like Snoop WPF or Visual Studio's Live Visual Tree.

Why This Matters

Debugging WPF UI issues traditionally requires manual inspection with specialized tools. This project bridges that gap by exposing WPF inspection capabilities through MCP, enabling AI agents to:

  • Understand UI structure during code reviews
  • Diagnose binding errors automatically
  • Suggest fixes for layout issues
  • Assist with UI refactoring tasks
  • Analyze visual tree hierarchies in real-time

Features

Core Inspection

  • Process Discovery - List all running WPF applications available for inspection
  • Visual Tree Navigation - Traverse the complete visual tree hierarchy
  • Logical Tree Access - Navigate the logical tree structure
  • Property Inspection - Read all dependency properties of any UI element

Binding & Resources

  • Binding Analysis - Inspect bindings with converter, StringFormat, FallbackValue, MultiBinding support
  • DataContext Inspection - View DataContext type, properties, INPC status, and inheritance chain
  • Binding Error Detection - Automatically capture and report binding errors with classification
  • Resource Enumeration - Browse resource dictionaries at any scope
  • Style Inspection - View applied styles and templates

Search & Monitoring

  • Element Search - Find elements by type, name, or property values
  • Deep Search - Search entire tree including AdornerLayer and Popup elements
  • Property Watching - Monitor property changes in real-time

Interaction & Export

  • Screenshot Capture - Capture window/element screenshots visible to AI agents
  • Element Highlighting - Visually highlight elements in the running app
  • Layout Information - Get detailed layout metrics
  • Tree Export - Export visual tree to XAML or JSON format
  • Auto-Injection - Inject Inspector into running WPF processes (no source changes needed)

Quick Start

Prerequisites

  • Windows 10/11
  • .NET 8.0 SDK or later
  • A WPF application to inspect

Installation

Option 1: Download Release (Recommended)

Download the latest release from GitHub Releases:

  1. Download WpfVisualTreeMcp-vX.X.X-win-x64.zip
  2. Extract to a folder (e.g., C:\Tools\WpfVisualTreeMcp)
  3. The MCP server executable is at server\WpfVisualTreeMcp.Server.exe

Option 2: Build from Source

git clone https://github.com/faze79/WpfVisualTreeMcp.git
cd WpfVisualTreeMcp
dotnet build -c Release

Option 3: .NET Tool (Coming Soon)

dotnet tool install -g WpfVisualTreeMcp

Configuration

The server uses the official Microsoft/Anthropic MCP SDK for .NET, providing guaranteed compatibility with Claude Code and other MCP clients.

Claude Code

Option 1: Command Line (Recommended)

Use the claude mcp add command to add the server directly:

# Add to current project only
claude mcp add wpf-visual-tree -- C:/path/to/WpfVisualTreeMcp/publish/WpfVisualTreeMcp.Server.exe

# Add globally (available in all projects)
claude mcp add --scope user wpf-visual-tree -- C:/path/to/WpfVisualTreeMcp/publish/WpfVisualTreeMcp.Server.exe

You can verify the server was added:

claude mcp list

Option 2: Project-level JSON Configuration

Create or edit .mcp.json in your project root:

{
  "mcpServers": {
    "wpf-visual-tree": {
      "command": "C:/path/to/WpfVisualTreeMcp/publish/WpfVisualTreeMcp.Server.exe",
      "args": []
    }
  }
}

Option 3: Global JSON Configuration

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "wpf-visual-tree": {
      "command": "C:/path/to/WpfVisualTreeMcp/publish/WpfVisualTreeMcp.Server.exe",
      "args": []
    }
  }
}

Important Notes:

  • Use absolute paths to the built .exe file
  • Use forward slashes (/) in paths on Windows
  • Build in Release mode for production: dotnet build -c Release
  • Restart Claude Code after configuration changes

Cursor

Add to your Cursor settings (.cursor/mcp.json):

{
  "mcpServers": {
    "wpf-visual-tree": {
      "command": "C:/path/to/WpfVisualTreeMcp/publish/WpfVisualTreeMcp.Server.exe",
      "args": []
    }
  }
}

Self-Hosted Mode (Recommended)

For your WPF application to be inspectable, add a reference to the Inspector DLL and initialize it on startup:

  1. Add a project reference to WpfVisualTreeMcp.Inspector

  2. In your App.xaml.cs:

using System.Diagnostics;
using System.Windows;
using WpfVisualTreeMcp.Inspector;

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        // Initialize the WPF Visual Tree Inspector
        InspectorService.Initialize(Process.GetCurrentProcess().Id);
    }

    protected override void OnExit(ExitEventArgs e)
    {
        InspectorService.Instance?.Dispose();
        base.OnExit(e);
    }
}

This enables the MCP server to connect to your application via named pipes for real-time inspection.

Usage Examples

List Running WPF Applications

Use the wpf_list_processes tool to show all running WPF applications.

Attach and Inspect Visual Tree

Attach to the MyApp.exe WPF application and show me the visual tree of the main window.

Find Binding Errors

Check the attached WPF application for any binding errors and explain what's causing them.

Search for Elements

Find all Button elements in the visual tree that have IsEnabled set to false.

Export Visual Tree

Export the visual tree of the current window to JSON format so I can analyze the structure.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    AI Agent (Claude Code)                    │
└─────────────────────────┬───────────────────────────────────┘
                          │ MCP Protocol (stdio)
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                 WpfVisualTreeMcp Server                      │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────┐  │
│  │   MCP Handler   │  │  Tree Navigator │  │   Injector  │  │
│  │  (Tools/Res.)   │  │   & Inspector   │  │   Manager   │  │
│  └────────┬────────┘  └────────┬────────┘  └──────┬──────┘  │
└───────────┼────────────────────┼───────────────────┼────────┘
            │                    │                   │
            └────────────────────┼───────────────────┘
                                 │ Named Pipes / IPC
                                 ▼
┌─────────────────────────────────────────────────────────────┐
│                   Target WPF Application                     │
│  ┌─────────────────────────────────────────────────────────┐│
│  │              Injected Inspector DLL                      ││
│  │  • VisualTreeHelper access                              ││
│  │  • LogicalTreeHelper access                             ││
│  │  • Property/Binding inspection                          ││
│  │  • Resource dictionary enumeration                      ││
│  └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

For detailed architecture documentation, see docs/ARCHITECTURE.md.

Available Tools

Tool Description
wpf_list_processes List all running WPF applications
wpf_attach Attach to a WPF application (supports auto_inject for DLL injection)
wpf_get_visual_tree Get the visual tree hierarchy (default depth: 25, max: 100)
wpf_get_element_properties Get all dependency properties of an element
wpf_find_elements Search for elements by type or name (partial matching)
wpf_find_elements_deep Deep search across all windows including adorners/popups
wpf_capture_screenshot Capture a screenshot of the window or element (returns image)
wpf_get_bindings Get data bindings for an element (includes MultiBinding, converter, StringFormat)
wpf_get_binding_errors List all captured binding errors
wpf_clear_binding_errors Clear the captured binding errors list
wpf_get_data_context Get DataContext type, properties, INPC status, and inheritance chain
wpf_get_resources Enumerate resource dictionaries
wpf_get_styles Get applied styles and templates
wpf_watch_property Monitor a property for changes
wpf_highlight_element Visually highlight an element
wpf_get_layout_info Get layout information
wpf_export_tree Export visual tree to XAML or JSON

For complete tool documentation, see docs/TOOLS_REFERENCE.md.

Roadmap

Phase 1: Core Inspection ✅

  • Project structure and architecture
  • Process discovery and enumeration
  • Basic process attachment
  • Visual tree navigation
  • Property inspection
  • Element search

Phase 2: Advanced Features ✅

  • IPC communication via named pipes
  • Binding analysis and error detection
  • Resource dictionary enumeration
  • Style and template inspection
  • Property change monitoring (with notifications)

Phase 3: Interaction & Diagnostics ✅

  • Element highlighting overlay
  • XAML/JSON export
  • Screenshot capture (returns MCP ImageContentBlock)
  • DLL auto-injection into running WPF processes (x64/x86)
  • AdornerLayer and Popup visual tree traversal

Future Considerations

  • Visual tree diff/comparison
  • Performance diagnostics
  • Visual tree modification capabilities

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development Setup

  1. Clone the repository:

    git clone https://github.com/faze79/WpfVisualTreeMcp.git
    cd WpfVisualTreeMcp
    
  2. Open in Visual Studio 2022 or VS Code:

    code .
    # or
    start WpfVisualTreeMcp.sln
    
  3. Build and run tests:

    dotnet build
    dotnet test
    
  4. Run the sample WPF app for testing:

    dotnet run --project samples/SampleWpfApp
    

Project Structure

WpfVisualTreeMcp/
├── src/
│   ├── WpfVisualTreeMcp.Server/        # MCP Server (.NET 8) - Uses official MCP SDK
│   │   ├── Program.cs                  # Server initialization with MCP SDK
│   │   ├── WpfTools.cs                 # 17 WPF inspection tools
│   │   └── Services/                   # Process & IPC management
│   ├── WpfVisualTreeMcp.Inspector/     # Injected DLL (.NET Framework 4.8)
│   ├── WpfVisualTreeMcp.Injector/      # Managed injection logic (CreateRemoteThread)
│   ├── WpfVisualTreeMcp.Bootstrapper/  # Native C++ DLL for CLR hosting
│   └── WpfVisualTreeMcp.Shared/        # Shared models & IPC contracts
├── samples/
│   └── SampleWpfApp/                   # Test application
├── tests/
│   └── WpfVisualTreeMcp.Tests/         # Unit tests (48 tests)
├── publish/                            # Published server + native DLLs
│   └── native/{x64,x86}/              # Architecture-specific bootstrapper
└── docs/                               # Documentation

Technical Details

  • MCP SDK: Built with the official C# MCP SDK from Microsoft/Anthropic
  • Protocol: JSON-RPC 2.0 over stdio transport
  • Target Framework: .NET 8.0 (Server) / .NET Framework 4.8 + .NET 8.0-windows (Inspector, dual-target)
  • IPC: Named Pipes for server-to-application communication
  • Tools: 17 inspection tools auto-discovered via [McpServerTool] attributes

Acknowledgments

License

This project is licensed under the MIT License - see the LICENSE file for details.

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About WPFVisualTreeMcp

How do I install WPFVisualTreeMcp?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is WPFVisualTreeMcp safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is WPFVisualTreeMcp still maintained?

Yes — the last commit was 2 days ago. The repository has 21 stars and 8 forks.