mcpField
M
memorylens-mcp

memorylens-mcp

本地服务
github.com/MarcelRoozekrans开发工具111 天前更新

关于 memorylens-mcp

MemoryLens MCP 为 .NET 开发者提供按需内存分析,通过运行时的 EventPipe 诊断通道从运行中的进程收集堆数据。其分析规则可识别内存问题并提供可执行的代码修复建议,无需安装分析器。

主要功能

  1. 01通过 EventPipe 在进程内采集堆快照
  2. 02列出可用的 .NET 进程
  3. 03按可配置间隔比较快照
  4. 04按严重级别进行规则分析
  5. 05使用 .memorylens.json 自定义规则

适用场景

  1. 01检查运行中 .NET 应用的堆使用情况
  2. 02比较工作负载前后的内存
  3. 03调查疑似泄漏或对象滞留
  4. 04查看分析规则并调整严重级别

MCP 相关

向 MCP 客户端提供进程发现、快照采集与比较、分析和规则列表工具。可通过 npx、dnx、.NET 全局工具或 Docker 以 stdio 模式启动。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmmemorylens-mcp2.1.2
nugetMemoryLens.Mcp2.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

GitHub 赞助者

MemoryLens MCP

MemoryLens MCP

NuGet NuGet 下载量 npm 构建状态 codecov 许可证

按需进行 .NET 内存分析,并提供具体、可供 AI 采取行动的代码修复建议——无需安装分析器。

memorylens-mcp MCP 服务

托管部署

可通过 Fronteir AI 使用托管部署。

快速开始

npx(任意 MCP 客户端)
{
  "mcpServers": {
    "memorylens": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "memorylens-mcp"]
    }
  }
}

npm 包不包含任何服务端代码——它是一个启动器,会安装匹配版本的 MemoryLens.Mcp .NET 全局工具并执行它,因此 必须将 .NET 10 SDK 添加到 PATH。 后续启动会完全跳过安装,并可离线运行。

VS Code / Visual Studio(通过 dnx)

将以下内容添加到 MCP 设置(.vscode/mcp.json 或 VS 设置):

{
  "servers": {
    "memorylens": {
      "type": "stdio",
      "command": "dnx",
      "args": ["MemoryLens.Mcp", "--yes"]
    }
  }
}
Claude Code 插件
claude install gh:MarcelRoozekrans/memorylens-mcp
.NET 全局工具
dotnet tool install -g MemoryLens.Mcp
Docker
docker build -t memorylens-mcp .
docker run -i --rm --pid=host --cap-add=SYS_PTRACE \
  -v /tmp:/tmp \
  -v "$PWD:/workspace" memorylens-mcp

在容器中进行分析需要 ptrace 和主机 PID 命名空间;而在 Docker Desktop 上,该命名空间属于 Linux 虚拟机,而非你的桌面系统。选择这种方式前,请参阅 docs/docker.md。

-v /tmp:/tmp 是让 list_processes 返回内容的关键——运行时的 诊断套接字位于临时目录中;它也能确保在 --rm 后快照仍然保留,因为快照会写入 容器内的 /tmp/memorylens-snapshots。-v "$PWD:/workspace" 仅用于 读取 .memorylens.json;不会向此目录写入任何内容。

先决条件

  • .NET 10 SDK,10.0.4xx 功能带(在 global.json 中固定)

运行筛选后的部分测试(例如 dotnet test --filter <name>)时,将以代码 9 退出, 并打印 error: 1, failed: 0。这是测试项目的发现折叠保护机制 (--minimum-expected-tests)触发所致,因为筛选后剩余的测试数量低于预期—— 这并不表示测试失败,也不影响完整的 dotnet test 运行。

工作原理

MemoryLens 通过 EventPipe 在进程内收集堆数据。EventPipe 是 .NET 运行时内置的诊断通道。无需安装探查器、首次使用时无需下载,也不依赖 PATH 中的外部工具。

snapshot 根据 pid 附加到正在运行的 .NET 进程,触发一次垃圾回收,并将堆数据汇总为各类型的对象数量和大小。快照会以小型 JSON 文件的形式写入临时目录,并通过一个短 ID 引用。

在 Linux 和容器中,附加到其他进程的诊断终结点可能需要匹配 UID 或 SYS_PTRACE——请参阅 docs/docker.md。

可用的 MCP 工具

工具描述
list_processes列出可供分析的正在运行的 .NET 进程,这些进程通过其诊断 IPC 终结点发现
snapshot捕获目标进程的单个内存快照
compare_snapshots按可配置的延迟捕获两个快照并进行比较
analyze对已捕获的快照运行规则引擎并返回分析结果
get_rules列出所有可用分析规则及其元数据

内置规则

ID严重性类别描述
ML001criticalleak检测到事件处理程序泄漏
ML002criticalleak静态集合持续增长且没有上限
ML003highleak可释放对象未释放
ML004highfragmentation大对象堆碎片化
ML005mediumretention对象保留时间超过预期
ML006mediumallocation热路径中分配过多
ML007mediumretention闭包保留了意料之外的引用
ML008lowallocation数组/列表扩容时未提供容量提示
ML009lowpattern终结器未采用 Dispose 模式
ML010lowpattern存在字符串驻留的机会

配置

在项目根目录中创建 .memorylens.json 文件,以自定义规则行为:

{
  "rules": {
    "ML001": { "enabled": true, "severity": "critical" },
    "ML002": { "enabled": true, "severity": "critical" },
    "ML003": { "enabled": true, "severity": "high" },
    "ML004": { "enabled": true, "severity": "high" },
    "ML005": { "enabled": true, "severity": "medium" },
    "ML006": { "enabled": true, "severity": "medium" },
    "ML007": { "enabled": true, "severity": "medium" },
    "ML008": { "enabled": true, "severity": "low" },
    "ML009": { "enabled": true, "severity": "low" },
    "ML010": { "enabled": true, "severity": "low" }
  }
}

使用示例

单个快照

捕获正在运行的进程的内存快照,以检查当前内存状态:

> /memorylens
> Take a snapshot of my running API (PID 12345)

Claude 会使用目标 PID 调用 snapshot,然后对返回的快照 ID 调用 analyze,并按严重性排序呈现分析结果。

前后对比

通过比较间隔一段时间捕获的两个快照,检测内存增长:

> /memorylens
> Check if my app has a memory leak — compare before and after processing 1000 requests

Claude 会调用 compare_snapshots,并在两次捕获之间设置 delaySeconds 值(默认为 10 秒),然后分析差异,以识别在两个快照之间增长的对象。

同系列项目

MemoryLens MCP 属于一个面向 AI 工作的小型 .NET 项目系列:

  • AI.Sentinel:面向 IChatClient 的安全监控中间件:提示词注入、幻觉和 PII 检测,并提供审计跟踪。
  • Minos.NET:带类型、由源代码生成的决策问题,并提供经过校准的答案。
  • Rag.NET:基于 Microsoft.Extensions.AI 的模块化检索增强生成管道。
  • Roslyn CodeLens MCP:通过 MCP 为 AI Agent 提供语义级 .NET 代码智能。

基于 ZeroAlloc 构建

MemoryLens MCP 使用这些 ZeroAlloc 库。它们是源代码生成器和分析器,运行时无需反射:

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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