An MCP server is the running process that exposes tools, resources and prompts to AI clients, separate from the protocol specification itself 2. Because it sits between the agent and your backend, it is the last place where you can see both who is asking and what they are asking for before the request costs you anything.
Teams usually get authentication and logging right first. Authorization in MCP follows OAuth 2.1 conventions and is recommended when you want per-user usage tracking or rate limiting 15. That sentence is the hinge: rate limiting is a reason to do authorization properly, because without a stable identity you have nothing to key a budget on.
MCP servers can run locally over stdio or remotely over Streamable HTTP, and the remote transport supports standard HTTP authentication methods 2. A shared internal server will almost always be remote, which is good news: you have a request boundary where a limiter can live.
The case for server-side enforcement is the same one security researchers make about tool safety in general. The specification says tools represent arbitrary code execution and that tool behavior described in annotations should be treated as untrusted unless it comes from a trusted server 11. More practically, the OWASP guidance on MCP tool poisoning says restrictions must be enforced server-side at the tool execution layer rather than relying on instructions 6. Quotas are the same class of control: a client that promises to be gentle is not a limit.
One more difference matters for design. MCP keeps a machine-readable capability surface that agents discover at runtime and supports stateful, streaming communication, including progress notifications pushed into the agent's context loop 1. That means a single tool call can be long running and can spawn follow-on calls. A limiter that only counts completed requests will undercount work in flight.



