MCP With No Shadows: Adopting MCP Without Rebuilding Your Stack
Every team adopting MCP eventually hits the same fork in the road: reimplement your business capabilities as an MCP server, or expose what you already have through one.
The first path feels faster on day one. It's also how a second, hidden application — a shadow of the one you already trust — gets built without anyone deciding to build it.
This series is about the second path: what actually breaks when MCP adoption goes wrong, and the concrete architecture that avoids it. Four posts, one throughline —
MCP is a contract, not a server. Your API stays the authority.
Read the series
- How to Adopt MCP Without Creating Technical Debt — start here. The enterprise constraints (security, auth, compliance, deployment) that MCP enthusiasm tends to skip past, and what changes when you design for them from day one.
- MCP Shadow Implementations: Why Duplicated Business Logic Breaks Trust — the specific failure mode: an MCP server that reimplements what your API already does, and quietly drifts from it. What a shadow implementation costs, and how to keep MCP transparent instead.
- The Hidden Scaling Problem in MCP — And How to Fix It — MCP standardizes discovery and interaction. It doesn't standardize implementation discipline. What breaks once one integration becomes hundreds.
- 3-Legged OAuth2 for MCP Apps — the authorization-code + PKCE flow that secures MCP apps for clients like ChatGPT and Claude, and how to keep token handling anchored to your existing identity model instead of inventing a second one.
Who this series is for
Teams past the demo stage — where an MCP server already works locally, and the next questions are the ones that actually determine whether it survives production: who owns it in a year, what happens when the underlying API changes, and whether the auth model holds up outside a sandbox.
Related reading
This series shares its core thesis — APIs are the durable contract, MCP is an interface to it — with two other places on this blog:
- API-first vs. MCP-first and its practical follow-ups, From OpenAPI to MCP to AI Agent and MCP Elicitation Is a Symptom, Not a Strategy, work through the same idea hands-on: turning a real OpenAPI spec into a live MCP server and agent prompt, and treating a chatty tool design as a signal to fix the contract instead.
- AI Made Code Cheap. Ownership Is Still Expensive. makes the economic version of this series' argument: generating an MCP implementation per API is nearly free with AI, and owning all of them for the next five years isn't.
- Stateless MCP Servers the Enterprise Way covers the architectural sibling to "no shadows" — why the MCP layer itself shouldn't hold state your business systems already own.
Different entry points, same architecture underneath it.

