Healthie.NET.Mcp
3.1.3
Prefix Reserved
See the version list below for details.
dotnet add package Healthie.NET.Mcp --version 3.1.3
NuGet\Install-Package Healthie.NET.Mcp -Version 3.1.3
<PackageReference Include="Healthie.NET.Mcp" Version="3.1.3" />
<PackageVersion Include="Healthie.NET.Mcp" Version="3.1.3" />
<PackageReference Include="Healthie.NET.Mcp" />
paket add Healthie.NET.Mcp --version 3.1.3
#r "nuget: Healthie.NET.Mcp, 3.1.3"
#:package Healthie.NET.Mcp@3.1.3
#addin nuget:?package=Healthie.NET.Mcp&version=3.1.3
#tool nuget:?package=Healthie.NET.Mcp&version=3.1.3

Healthie.NET.Mcp
A Model Context Protocol server for Healthie.NET, so an AI agent such as Claude, Copilot, or Cursor can read your service health and act on it in plain language. Read-only until you say otherwise.
Installation
dotnet add package Healthie.NET.Mcp
Usage
using Healthie.Mcp;
builder.Services.AddHealthie(typeof(Program).Assembly);
builder.Services.AddHealthieMcp();
var app = builder.Build();
app.MapHealthieMcp(); // /healthie/mcp
app.Run();
Point an MCP client at http://localhost:5000/healthie/mcp and ask it what is unhealthy.
Tools
| Tool | Kind | Description |
|---|---|---|
get_health_states |
read | The current health of every monitored component. |
get_unhealthy_checkers |
read | Only the components that are unhealthy or suspicious. |
get_checker |
read | One component's health and configuration. |
get_check_history |
read | A component's recent run history, newest first, paged. |
run_check |
action | Runs a check now and returns the fresh result. |
reset_checker |
action | Clears a component's failure streak. |
Mutations Are Opt-In
The server exposes only the read tools by default. The two action tools appear when you ask for them, and anything that can reach the endpoint can then trigger checks -- so require authorization when you do:
builder.Services.AddHealthieMcp(options => options.AllowMutations = true);
app.MapHealthieMcp().RequireAuthorization();
Options
| Option | Type | Default | Description |
|---|---|---|---|
AllowMutations |
bool |
false |
Whether run_check and reset_checker are exposed. |
MaxHistoryPageSize |
int |
50 |
Caps how many history entries one get_check_history call returns. |
Transport
Served over Streamable HTTP, statelessly, so it scales out like any other endpoint in your app. The MCP C# SDK also supports a stdio host if you want an agent to run the server locally.
See Also
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Healthie.NET.Abstractions (>= 3.1.3)
- ModelContextProtocol (>= 1.4.1)
- ModelContextProtocol.AspNetCore (>= 1.4.1)
-
net8.0
- Healthie.NET.Abstractions (>= 3.1.3)
- ModelContextProtocol (>= 1.4.1)
- ModelContextProtocol.AspNetCore (>= 1.4.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
### Changed
- The dashboard now scrolls within its own board rather than the page, so its scrollbar is themed to
match the board -- a thin, rounded bar in the board's own line colour, on both the dark and light
themes -- instead of the platform's wide light-grey default running down the side of a dark tool.
The board owns a full-viewport (`100dvh`) scroll region, and a scroll that reaches its end no
longer drags the page behind an embedded board.
### Fixed
- The prerendered dashboard no longer risks dropping its own circuit on a board with much state.
3.1.1 carried the states from prerender to the interactive render by persisting them into the
page, which put the whole board -- every checker and all its history -- on the SignalR circuit.
That payload grows with each checker, and past SignalR's default 32 KB message limit the hub
rejects it and the circuit never starts: the board freezes on the prerendered snapshot, styled but
not live. The states now stay on the server between the two renders (Blazor Server holds them there
already) and only a short-lived token travels to the browser and back, so the wire cost is constant
whatever the size of the board. A token that no longer resolves falls back to a fresh read. No
SignalR limit needs raising, so no extra memory or denial-of-service exposure comes with it.
### Fixed
- The dashboard no longer flickers on load when it is prerendered. Hosted the usual
way -- `<HealthieDashboard />` on an interactive-server page, which prerenders by
default -- the server rendered the full board, then the circuit connected a moment
later and the component started again from an empty state, read every checker afresh,
and briefly replaced the board already on screen. In that gap a status icon, which the
dashboard stylesheet sizes against its surroundings, painted for a frame before those
rules applied and filled the board as one large ring. The states the prerender reads
are now carried across to the interactive render through `PersistentComponentState`,
so the first interactive render matches the prerendered one: nothing is replaced, no
frame shows an unsized icon, and the redundant second read of every checker is gone.
Full changelog: https://github.com/ivanvyd/Healthie.NET/blob/v3.1.3/CHANGELOG.md