Type “build MCP server” into Google and you get a flood of tutorials. FastMCP this. Cloudflare Workers that. Quickstarts from Anthropic, Microsoft, OpenAI, Google Cloud, every framework with a stake in the protocol. The tooling is genuinely good. The protocol is well-designed. Building one is easier than it has ever been.

That is exactly why most people should not.

There are three real options when you decide you need a Model Context Protocol server in your stack, and the order matters. Install an existing one. Use a hosted one for the data you do not own. Build one only when nothing else fits. The default path on the internet right now is to skip the first two and start writing Python, and the result is a tab full of half-finished servers no one maintains.

Quick answer
  • Install before you build. Filesystem, GitHub, Postgres, Notion, and dozens of others are already done.
  • Use a hosted MCP when the data is yours but the work to expose it is not (bookmarks, memory, calendar).
  • Build your own only when the data is private and no existing server covers it.
  • A demo takes an afternoon. A production server takes weeks once you add OAuth 2.1, monitoring, and rate limits.
  • Most “build MCP server” searches are actually “install MCP server” or “use MCP server” searches in disguise.

What “building an MCP server” actually means

A Model Context Protocol server is a small program that exposes tools, resources, and prompts over a defined wire format. An AI client (Claude Desktop, Cursor, ChatGPT in Developer Mode, others) connects to that program, reads the list of tools, and calls them mid-conversation. The protocol is open. The spec lives at modelcontextprotocol.io.

Two transports exist. Local servers run on your machine and talk to the AI client over stdio. Remote servers run somewhere else and talk over HTTP. Local is simpler and works for Filesystem, Postgres, and anything tied to local credentials. Remote is necessary the moment you want one endpoint across multiple devices or AI tools, and it brings OAuth 2.1 with PKCE in tow.

Building a server in 2026 is shorter than it used to be. FastMCP is the Python framework that powers an estimated 70 percent of MCP servers in the wild. One decorator turns a Python function into a tool. The TypeScript SDK is just as terse. A working server fits on a single screen.

That ease is the trap. The protocol layer is twenty lines of code. Everything around it is not.

Why everyone is suddenly building MCP servers

Anthropic released the protocol in November 2024. Within twelve months, every major AI client supported it: Claude Desktop, Cursor, Windsurf, VS Code with GitHub Copilot, then ChatGPT through Developer Mode. We covered the full client list in Which AI Tools Support MCP in 2026. With the clients in place, the data layer became the bottleneck. People who already had AI workflows started asking the same question: how do I plug my stuff into Claude?

The default answer became “build a server.” Tutorials piled up. Conference talks. A subgenre of YouTube videos. The framing slipped into “every team needs an MCP server” the way “every team needs an API” became conventional wisdom in 2015. The framing is wrong in the same way. Most teams in 2015 did not need an API. They needed someone else’s. Most people in 2026 do not need a custom MCP server. They need someone else’s.

The three options nobody lays out clearly

When you decide an AI client needs access to data it does not currently see, you have three paths. Each one is right for a different shape of problem.

Option 1: Install an existing server

The default. The MCP ecosystem has finished servers for filesystems, GitHub, GitLab, Postgres, SQLite, Slack, Google Drive, Notion, Linear, Jira, Brave Search, Exa, Context7, Stripe, Cloudflare, Sentry, dozens more. The official catalog plus community lists already cover most of the common SaaS surface. We list our picks for knowledge workers in 7 Best MCP Servers for Knowledge Workers.

Cost: free, mostly. Setup: editing a JSON file once. Maintenance: the upstream maintainer. This is the right move for 80 percent of cases.

Option 2: Use a hosted MCP for your personal data

A growing middle tier. Vendors expose your existing data through a hosted MCP endpoint you point your AI client at. ContextBolt does this for X, Reddit, and LinkedIn bookmarks. Mem0 does it for cross-session memory. Granola does it for meeting notes. The data is yours. The server is theirs. You skip the build, get the same protocol benefits, and the vendor handles auth, scaling, and rate limits.

Cost: $0 to $20 per month typically. Setup: copy a URL into your config. Maintenance: zero. This is the right move when the data is personal but the server work would be all undifferentiated heavy lifting.

Option 3: Build your own

The remaining slice. Internal systems no one else has wrapped, proprietary data, idiosyncratic workflows, compliance-bound deployments. This is where building actually pays.

Cost: hosting is cheap (Cloudflare Workers and Vercel both have generous free tiers for MCP servers, per Cloudflare’s own deployment guide), engineering time is not. Setup: weeks. Maintenance: yours forever. The right move only when the other two options genuinely do not fit.

Five questions that decide it for you

Walk through these in order. The first “yes” you hit tells you where to stop.

1. Does an existing server already cover this data? Check the official MCP registry. Check the GitHub awesome-mcp-servers list. Check the MCP Server Directory. If the answer is yes, you are done. Install it.

2. Is the data yours personally rather than internal-to-a-company? Bookmarks, notes, reading lists, calendar, fitness data. A hosted MCP almost certainly exists. Use it.

3. Is the data unique to your company and behind your own auth? A billing platform, a feature flag service, an internal CRM, a proprietary research database. No public server is coming. Build.

4. Will the server be used by more than one person? If yes, you are now in production-grade territory. OAuth 2.1, scoped tokens, rate limiting, audit logs, an on-call rotation. Estimate weeks, not days.

5. Will you maintain it for the next two years? The protocol is still evolving. The November 2025 spec revision added Dynamic Client Registration and machine-to-machine support. The transport story is changing. If no one owns the upgrade work, you are building a server that will silently break in six months.

If you got “no” four times and a clean “yes” on question 3, build. Otherwise back up.

When building actually wins

There are real cases where a custom server is the right call. They cluster into three shapes.

Private internal systems. A SaaS company connecting Claude to its own billing database, feature flag service, or customer support CRM. The data is unique. No off-the-shelf server is coming. The team has engineers. This is the textbook case. The CI Hub guide on build vs buy walks through the enterprise version of this calculation.

Workflows specific to your team. You have a particular way of triaging Linear issues that no generic Linear MCP captures. You want Claude to run that workflow as one tool, not ten. A thin wrapper around the existing Linear MCP, exposing higher-level tools, is genuinely useful. This is the “shim” build, and it is the most underrated reason to roll your own.

Compliance-bound data. Healthcare, finance, anything regulated. The data cannot leave a specific environment, the auth model cannot be the vendor’s, the audit trail must be yours. Hosting an MCP server inside your own perimeter is the only path. Build.

When building loses

Most of the rest. The patterns that signal “you should not be building this server” are surprisingly consistent.

You are building a Notion MCP when one already exists. You are building a “search my bookmarks” MCP when ContextBolt already exists. You are building a generic filesystem wrapper when the Anthropic-maintained Filesystem MCP already exists. The protocol makes the work look small, so people start. Three weekends later they have a server that does 60 percent of what the official one does and lacks the maintenance pipeline.

You are also losing when the data is fundamentally yours-personal and the work to expose it is non-trivial. Bookmarks across X, Reddit, and LinkedIn are the obvious case. Capturing the data takes a browser extension or scrapers. Storing it takes auth and a database. Searching it takes embeddings. Then the MCP server is the easy part. We built that whole stack at ContextBolt so you do not have to. We covered the personal-stack thinking in detail in Personal AI Context Stack for Claude.

The real cost of building, beyond the tutorial

The tutorial ships a server that does one thing. Production servers ship eight more.

Authentication. Remote servers must implement OAuth 2.1 with PKCE per the spec. Static API keys are allowed but discouraged: they are long-lived, hard to scope per user, and dangerous in logs. OAuth is harder. Authorization servers, token rotation, refresh logic, scope design, Dynamic Client Registration support for clients that need it.

Schema design. Tool descriptions are how the AI decides whether to call you. Bad descriptions get your tool ignored. Good ones take iteration. Every parameter, every required field, every error message has to be readable by a model.

Rate limiting. Per-user, per-token, per-tool. Claude can call your tool ten times in one turn without warning. If your downstream is a SaaS with a 100-requests-per-minute ceiling, your MCP server is the rate limiter.

Observability. Tool calls fail silently if you let them. You need logs, metrics, traces. Which tool, which user, which arguments, how long, why did it error. None of this is in the quickstart.

Versioning. The protocol moves. Your tools move. Old AI clients still need to work. The first time a breaking change ships, you find out which clients pinned to which version.

Security review. Tool calls are remote code execution by another name. A bad tool can write to the wrong table, leak a row to the wrong user, or run up a bill. Review every tool you ship for misuse.

The protocol layer is twenty lines of Python. The list above is six months of engineering for a one-team server. Builder.io’s tutorial walks through the protocol layer beautifully. The other 95 percent of the work lives in your runbook.

A worked example: the personal bookmark MCP

Pretend you decide to build the bookmark MCP we already ship. Here is the actual scope.

Capture: a Chrome extension that hooks the fetch interceptor on x.com, the DOM observer on reddit.com, and a Save button injection on linkedin.com. Three different platforms, three different paths to break when the sites change. Ours has changed twice this quarter.

Storage: an IndexedDB layer on the client, a Cloudflare D1 layer for sync, encryption keys per user. Account creation, license validation, an email verification flow.

Search: an embedding pipeline (we use OpenAI text-embedding-3-small), a vector store (Cloudflare Vectorize), a query layer that handles typos and synonyms.

Topic clustering: a Claude Haiku call per bookmark to assign a topic and 2 to 4 tags. Plus a label generator for cluster names.

Then, finally, the MCP server itself. Five tools: search_bookmarks, list_clusters, get_cluster_bookmarks, get_recent_bookmarks, save_bookmark. Two hundred lines. The easy part.

This is what hosted MCPs are quietly doing for you. The protocol is one bolt. The thing it bolts on to is the actual product.

If you do decide to build, start here

For the cases where building genuinely wins, the modern starter kit is short.

Pick a runtime. Python with FastMCP if you like Python and want the largest ecosystem. TypeScript with the official SDK if you live in Node. Either works.

Pick a host. Cloudflare Workers is the cheapest, fastest, and has built-in OAuth support per their deployment guide. Vercel and Fly are fine. Start free.

Ship one tool first. Resist the urge to wrap your entire API. One tool that does one thing well, used by one AI client, is a better learning curve than ten tools that mostly work.

Test in Claude Desktop or Claude Code first. They have the cleanest MCP implementation. Once it works there, port to Cursor and the rest. Setup for each client lives in Claude Desktop MCP Setup.

Add OAuth before you go beyond yourself. A static bearer token is fine for one developer. The moment a second person uses it, you need real auth.

The honest take

The MCP wave is real. The protocol is going to win. Every AI tool will eventually speak it. None of that means you, personally, should write a server.

Building is satisfying. It is also the wrong default for most people who land on a “build MCP server” page. The path from “I want Claude to see my data” to “I have a maintained, secure, multi-tenant MCP server” runs through more engineering than the tutorials advertise. Install before you build. Use a hosted server when one exists for your data. Save your build cycles for the cases where nothing else fits.

For the personal data that lives across X, Reddit, and LinkedIn, that hosted option is ContextBolt. We built the whole stack so you can paste a URL and move on.