mcpField
I
ILens

ILens

本地服务
tadis174.github.io开发工具34 天前更新

关于 ILens

ILens 是面向 Agent 和开发者的 Windows MCP 服务,用于检查已编译的 .NET 程序集。它提供定向元数据查询、C# 反编译和交叉引用分析,避免倾倒整个文件。

主要功能

  1. 01列出类型和成员
  2. 02按名称查找方法
  3. 03反编译单个方法
  4. 04分析调用方、重写、实现和属性用法
  5. 05将程序集访问限制在允许目录内

适用场景

  1. 01查看命名空间中的公开类型
  2. 02检查类 API 而不读取方法体
  3. 03追踪方法的调用方或实现
  4. 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 tokensfind_types1,109 tokens
查看一个中等大小类的 API 表面1,041,476 tokenslist_members562 tokens
查找哪些类型公开了给定方法1,041,476 tokensfind_methods526 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 add CLI 命令、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 中,每次发布都会附带该文件以及各来源的许可证文本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。