<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh" -->

---
title: MCP Is Last-Mile Plumbing | daily.dev
description: MCP (Model Context Protocol) is best understood as last-mile plumbing — the final connector that lets an LLM reach a capability — not a replacement for...
canonical: https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: MCP Is Last-Mile Plumbing | daily.dev
og:description: MCP (Model Context Protocol) is best understood as last-mile plumbing — the final connector that lets an LLM reach a capability — not a replacement for...
og:url: https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh
og:image: https://api.daily.dev/og/posts/yv2tNkluH.png
og:image:alt: MCP Is Last-Mile Plumbing
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Is Last-Mile Plumbing

**[API Evangelist](https://daily.dev/sources/apievangelist)** · 6 min read · 45 upvotes · 8 comments

## Summary

MCP (Model Context Protocol) is best understood as last-mile plumbing — the final connector that lets an LLM reach a capability — not a replacement for foundational API infrastructure. Using a water system analogy: data is the reservoir, business logic is the treatment plant, REST/GraphQL APIs are the water mains, and MCP is the last few feet of pipe to the faucet. Building MCP servers without underlying real APIs means creating a single-consumer surface with no versioning, no reuse, and no governance story. The right approach is to build proper, versioned, documented APIs first, then layer a thin MCP server on top. This way governance is inherited from upstream OpenAPI contracts, and when the current agent trend fades, the real infrastructure remains intact and a new connector can be wired in quickly.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://apievangelist.com/2026/08/04/mcp-is-last-mile-plumbing>

## Questions this post answers

### Should I build an MCP server directly on my data or put a REST API underneath it first?

Build the REST or GraphQL API first, then layer a thin MCP server on top of it. An MCP server is a single-consumer surface reachable only by an LLM agent, with no versioning story or reuse across other clients, while a REST/GraphQL API serves the agent, mobile apps, partner integrations, and internal services alike. Treating MCP as the whole strategy creates a capability tied to a two-year-old protocol and shifting model behavior, with no durable contract underneath.

_Developers weighing MCP-first versus API-first architecture can track this kind of design debate on daily.dev._

### How does API governance work when exposing capabilities through an MCP server?

Governance should happen upstream in the OpenAPI contract, linting, and access decisions, so the MCP server simply inherits policies already enforced on the underlying API. When an MCP server is built without a governed API beneath it, governance becomes a scramble to bolt policy onto a surface after data is already flowing, which is much harder to retrofit than to design in from the start.

_Teams designing agent access policies can follow governance-first API approaches on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@trevorsuna** · 2 upvotes

> The “last-mile plumbing” framing is helpful because it keeps MCP in the right layer. A consistent connector is valuable, but capability design, permissions, reliability, and business rules still need solid APIs behind it.

**@agustinbarrientos** · 1 upvotes

> Some MCP strategies really do look like a garden hose with an annual report.

**@taiwofrancis** · 0 upvotes

> Build the API first, then let MCP expose it to agents. That just makes sense.

**@kartiknvj** · 0 upvotes

> Last-mile plumbing is a fair way to frame MCP. It solves the connection between the model and your tools, but it does not decide whether the tool call was the right one to make. I have found the protocol is the easy part and the judgment layer on top is where the real work sits.

## Similar posts on daily.dev

- [MCP is dead. Long live the CLI](https://daily.dev/posts/mcp-is-dead-long-live-the-cli-lmlswjqmz) · Hacker News · 2 upvotes · 0 comments
- [MCP vs Traditional API Architecture](https://daily.dev/posts/mcp-vs-traditional-api-architecture-malkkcd1z) · Daily Dose of Data Science \| Avi Chawla \| Substack · 1 upvotes · 0 comments
- [An engineer’s guide to Model Context Protocol \(MCP\)](https://daily.dev/posts/an-engineer-s-guide-to-model-context-protocol-mcp--tizisumto) · LeadDev · 0 upvotes · 0 comments
- [Seeing MCP](https://daily.dev/posts/seeing-mcp-vfi5ace0s) · API Evangelist · 16 upvotes · 0 comments
- [MCP for Technical Professionals: A Comprehensive Guide to Understanding and Implementing the Model Context Protocol](https://daily.dev/posts/mcp-for-technical-professionals-a-comprehensive-guide-to-understanding-and-implementing-the-model-c-xnb8mnykd) · Security Boulevard · 1 upvotes · 0 comments

---

Tags: [#llm](https://daily.dev/tags/llm), [#architecture](https://daily.dev/tags/architecture), [#mcp](https://daily.dev/tags/mcp), [#rest-api](https://daily.dev/tags/rest-api)

[View this post on daily.dev](https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"MCP Is Last-Mile Plumbing","url":"https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh"},"datePublished":"2026-08-04T01:33:58.698Z","dateModified":"2026-09-14T06:41:24.082Z","description":"MCP (Model Context Protocol) is best understood as last-mile plumbing — the final connector that lets an LLM reach a capability — not a replacement for...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d5d97b27d75ed9ac6b11e43559e19dff?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/d5d97b27d75ed9ac6b11e43559e19dff?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"API Evangelist","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"API Evangelist","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/a36244ae67bc4f41a605f780267ecb5f","url":"https://daily.dev/sources/apievangelist"},"commentCount":8,"discussionUrl":"https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":45},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":8}],"keywords":"llm,architecture,mcp,rest-api","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"API Evangelist","item":"https://daily.dev/sources/apievangelist"},{"@type":"ListItem","position":3,"name":"MCP Is Last-Mile Plumbing"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh","comment":[{"@type":"Comment","text":"The “last-mile plumbing” framing is helpful because it keeps MCP in the right layer. A consistent connector is valuable, but capability design, permissions, reliability, and business rules still need solid APIs behind it.","datePublished":"2026-08-04T05:05:17.858Z","url":"https://daily.dev/posts/yv2tNkluH#c-XYC0sFMjq","author":{"@type":"Person","name":"Trevor Suna","url":"https://daily.dev/trevorsuna","image":"https://media.daily.dev/image/upload/s--dZ7gXxpp--/f_auto/v1784081551/avatars/avatar_EMoP47rpuw8DNjhp6R1b6?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"Some MCP strategies really do look like a garden hose with an annual report.","datePublished":"2026-08-04T15:06:20.004Z","url":"https://daily.dev/posts/yv2tNkluH#c-ukcwtVL4x","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}},{"@type":"Comment","text":"Build the API first, then let MCP expose it to agents. That just makes sense.","datePublished":"2026-08-09T05:08:50.980Z","url":"https://daily.dev/posts/yv2tNkluH#c-OGarFmwRf","author":{"@type":"Person","name":"Taiwo Francis Oguntade","url":"https://daily.dev/taiwofrancis","image":"https://media.daily.dev/image/upload/s--px3_Pvo4--/f_auto/v1785515368/avatars/avatar_FStpm3ZejUD3qGlEeoOUS?_a=BAMAMicg0"}},{"@type":"Comment","text":"Last-mile plumbing is a fair way to frame MCP. It solves the connection between the model and your tools, but it does not decide whether the tool call was the right one to make. I have found the protocol is the easy part and the judgment layer on top is where the real work sits.","datePublished":"2026-08-05T19:11:29.939Z","url":"https://daily.dev/posts/yv2tNkluH#c-vb5cVQGIJ","author":{"@type":"Person","name":"kartik-nvjk","url":"https://daily.dev/kartiknvj","image":"https://media.daily.dev/image/upload/s--3gGgsVCw--/f_auto/v1781456774/avatars/avatar_TvTVeiMdkRCqWUDullFmy?_a=BAMAMiWQ0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/mcp-is-last-mile-plumbing-yv2tnkluh#faq","mainEntity":[{"@type":"Question","name":"Should I build an MCP server directly on my data or put a REST API underneath it first?","acceptedAnswer":{"@type":"Answer","text":"Build the REST or GraphQL API first, then layer a thin MCP server on top of it. An MCP server is a single-consumer surface reachable only by an LLM agent, with no versioning story or reuse across other clients, while a REST/GraphQL API serves the agent, mobile apps, partner integrations, and internal services alike. Treating MCP as the whole strategy creates a capability tied to a two-year-old protocol and shifting model behavior, with no durable contract underneath. Developers weighing MCP-first versus API-first architecture can track this kind of design debate on daily.dev."}},{"@type":"Question","name":"How does API governance work when exposing capabilities through an MCP server?","acceptedAnswer":{"@type":"Answer","text":"Governance should happen upstream in the OpenAPI contract, linting, and access decisions, so the MCP server simply inherits policies already enforced on the underlying API. When an MCP server is built without a governed API beneath it, governance becomes a scramble to bolt policy onto a surface after data is already flowing, which is much harder to retrofit than to design in from the start. Teams designing agent access policies can follow governance-first API approaches on daily.dev."}}]}
```

