Install
$ agentstack add mcp-brokenistxd-ilspy-mcp-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ● Filesystem access Used
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
ILSpy MCP Server
A production-grade MCP server that exposes all major ILSpy CLI features as separate tools for decompiling .NET assemblies.
Features
- 10 MCP Tools: Decompile, export projects, extract IL, list types/methods, resolve references, and more
- Workflow Orchestration: Automated end-to-end processing of .NET assemblies
- Structured Output: JSON reports with metadata, types, methods, and logs
- Forward Compatible: Raw ilspycmd tool for unsupported features
- Cross-Platform: Works on Windows, Linux, and macOS
Prerequisites
- Python 3.10+
- ILSpy CLI (ilspycmd) installed and available in PATH
- Download from: https://github.com/icsharpcode/ILSpy/releases
- Or install via:
dotnet tool install -g ilspycmd
Installation
pip install -r requirements.txt
Usage
Option 1: MCP Server Mode
Start the MCP server and use it with any MCP-compatible client:
python server.py
The server communicates via stdio using JSON-RPC. Configure it in your MCP client using config.json.
Option 2: Direct Orchestrator Usage
Process assemblies directly using the orchestrator:
# Single assembly
python orchestrator.py assembly.dll
# Multiple assemblies
python orchestrator.py assembly1.dll assembly2.dll assembly3.exe
# With options
python orchestrator.py assembly.dll --langver:11 --nullable --no-records
Option 3: Python API
Use the orchestrator programmatically:
from orchestrator import process_assemblies, save_report
from pathlib import Path
report = process_assemblies(
["assembly.dll"],
language_version="11",
nullable_enabled=True,
handle_records=True,
)
save_report(report, Path("work/report.json"))
Tools
- decompile_file - Decompile assembly to C# files
- Supports:
--langver,--nullable,--with-records, etc.
- export_project - Export compilable C# project
- Includes: References, metadata, project files
- get_il - Extract IL code
- View intermediate language instead of decompiled C#
- list_types - List all types in assembly
- Returns: Namespace-qualified type names
- list_methods - List methods for a type
- Input: Full type name (e.g.,
Namespace.ClassName)
- resolve_references - Analyze external references
- Extracts: Package references, assembly references
- setlanguageversion - Control C# language version
- Versions: 9, 10, 11, 12, etc.
- enablenullablecontext - Enable/disable nullable reference types
- Options:
trueorfalse
- handlerecordsinit_only - Handle record types properly
- Ensures: Records and init-only setters decompile correctly
- raw_ilspycmd - Run arbitrary ilspycmd commands
- Forward-compatible with all future ILSpy features
Output Structure
work/
input/ # Input assemblies (optional)
output/
decompile/ # Decompiled C# files
/
*.cs files
project/ # Exported projects
/
*.csproj
*.cs files
il/ # IL code output
/
*.il files
report.json # Final structured JSON report
JSON Report Format
The orchestrator generates a structured JSON report:
{
"assemblies": [
{
"assembly": "example.dll",
"status": "success",
"paths": {
"decompiled": "work/output/decompile/example/",
"project": "work/output/project/example/",
"il": "work/output/il/example/"
},
"types": [
{
"name": "Namespace.MyClass",
"methods": ["Main", "DoSomething"],
"il_size": {"Main": 123, "DoSomething": 42}
}
],
"references": ["System", "System.Linq"],
"flags_used": ["--langver:11", "--nullable"],
"logs": {
"stdout": "...",
"stderr": "..."
}
}
]
}
Workflow
The orchestrator follows this workflow for each assembly:
- Decompile → Generate C# source files
- Export Project → Create compilable project with references
- Extract IL → Get intermediate language code
- List Types → Discover all types in assembly
- List Methods → For each type, extract methods
- Resolve References → Analyze dependencies
- Apply Settings → Language version, nullable context, records
- Generate Report → Collect all metadata into JSON
Error Handling
- All tools return structured JSON with
returncode,stdout, andstderr - Failed operations are marked with
status: "error"in the report - Full error logs are included in the report for debugging
- Tools are idempotent - safe to run multiple times
Examples
See example_usage.py for complete examples of:
- Processing single assemblies
- Processing multiple assemblies
- Using different language versions
- Enabling/disabling nullable context
- Custom flags and options
License
This project wraps ILSpy CLI. Please refer to ILSpy's license for usage terms.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: BROKENISTXD
- Source: BROKENISTXD/ilspy-mcp-server
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.