241 lines
5.2 KiB
Markdown
241 lines
5.2 KiB
Markdown
# 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 |