
Don’t Break the App Team: How MCP Grows Into Shared Services (Without Killing Momentum)
- Mark Kendall
- 22 hours ago
- 3 min read
Don’t Break the App Team: How MCP Grows Into Shared Services (Without Killing Momentum)
Intro
Right now, at the app team level… things are working.
Claude Code + MCP
Local workflows
Dev-owned automation
It’s fast. It’s useful. It’s real.
So let’s be clear:
We are not trying to replace that. We’re trying to extend it.
Because eventually, local hits a ceiling.
Not because it’s wrong—but because the enterprise shows up.
What We’re Seeing (From the App Team Seat)
From where I sit:
Teams are building real MCP-driven workflows
AI is helping deliver actual outcomes
Developers are moving faster than ever
But we also know what’s coming:
The same problem solved five different ways
Different integration patterns across teams
Security and governance showing up late
Rework that didn’t need to happen
And we’ve all lived that before.
The Mistake to Avoid
This is where things usually go sideways.
Shared services comes in and says:
“Stop what you’re doing”
“Use this instead”
“Route everything through us”
And just like that:
Momentum dies. Adoption drops. Workarounds begin.
That’s not the move.
The Right Approach: Plug In—Don’t Take Over
Instead of replacing local MCP:
Shared services should plug into it.
Not above it.
Not instead of it.
Into it.
The Evolution (Simple and Real)
Step 1 — Local First (What’s Working Today)
Dev writes code
Uses Claude Code
Uses MCP locally
Solves the problem
👉 This works. Leave it alone.
Step 2 — Add Lightweight Intent (Clarity, Not Process)
We start capturing just enough structure:
What are we doing?
What system is involved?
Any constraints?
Example:
intent: update-customer
system: salesforce
region: us
👉 Still local. Still fast. Just clearer.
Step 3 — Add an Optional Shared Services Hook (This Is the Key)
Now we introduce a hook, not a mandate.
If needed, the flow can call:
A shared MCP endpoint
A gateway
A shared service
But:
Local still works without it.
Enterprise value shows up when you use it.
Step 4 — Orchestration Arrives (When It’s Ready)
Now an orchestration engine (like W-E-G-A) can:
Accept intent
Route it correctly
Apply enterprise patterns
Coordinate across systems
But here’s the difference:
It doesn’t replace the developer.
It removes what the developer shouldn’t have to decide.
What This Looks Like in Practice
Without Shared Services
The developer decides:
Which system to call
How to integrate
What pattern to use
Result:
Fast
But inconsistent
With Shared Services (Done Right)
The developer still writes:
intent: create-order
domain: commerce
But now:
Routing is handled
Patterns are reused
Governance is built in
Result:
Same speed
Way more consistency
The Line We Don’t Cross
This matters.
We do not take control away from the app teams.
We:
Don’t block local workflows
Don’t force early adoption
Don’t centralize development
We earn adoption by making things easier.
Where Orchestration Engines Actually Fit
Not at the beginning.
Not as a replacement.
But as the next layer up.
They exist to:
Reduce repeated decisions
Standardize integration patterns
Coordinate across systems
Not to:
Slow teams down
Redefine how developers build
Replace working solutions
Why This Model Works
Because we’ve seen both extremes fail:
❌ Pure Local
Fast
Doesn’t scale
❌ Over-Centralized
Controlled
Doesn’t get adopted
✅ This Model
Local stays fast
Shared services add value
Orchestration grows naturally
Key Takeaways
Don’t break what’s already working
MCP should start local—and stay local-first
Shared services must be optional, then valuable, then inevitable
Orchestration should remove decisions—not add friction
Adoption must be earned, not forced
Comments