My head canon for MCP resource vs tool

When learning about Model Context Protocol (MCP) I was confused about the reason for discriminating between a resource and a tool, isn’t a tool strictly more powerful?

What clarified it for me was putting it in terms of HTTP:

A resource is a GET request (stateless, URI only) while tool is a POST (possibly stateful, json payload)

Surprisingly I haven’t seen this analogy been made before, instead most discussion is around server-client control / responsibility. There might be more nuance here that I’m missing.


Similarly, for HTTP you could make the reductionist argument about http that we actually don’t need GET requests at all, since a POST is just a GET with payload. Yet we use GET everyday for most tasks.