Content
# 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:
```bash
dotnet tool install --global ilspycmd
```
2. **Python 3.8+**: Required for running the MCP server
## Installation
Install from PyPI:
```bash
pip install ilspy-mcp-server
```
Or for development:
```bash
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:
```json
{
"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:**
```json
{
"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:**
```json
{
"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**:
```bash
pip install ilspy-mcp-server
```
2. **Configure your MCP client** (Claude Desktop example):
```json
{
"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`):
```json
{
"mcpServers": {
"ilspy": {
"command": "python",
"args": ["-m", "ilspy_mcp_server.server"],
"env": {
"LOGLEVEL": "INFO"
}
}
}
}
```
**Development/Testing**:
```json
{
"mcpServers": {
"ilspy": {
"command": "python",
"args": ["-m", "ilspy_mcp_server.server"],
"env": {
"LOGLEVEL": "DEBUG"
}
}
}
}
```
## Troubleshooting
### Common Issues
1. **"ILSpyCmd not found"**:
```bash
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:
```json
{
"env": {
"LOGLEVEL": "DEBUG"
}
}
```
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgments
- Built on top of the excellent [ILSpy](https://github.com/icsharpcode/ILSpy) decompiler
- Uses the [Model Context Protocol](https://modelcontextprotocol.io/) for integration
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.