Yves Habchy

What actually happens when you install an MCP server in 2026

By Yves Habchy · August 2026

What: About a third of the time I install a new MCP server, the install goes wrong. Usually silently. The tool doesn't show up in the session, the schema gets rejected on first call, or the process just exits before the handshake finishes.

Why: The cost is time. When an install breaks, you don't find out until you notice the agent seems dumber than yesterday. Then comes the log dive, cross-referencing the client's docs, testing three config variations.

Every server puts a first-time installer through this. Across the ecosystem, that's a lot of hours going into puzzle-solving that a one-second pre-install check would prevent.

Where: Mid-2026, the MCP ecosystem has thousands of servers across six-plus public registries. Anyone can publish. Admission requires proof of GitHub repo or domain ownership, nothing else. Whether the server actually works when you install it is a separate question, and nobody checks it.

Who: Two audiences. Individual developers running any MCP host who install new MCP servers, and maintainers publishing servers to the public registries. Installers hit the failures. Maintainers ship them. Same audit works for both, as a pre-flight check on one side and a pre-release check on the other.

What I built

mcp-audit is a small open-source CLI I built after the fifth or sixth silent install failure. Install with pip install mcp-server-audit. It runs four checks against a server before you add it to your config:

  • Handshake sanity. Server starts, responds to initialize within timeout, shuts down cleanly on stdin close.
  • Descriptor well-formedness. Initialize response has protocolVersion, serverInfo, capabilities. Every tool, resource, and prompt entry has its required fields.
  • Capability-declaration consistency. Declared capabilities match what list calls actually return. Flags declared-but-not-implemented and implemented-but-not-declared.
  • Tool schema validity. Each declared tool's inputSchema and outputSchema is well-formed JSON Schema Draft 2020-12 per meta-validation.

Code: github.com/Yveshby27/mcp-server-audit.

The ask

If you maintain a public MCP server, run mcp-audit against your own server before your next release. What it flags for you, a first-time installer will also hit. Issues welcome, especially failure modes the four checks miss.

Also possible: silent install failures aren't as common as ~1/3, or the four checks miss more than they catch. If that's the answer, that's the most useful thing I could hear.

My LinkedIn and email are below if you're interested.

Or, if you're not ready to reach out

Drop your email as a signal that this pain is real for you, plus a message if you want to say more. Enough signals and this becomes worth building. Might reach back out if this goes somewhere worth talking about.

More detail

Verbatim quotes and sources from the research.

"We analyze 67,057 servers across six public registries and identify widespread conditions enabling server hijacking and invocation manipulation. We further implement MCPInspect, a pre-integration analysis tool that detects misleading tool metadata and exploitable code vulnerabilities, identifying 833 vulnerable servers and 18 with suspicious descriptions."

Xiaofan Li, Xing Gao (University of Delaware, DSN 2026). arxiv 2510.16558.

67,057 servers is enough to say this isn't an anomaly hunt. The 833 vulnerable servers and 18 with suspicious tool descriptions were sitting in production registries when Li and Gao pulled them, discoverable by any installer who happened to pick one. Their MCPInspect works at pre-integration analysis time; mcp-audit works at install time with narrower scope.

"5.5% exhibit MCP-specific tool poisoning [...] 7.2% of servers contain general vulnerabilities [...] 66% exhibit code smells [...] 14.4% contain ten bug patterns overlapping prior research."

The paper's headline stats: 66% code smells, 7% general vulnerabilities, 5.5% tool-poisoning. That last number is the one that matters most at install time. Poisoned tool metadata can steer the agent's behavior even when the rest of the server is otherwise fine, which means the install check has to look at the metadata itself, not just at whether the process runs.

"Failed to run server: No module named 'fitz'. Server transport closed unexpectedly, this is likely due to the process exiting early."

aayushrajj, modelcontextprotocol/servers#1836, 2025-05.

This is what silent failure looks like at the install side. The pip install succeeded and the server started. When the agent made its first tool call, the process died because a runtime dependency wasn't in the package. From the agent's perspective the tool just wasn't there. From the maintainer's perspective, CI probably passed.


LinkedIn DM or yves.habchy@gmail.com.


Other research notes →