Case Study · Engineering
Case Study: One MCP Server, Three AI Clients
How an internal platform team wrapped their admin API as an MCP server — Claude Desktop, Cursor, and a custom support bot shared the same tools.
Results
Tools exposed via MCP
12
Client integrations
3
Support lookup time
-62%
Duplicate integration code removed
~800 LOC
Background
Paylane's internal admin API powered support lookups, refund status, and feature flags. Three teams built separate Claude integrations with duplicate HTTP glue.
The problem
- 800+ lines of duplicated tool wiring
- Inconsistent auth and logging
- New API endpoints took 3 client updates
They followed Build an MCP Server from Your API.
Architecture
MCP server (TypeScript, VPC)
→ Tools: get_account, list_invoices, refund_status,
feature_flags, search_transactions (read-only)
→ mutating: issue_credit (dry_run default true)
→ Auth: service JWT, per-caller rate limits
→ Logs: Langfuse tool spans
Clients:
→ Claude Desktop (support)
→ Cursor (engineering incidents)
→ Custom Slack bot (same MCP over HTTP SSE)
Rollout
| Week | Milestone |
|---|---|
| 1 | 6 read-only tools, Claude Desktop pilot |
| 2 | Cursor + Langfuse tracing |
| 3 | Slack bot, mutating tools behind dry_run |
| 4 | Deprecate old custom integrations |
Results
| Metric | Before | After |
|---|---|---|
| Support median lookup time | 8 min | 3 min |
| New endpoint client updates | 3 codebases | 1 MCP tool |
| Duplicate tool code | ~800 LOC | 0 |
Mutating tool policy
issue_credit shipped with dry_run: true default. Agent proposes action; human confirms in admin UI. Matches human-in-the-loop pattern.
July 2026 context
Zapier MCP beta and Dify MCP import landed the same month — external platforms caught up to patterns internal teams shipped in Q2. See July automation changelog.
Takeaway
MCP pays off when the same internal capabilities must work across multiple AI clients. Start read-only, instrument in Langfuse, add mutating tools with dry_run. Blueprint: MCP server workflow.
Lessons learned
- 01
Read-only tools shipped week one; mutating tools needed dry_run flag and approval.
- 02
OAuth to internal API from MCP server — not embedding keys in Claude config.
- 03
Tool descriptions mattered more than prompt tuning for correct tool selection.
- 04
Rate limits on admin API applied to agents too — added per-user quotas.
- 05
Langfuse traced tool calls across all three clients with one instrumentation layer.
Frequently asked questions
Related on AIKnowHub
Concept
MCP Explained
The Model Context Protocol is the USB-C of AI tooling. Here's what it is, why it matters, and how to think about it.
Workflow
Build an MCP Server from Your API
Wrap your REST or GraphQL API as an MCP server so Claude Desktop, Cursor, and any MCP client can call it — write once, use everywhere.
Concept
Automation Tools Changelog — July 2026
Monthly roundup of AI automation platform updates for July 2026 — n8n, Zapier, Dify, Flowise, Pipedream, and practical picks.
Tool Guide
Langfuse Guide
The definitive guide to Langfuse for LLM observability — traces, prompt versions, evals, cost tracking, self-host setup, and when to pick it over Braintrust or Phoenix.
Directory
Langfuse
Open-source LLM observability — traces, evals, prompt versioning, and cost dashboards for production AI apps.
Tool Guide
Claude Code Guide
The definitive guide to Anthropic's terminal-native AI coding agent — install, configure, MCP, hooks, skills, sub-agents, plan mode, cost, security, limitations.