mcp-server-fetch takes a URL and converts the HTML to markdown, which is exactly the
job. Its own README also warns that the server can access local and internal IP
addresses, that it “may represent a security risk,” and that you should be careful about
which sites you point it at.1 The caveat ships with the tool.
Research at the MCP layer keeps landing in the same place. Invariant Labs showed
tool-description poisoning, where a malicious server's tool description can influence
how a model uses tools from servers you trust, and later described a toxic agent flow
through the GitHub MCP server with no clean protocol-level fix. General Analysis showed
a Supabase MCP setup leaking data because of an instruction planted in a support
ticket.2
None of that is an argument against MCP, and we build on it. The gap is narrower. A
fetch tool hands the model content from an arbitrary domain, in the same context window
as your system prompt and whatever the agent is already holding, and by default nothing
inspects what is in it. Simon Willison's “lethal trifecta” names the combination that
turns that into a leak: an agent that holds private data, reads content it did not
write, and has some way to send data outward.3
What most developers want at that point is the same one-liner, without shipping the
caveat.