"I built a lying MCP server on purpose — here's how you catch it"
TL;DR — A server's README can say anything. Its tools/list response either backs that up or it doesn't. I built mcp-worse — a second binary, sharing two of mcp-better 's tool names, that deliberately omits the list-cache stamps and serves tools in the wrong order — so a test could prove the difference. That test is contrast-smoke : one command, real MCP clients, real wire traffic. Exit code 0…
The author created a malicious version of a system called MCP server, named mcp-worse. This server intentionally violates the protocol's claims of having a cache-stamped, ordered list of tools and matching cache-scope. The purpose was to test a tool called contrast-smoke, which compares the behavior of legitimate and malicious MCP servers by running both as separate processes and examining their wire traffic. mcp-worse serves as a "liar" that reliably violates the contract, allowing contrast-smoke to prove whether it can detect such violations.
The test confirms that the contract exists, even if it's not being followed, and that the checker can identify when a server is lying. This method doesn't provide security scanning or fuzzing capabilities, but rather focuses on a specific, well-defined claim in the protocol.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.