Urgent.News

One page, thousands of outlets. See who else covered it.

Editions

Tech

"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.

Read the original at dev.to →

More in Tech

Spring proxies: JDK dynamic vs CGLIB

You put @Transactional on a method and a database transaction opens before it runs and commits when it returns — yet you never wrote a line to start or end one.

  • Spring uses proxies to add cross-cutting concerns like transactions and caching
  • JDK dynamic proxy generates object at runtime with interfaces, requires bean to have interface
  • CGLIB proxy creates subclass of real class at runtime, overrides methods for extra functionality

More from Monday 17 August →