← Blog

How to Add a Health Badge to Your MCP Server README

By admin · Mar 13, 2026 · 4 min read

If you maintain a public MCP server — on GitHub, in an MCP registry listing, or just shared internally — a health badge in your README is one of the cheapest trust signals you can add. It takes a couple of minutes and it answers the first question any developer has before wiring your server into their agent: does this thing actually work right now?

What a health badge should actually check

Before picking a badge provider, it's worth being clear on what the badge represents. A badge that just checks "is port 443 open" or "did the process return any HTTP response" isn't telling anyone much — an MCP server can be fully reachable and still be broken for real clients.

A badge worth putting in a README should reflect:

  1. Whether the initialize handshake completes successfully
  2. Whether tools/list returns without error
  3. Whether the returned tool schemas match what was previously observed (i.e., no undetected drift)

If your badge only checks the first of those, it can go green while your tool contracts quietly change underneath your users.

The basic markdown pattern

Most badges are just an image linking back to a status page. The pattern in a README looks like this:

[![MCP Server Status](https://img.shields.io/badge/mcp--status-dynamic-url-here)](https://your-status-page-url)

If you're using a badge service that generates a dynamic SVG (rather than a static shields.io badge you have to manually update), the URL points at an endpoint that re-renders on every request based on the latest check result. That's the important distinction: a badge is only useful if it's live, not a snapshot from whenever you happened to add it.

Option 1: Build it yourself

A rough version of this is straightforward to assemble:

This is entirely doable, but it's also the kind of infrastructure that's easy to let rot. The job silently stops running, or nobody updates the diff logic when you add a new tool, and six months later the badge is green out of habit rather than because anything is actually being checked.

Option 2: Use a service built for MCP

If you'd rather not maintain that plumbing, a service purpose-built for MCP monitoring handles the handshake, the schema diffing, and badge rendering for you. MCP Vitals, for example, runs the real initializetools/list handshake against your server on a schedule, flags schema drift automatically, and gives you a badge snippet to drop straight into your README — so the green checkmark actually means something and stays current without extra maintenance on your end.

Placement and framing

A few practical notes on where and how to add it:

Keep it honest

The worst outcome is a badge that's technically still there but no longer connected to anything real — a static image that says "healthy" because someone hardcoded it during setup. If you can't commit to keeping the underlying check running, it's better to have no badge than a stale one; a badge that turns out to be fake trust is worse for your reputation than not having one at all.

Done right, though, it's a small addition that gives every visitor to your repo an honest, at-a-glance answer — and saves you from fielding "is your server down?" messages that a badge could have answered on its own.

Monitor your MCP server — free

Real handshake checks, tool-schema drift detection, and a public health badge in 60 seconds.

Start free