关于 ILens
ILens 是面向 Agent 和开发者的 Windows MCP 服务,用于检查已编译的 .NET 程序集。它提供定向元数据查询、C# 反编译和交叉引用分析,避免倾倒整个文件。
主要功能
- 01列出类型和成员
- 02按名称查找方法
- 03反编译单个方法
- 04分析调用方、重写、实现和属性用法
- 05将程序集访问限制在允许目录内
适用场景
- 01查看命名空间中的公开类型
- 02检查类 API 而不读取方法体
- 03追踪方法的调用方或实现
- 04检查不同程序集构建版本的差异
MCP 相关
ILens 向 MCP 客户端提供程序集检查工具,包括类型和方法查询、反编译及交叉引用分析。程序集路径仅限于配置的允许根目录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ILens
一个 MCP 服务,可让 AI Agent 检查已编译的 .NET 程序集——列出类型、反编译方法、运行交叉引用分析,而无需为完整文件转储消耗大量令牌。
为什么需要
AI Agent 检查已编译 .NET 程序集时,默认的后备做法是通过 shell 调用 ildasm(IL 转储)或 ilspycmd(完整 C# 反编译)。两者都会将整个文件转储为文本,而这些输出会在之后的每一轮对话中作为输入令牌留在 Agent 的上下文中——检查单个类很快就会耗费数千个令牌。
| 任务 | ilspycmd 开销 | ILens 工具 | ILens 开销 |
|---|---|---|---|
| 列出命名空间中的公共类型 | 1,041,476 tokens | find_types | 1,109 tokens |
| 查看一个中等大小类的 API 表面 | 1,041,476 tokens | list_members | 562 tokens |
| 查找哪些类型公开了给定方法 | 1,041,476 tokens | find_methods | 526 tokens |
数据测量于 2026-10-31,针对 ICSharpCode.Decompiler.dll 9.1.0.7988;令牌数量按字符数除以 4 计算,并非使用真实分词器得出。
ILens 将程序集检查转化为范围明确的定向查询:列出命名空间中的类型、列出某个类型的成员(不含方法体)、按名称查找方法、反编译单个方法体、运行交叉引用分析(调用方、重写、实现、扩展方法、特性用法)。每次调用都会返回聚焦的响应,因此将它注册为始终可用的工具也足够经济。
适用范围
ILens 专为检查 C# 程序集而构建,输出内容也是 C#。元数据驱动的工具(find_types、find_methods、list_members、analyze)读取与语言无关的元数据,可处理由任何 .NET 语言生成的程序集。decompile、search_code 以及 analyze 的 call_sites 类型始终输出 C#——对于由 F#、VB.NET 或 C++/CLI 编译的程序集,它们仍可运行,但无法用 C# 表示的结构可能无法忠实呈现。
基于 ILSpy 构建
没有 ILSpy,就不会有 ILens。反编译器、分析器,以及让 ILens 能够用 C# 术语描述 .NET 程序集的类型系统——这些都不属于 ILens,而是归 ILSpy 团队所有。ILens 链接的两个库——用于反编译器本身的 ICSharpCode.Decompiler,以及用于分析器基础设施的 ICSharpCode.ILSpyX——凝聚了十多年的精心工作;坦率地说,这个项目只是构建在其上的一层轻薄 MCP 封装。
这项工作采用 MIT 许可证,这也是 ILens 得以存在的唯一原因。如果 ILens 对你有用,请考虑为 ILSpy 点个星。他们实至名归。
需要说明的是:有关 ILens 的错误报告和功能请求应提交到 ILens 问题跟踪器,而不是 ILSpy 的问题跟踪器。请不要把下游问题提交给上游维护者——他们自己的工作已经够多了。
安装
系统要求:Windows 10/11,x64。二进制文件为独立运行版本——无需单独安装 .NET 运行时。
winget install Tadis.ILens
这是标准的 winget 便携式安装。二进制文件会放在 %LOCALAPPDATA%\Microsoft\WinGet\Packages\ 下,并且 ilens 会自动加入当前用户的 PATH。无需管理员权限。
如需了解其他安装程序、更新和安装故障排除方法,请参阅用户指南。
设置
步骤 1:注册服务
在项目根目录的 .mcp.json 中添加一条记录。安装程序会将 ilens 添加到 PATH,因此 command 字段直接引用二进制文件名即可,无需完整路径:
{
"mcpServers": {
"ilens": {
"command": "ilens",
"args": [
"--allow-root", "C:\\path\\to\\dlls"
]
}
}
}
每个 --allow-root 标志都会添加一个可从中加载程序集的目录树。如果没有任何 --allow-root 标志,服务就无法加载任何程序集。 工具调用会在每个请求中指定程序集路径;服务会验证该路径是否位于某个已配置根目录内,拒绝路径遍历(..),在重新检查路径是否位于根目录内之前解析符号链接和联接点,并通过关闭最近最少使用的程序集,将内存控制在预算内(默认 200 MB,--max-total-size <MB>)。
随后,工具调用会指定要检查的程序集:
find_types(assembly="C:\\path\\to\\dlls\\MyApp.dll", namespace="MyApp.Models")
list_allowed_roots 工具会显示已配置的根目录,供 Agent 发现可访问的内容。
请注意:首次安装需要完全重启,而不只是开启新会话。 Windows 会在进程启动时为其设置 PATH,因此如果
ilens是用户 PATH 中全新添加的条目(首次通过 winget 进行便携版安装,或运行任何install.ps1时都是如此),已经运行的 Claude 应用会持有过期的环境变量。Claude Code 只会在会话开始时读取.mcp.json,因此任何正在运行的会话也都尚未注册新服务。操作步骤:完全关闭 Claude 应用 → 安装 ILens → 重新启动 Claude 应用 → 在重新启动的应用中开启新的 Claude Code 会话。Claude 应用重启后,恢复的会话仍会保留旧环境,因此无法找到ilens。后续运行winget upgrade Tadis.ILens不会更改 PATH;只需开启新的 Claude Code 会话即可。
步骤 2:不读取服务说明的客户端
客户端连接时,ILens 会向其发送 MCP 服务说明:介绍 ILens 的用途、可以读取哪些目录,以及哪个工具能回答哪个问题。Claude Code 会在每次会话开始时读取这些说明,无论是在终端还是 Claude 桌面应用的 Code 选项卡中都是如此,因此使用 Claude Code 时,步骤 1 就是全部配置。
Claude Desktop 的聊天功能不会读取服务说明。对于它以及任何其他不读取服务说明的客户端,请将下面这段文字添加到客户端的说明中,并将 <allow-root> 替换为上面配置的目录。它没有指定任何工具,因此即使某个版本重命名或合并了工具,这段文字仍然有效:
## Inspecting .NET assemblies
Assemblies under `<allow-root>` are reachable through the `ilens` MCP server.
Prefer its tools over running `ildasm` or `ilspycmd` in a shell, reading
assembly files directly, or searching the web for source.
如果项目的 CLAUDE.md 或客户端说明中包含早期 ILens README 要求粘贴的内容,请将其删除:其中提到的工具已不存在。不读取服务说明的客户端应改用上面这段文字。
完整参考
一份自包含的 HTML 用户指南涵盖了本 README 未介绍的内容:
- 各工具参考——每个工具、每个参数(含
required/optional标记和类型)、返回结构,以及完整的错误情况列表 - 其他集成方式——
claude mcp addCLI 命令、Claude Desktop 配置 - 安全模型——强制执行的规则(必须使用
--allow-root、禁止路径遍历、禁止网络访问、200 MB 内存预算、只读)以及未强制执行的规则 - 故障排除——错误字符串与可能原因的对应关系
在线阅读:https://tadis174.github.io/ILens/guide.html;也可以打开发布 ZIP 中附带的 guide.html。
从源代码构建
如果你希望自行构建二进制文件:
dotnet build -c Release
dotnet publish -c Release
发布目标会生成 Build/dist/ILens.exe,以及 LICENSE、README.md、guide.html 和 third-party-licenses/。发布前工作树必须干净,并且 Build/doc/guide.html 必须存在(运行项目的 /doc 技能重新生成)。
许可证
ILens 根据 MIT License 发布。第三方依赖记录在 third-party-licenses/INDEX.md 中,每次发布都会附带该文件以及各来源的许可证文本。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。