MemoryLens MCP
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
On-demand .NET memory profiling with concrete, AI-actionable code fix suggestions — no profiler to install.
---
Hosted deployment
A hosted deployment is available on Fronteir AI.
Quick Start
npx (any MCP client)
The npm package ships no server code — it is a launcher that installs the MemoryLens.Mcp .NET
global tool at a matching version and execs it, so the **.NET 10 SDK must be on PATH**.
Subsequent starts skip the install entirely and work offline.
VS Code / Visual Studio (via dnx)
Add to your MCP settings (.vscode/mcp.json or VS settings):
Claude Code Plugin
.NET Global Tool
Docker
Profiling from a container needs ptrace and the host PID namespace, and on
Docker Desktop that namespace is the Linux VM rather than your desktop — see
docs/docker.md before choosing this route.
-v /tmp:/tmp is what makes list_processes return anything — the runtime's
diagnostic sockets live in the temp directory — and it is also what keeps
snapshots alive after --rm, since they are written to
/tmp/memorylens-snapshots inside the container. -v "$PWD:/workspace" is only
so .memorylens.json is picked up; nothing is written there.
Prerequisites
- .NET 10 SDK, 10.0.4xx feature band (pinned in global.json)
Running a filtered subset of the tests, e.g. dotnet test --filter , will exit with code 9
and print error: 1, failed: 0. That's the test project's discovery-collapse guard
(--minimum-expected-tests) firing because the filter left fewer tests than expected — it is
not a test failure, and a full dotnet test run is unaffected.
How Collection Works
MemoryLens collects heap data **in-process** over EventPipe, the .NET runtime's built-in diagnostics channel. There is no profiler to install, no download on first use, and no external tool on PATH.
snapshot attaches to a running .NET process by pid, induces a collection, and aggregates the heap into per-type counts and sizes. Snapshots are written as small JSON files under your temp directory and referenced by a short id.
On Linux and in containers, attaching to another process's diagnostic endpoint may require matching UID or SYS_PTRACE — see docs/docker.md.
Available MCP Tools
| Tool | Description |
|------|-------------|
| list_processes | Lists running .NET processes available for profiling, discovered from their diagnostic IPC endpoints |
| snapshot | Captures a single memory snapshot of a target process |
| compare_snapshots | Captures two snapshots with configurable delay and compares them |
| analyze | Runs the rule engine against a captured snapshot and returns findings |
| get_rules | Lists all available analysis rules with their metadata |
Built-in Rules
| ID | Severity | Category | Description |
|----|----------|----------|-------------|
| ML001 | critical | leak | Event handler leak detected |
| ML002 | critical | leak | Static collection growing unbounded |
| ML003 | high | leak | Disposable object not disposed |