Skip to content

NuGet.Mcp.Server 1.1.29 grows to 50+ GB RSS and is killed by kernel jetsam on macOS (C# Dev Kit pre-release only) #14854

@drewjohnston-0000

Description

@drewjohnston-0000

Summary

NuGet.Mcp.Server@1.1.29, auto-launched by the VS Code C# Dev Kit extension (ms-dotnettools.csdevkit / csdevkit.nuget-mcp provider), grew from zero to 50,522 MB resident (≈49.3 GB) in roughly 5 hours on Apple M4 silicon, exhausted physical RAM and the compressor, and was killed by the XNU jetsam mechanism as the system's largestProcess at the moment of OOM.

Scope: this reproduces only on the pre-release channel of C# Dev Kit (3.11.200). After switching to the current stable channel (3.10.14) and reloading, MCP: List Servers no longer lists a NuGet server at all — the csdevkit.nuget-mcp provider is absent from stable, so the leak cannot be triggered there. The NuGet MCP integration appears to be pre-release-only today.

Environment

  • Host: Apple M4 silicon
  • OS: macOS 26.3.1 (build 25D2128)
  • Kernel: Darwin 25.3.0, xnu-12377.91.3~2/RELEASE_ARM64_T6041, arm64
  • VS Code: VS Code Insiders (coalition com.microsoft.VSCodeInsiders)
  • C# Dev Kit: ms-dotnettools.csdevkit 3.11.200 (pre-release channel) — extension-contributed MCP provider csdevkit.nuget-mcp. Stable channel 3.10.14 does not ship this provider.
  • MCP server package: NuGet.Mcp.Server@1.1.29 (current latest on nuget.org is 1.2.3)
  • Launch line:
  dnx NuGet.Mcp.Server@1.1.29 --source https://api.nuget.org/v3/index.json --yes
  • Runtime: .NET 10 Preview 6 (required for dnx)

Reproduction scope

C# Dev Kit channel Version csdevkit.nuget-mcp provider MCP: List Servers shows NuGet? Reproduces leak?
Pre-release 3.11.200 present yes yes (this report)
Stable 3.10.14 absent no — only pylance, GitKraken, Context7 no — provider not present

Switching from pre-release 3.11.200 → stable 3.10.14 and running Developer: Reload Window was sufficient to make the NuGet MCP server disappear from the list entirely. Stable users are unaffected today because the provider isn't there.

Timeline

All times local (+0700). Derived from macOS diagnostic reports in /Library/Logs/DiagnosticReports/.

When Event
2026-04-10 21:17 First appearance of NuGet.Mcp.Server in any diagnostic report under coalition com.microsoft.VSCodeInsiders.
2026-04-10 21:20 Second cross-reference in a WindowServer cpu_resource.diag.
2026-04-10 21:31 Third reference in signpost_reporter cpu_resource.diag.
2026-04-11 00:26:11 JetsamEvent: kernel runs out of memory and kills the largest process. NuGet.Mcp.Server is recorded as largestProcess.
2026-04-11 ~10:38 Force-reboot after the desktop locked up in "application memory" dialogs.

Growth rate: ~0 → 50.5 GB in roughly 5 hours, i.e. approximately 10 GB/hour.

Kernel memory state at the moment of the kill

From JetsamEvent-2026-04-11-002611.ips (page size 16 KiB):

Pool Pages Size
active 614,597 9.38 GB
wired 232,053 3.54 GB
anonymous 857,411 13.08 GB
inactive 612,190 9.34 GB
free 4,953 0.08 GB
compressor (segments) 1,625,637 24.81 GB
uncompressed (if expanded) 6,089,251 92.91 GB

Compressor was at 24.8 GB holding roughly 93 GB of data; free pages down to 79 MB.

Top processes at the moment of the kill

All units MB.

PID Resident Lifetime Max Process
24025 50,522.0 50,522.0 NuGet.Mcp.Server
1010 2,020.6 2,020.8 com.apple.Virtualization.VirtualMachine
0 1,129.2 1,129.6 kernel_task
86065 856.1 1,156.4 Microsoft Teams WebView Helper
2064 799.8 964.2 Code - Insiders Helper (Renderer)
2081 787.8 1,771.9 Code - Insiders Helper (Plugin)

Everything except NuGet.Mcp.Server is within normal bounds.

Kernel explicitly identifies the offender in the diagnostic header:

"largestProcess": "NuGet.Mcp.Server"

What I expect

NuGet.Mcp.Server should not grow unbounded. A 10 GB/hour leak on an idle MCP server is a regression I would expect maintainers to want to investigate. Happy to share the full JetsamEvent .ips file privately (it contains user paths so I'd rather not paste it inline).

Questions

  1. Is there a known memory leak in NuGet.Mcp.Server 1.1.29 (pinned by C# Dev Kit pre-release 3.11.200) that has already been addressed in 1.2.x?
  2. Is the csdevkit.nuget-mcp provider intentionally pre-release-only right now, or is it supposed to land in stable soon?
  3. Would the NuGet team prefer this tracked here, or on microsoft/vscode-dotnettools (where the version pin and provider shipping decisions live)?

Mitigations / workarounds

  • Switch C# Dev Kit to the stable release channel (3.10.14) — verified working. The stable build does not ship the csdevkit.nuget-mcp provider, so no NuGet MCP server is ever registered or launched.
  • For users who need to stay on pre-release: Command Palette → MCP: List Servers → NuGet → Disable, then Developer: Reload Window.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Product:MCPServerThe Model Context Protocol (MCP) ServerType:BugWaitingForCustomerApplied when a NuGet triage person needs more info from the OP

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions