Skip to main content

MCP Server for ILSpy .NET Decompiler

Project description

ILSpy MCP Server

A Model Context Protocol (MCP) server that provides .NET assembly decompilation capabilities using ILSpy.

Features

  • Decompile Assemblies: Convert .NET assemblies back to readable C# source code
  • List Types: Enumerate classes, interfaces, structs, delegates, and enums in assemblies
  • Generate Diagrammer: Create interactive HTML visualizations of assembly structure
  • Assembly Information: Get metadata about .NET assemblies

Prerequisites

  1. ILSpy Command Line Tool: Install the global dotnet tool:

    dotnet tool install --global ilspycmd
    
  2. Python 3.8+: Required for running the MCP server

Installation

Install from PyPI:

pip install ilspy-mcp-server

Or for development:

git clone https://github.com/Borealin/ilspy-mcp-server.git
cd ilspy-mcp-server
pip install -e .

Usage

MCP Client Configuration

Configure your MCP client (e.g., Claude Desktop) to use the server:

{
  "mcpServers": {
    "ilspy": {
      "command": "python",
      "args": ["-m", "ilspy_mcp_server.server"]
    }
  }
}

Available Tools

1. decompile_assembly

Decompile a .NET assembly to C# source code.

Parameters:

  • assembly_path (required): Path to the .NET assembly file
  • output_dir (optional): Output directory for decompiled files
  • type_name (optional): Specific type to decompile
  • language_version (optional): C# language version (default: "Latest")
  • create_project (optional): Create a compilable project structure
  • show_il_code (optional): Show IL code instead of C#
  • remove_dead_code (optional): Remove dead code during decompilation
  • nested_directories (optional): Use nested directories for namespaces

Example:

{
  "name": "decompile_assembly",
  "arguments": {
    "assembly_path": "/path/to/MyAssembly.dll",
    "type_name": "MyNamespace.MyClass",
    "language_version": "CSharp10_0"
  }
}

2. list_types

List types in a .NET assembly.

Parameters:

  • assembly_path (required): Path to the .NET assembly file
  • entity_types (optional): Array of entity types to list ("c", "i", "s", "d", "e")

Example:

{
  "name": "list_types",
  "arguments": {
    "assembly_path": "/path/to/MyAssembly.dll",
    "entity_types": ["c", "i"]
  }
}

3. generate_diagrammer

Generate an interactive HTML diagrammer.

Parameters:

  • assembly_path (required): Path to the .NET assembly file
  • output_dir (optional): Output directory for the diagrammer
  • include_pattern (optional): Regex pattern for types to include
  • exclude_pattern (optional): Regex pattern for types to exclude

4. get_assembly_info

Get basic information about an assembly.

Parameters:

  • assembly_path (required): Path to the .NET assembly file

Available Prompts

1. analyze_assembly

Analyze a .NET assembly and provide insights about its structure.

2. decompile_and_explain

Decompile a specific type and provide explanation of its functionality.

Supported Assembly Types

  • .NET Framework assemblies (.dll, .exe)
  • .NET Core/.NET 5+ assemblies
  • Portable Executable (PE) files with .NET metadata

Supported C# Language Versions

  • CSharp1 through CSharp12_0
  • Preview
  • Latest (default)

Quick Start

  1. Install the package:

    pip install ilspy-mcp-server
    
  2. Configure your MCP client (Claude Desktop example):

    {
      "mcpServers": {
        "ilspy": {
          "command": "python",
          "args": ["-m", "ilspy_mcp_server.server"]
        }
      }
    }
    
  3. Use the tools in your MCP client:

    • Ask to decompile a .NET assembly
    • List types in an assembly
    • Generate interactive diagrams
    • Get assembly information

Error Handling

The server provides detailed error messages for common issues:

  • Assembly file not found
  • Invalid assembly format
  • ILSpyCmd not installed or not in PATH
  • Permission issues
  • Decompilation failures

Configuration

Environment Variables

  • LOGLEVEL: Set logging level (DEBUG, INFO, WARNING, ERROR). Default: INFO

MCP Client Examples

Claude Desktop (config.json):

{
  "mcpServers": {
    "ilspy": {
      "command": "python",
      "args": ["-m", "ilspy_mcp_server.server"],
      "env": {
        "LOGLEVEL": "INFO"
      }
    }
  }
}

Development/Testing:

{
  "mcpServers": {
    "ilspy": {
      "command": "python",
      "args": ["-m", "ilspy_mcp_server.server"],
      "env": {
        "LOGLEVEL": "DEBUG"
      }
    }
  }
}

Troubleshooting

Common Issues

  1. "ILSpyCmd not found":

    dotnet tool install --global ilspycmd
    
  2. "Assembly file not found":

    • Check the file path is correct
    • Ensure the file has .dll or .exe extension
  3. Permission errors:

    • Ensure read access to assembly files
    • Check output directory permissions

Debug Mode

Enable debug logging to see detailed operation info:

{
  "env": {
    "LOGLEVEL": "DEBUG"
  }
}

License

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

Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ilspy_mcp_server-0.1.1.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ilspy_mcp_server-0.1.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file ilspy_mcp_server-0.1.1.tar.gz.

File metadata

  • Download URL: ilspy_mcp_server-0.1.1.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ilspy_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4f0619a4f64e6f4fd1cfa60e62f2533acecdb691a3721617930a617b47b672b3
MD5 49f51fb1f764f00c0ed436b3db1ca7e2
BLAKE2b-256 69dc07beee10a55e283a79a255c8b865fdc3a9d64cda7687c0c0d67273584a3f

See more details on using hashes here.

File details

Details for the file ilspy_mcp_server-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ilspy_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 16726912a69c66905e2372d3851cc13025c445457fbfb5be47afb25055b79623
MD5 8ec173a4c082a08c181e9d9c5c59e979
BLAKE2b-256 472416db0cf976fe270dc9609dcfa4fc0c8d6acacc6cc84c16f8cb05f61be0c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page