MCP vs API: does your SaaS need an MCP server?
Not every SaaS needs one, and an MCP server does not replace your API. Your API is how a developer's code calls your product. An MCP server is a thin layer on top of it that lets AI clients such as ChatGPT and Claude find your actions and call them from a chat, with no integration code from your customer. On WhatIsThatBook, my MCP server file is under 200 lines and calls the same search module as the website.
Whether you need one comes down to six questions. They are in the decision table further down.
MCP vs API in one table
Your API | An MCP server | |
|---|---|---|
Who calls it | Code that a developer wrote | An AI client, such as ChatGPT or Claude, when a user's request needs your tool |
How the caller learns what it can do | A developer reads your docs | The client asks your server for its list of tools. The model reads each tool's name, description and input rules |
Who writes the integration | Each customer or partner, one integration at a time | You, once. A user adds your server URL to their AI client, if their account allows it |
What you must add | Nothing new | Tool descriptions written for a model, input limits, rate limits, origin checks |
What stays the same | Your logic and your data | Your logic and your data. On my apps, the website and the MCP route call the same search code |
On my two apps, the MCP server is one more route: /mcp.
What an API gives you, and what an MCP server adds
Your API lets developers build on your product. Someone reads your docs, writes code and deploys it. If a customer wants your product inside ChatGPT, someone has to write that connection. Usually nobody does.
An MCP server hands the documentation to the AI client itself, and the user writes no code. That changes who you write for. An API reference is for a developer. A tool description is for a model: what the tool does, what it can't do, and how sure the result is. On my book app, each candidate says whether a real catalogue record confirmed it or the model only suggested it. A model presents both with the same confidence unless the data tells it otherwise.
Example: the search I already had
WhatIsThatBook had one search. A visitor describes a book they half remember, and the site finds candidates. Some visitors already came from ChatGPT: they asked an assistant first, then clicked through to my site to finish the job.
So over October 8 and 9, I added an MCP server to both apps and connected them to ChatGPT. The searches worked on the first live check.
Most of that work was not MCP. About 450 lines moved out of the website's search function into a shared module that both the website and the MCP route call. After that, the MCP server file stayed under 200 lines in each app. A second search, written only for AI clients, would have drifted from the first one within a month.
The MCP path also skips what only makes sense on the website. On the book app, a description someone types into ChatGPT does not become a public page on my site.
Does your SaaS need an MCP server? A decision table
Answer each row for your product.
Question | Yes: an MCP server fits | No: your API is enough for now |
|---|---|---|
Do your users already ask ChatGPT or Claude about the job your product does? | They ask an assistant first, then come to your site to finish | They start and finish inside your app |
Is there one action that fits in a chat message? | Search, look up a record, check a status | The value is a screen: an editor, a board, a chart people drag |
Does that action live behind an API or a service layer? | Your website already calls it, so the MCP route can call it too | The logic sits in UI code. Move it out first. That was most of my work |
Can you cap what one call costs you? | You can set a rate limit, a size limit and a timeout | One call can cost more than you can absorb, and you can't cap it |
Is the action read-only, or safe to repeat? | Search and lookups | It writes, pays or deletes, and you have no confirmation step yet |
Can the action work without the user's account? | Public data, like a catalogue search. Both of my servers work this way | It needs the user's own data. MCP defines an optional OAuth-based sign-in for remote servers. I haven't built one, so this row has no proof from me |
If the first two rows are no, stop here. Your API is enough.
What an MCP server costs to build and to run
Build. My numbers: two apps, two days, under 200 lines of MCP server code in each. The search existed, and the official TypeScript SDK handled the protocol. That is the best case: my own code, and a search that already worked.
The code was not where the time went. Next time, I'd budget more time for the privacy page, the quota, and the directory review. Adding the server to your own ChatGPT account takes a minute. A listing in the ChatGPT or Claude directory is a separate submission and review.
For a codebase I don't know yet, I sell it as one two-week sprint at $6,000, with the scope agreed in writing.
Run. Each tool call is a call to your product, and it costs what your product costs. A book search on my app makes one model call, about $0.002 at list price. An MCP endpoint without sign-in is a free, public API to that cost. So my book endpoint checks a quota before any paid work: 20 searches per IP per UTC hour, and 500 per UTC day across all MCP clients. If the quota service is down, the search is refused. AI calls stop after 45 seconds.
The protocol asks for the same: a server must validate tool inputs, rate limit tool calls, and check the origin of each request.
When an API is enough
Your buyers are developers who build on your API. They already have what they need.
Your product is a screen, not an action. A chat can't drag a card across a board.
Your users never mention an assistant. Ask five of them before you build.
Your main action writes, pays or deletes, and you haven't designed how a person confirms it. The MCP spec gives that check to the AI client: it should let the person deny a tool call. "Should" is not "must", so don't count on it.
You can't put a limit on what one call costs you.
In these cases, spend the sprint on the product.
FAQ
What is an MCP server?
An endpoint that AI clients such as ChatGPT and Claude call through the Model Context Protocol. It lists tools, and the model calls one when a user's request needs it.
Is MCP a replacement for an API?
No. A tool usually calls your API, or the same code your API calls. Mine calls the same search module as the website.
What are examples of MCP servers?
WhatIsThatBook and WhatIsThatMovie each have a search tool at /mcp. Anyone with the URL can call it, with no sign-in. Neither is listed in the ChatGPT or Claude directory. ThreadCast, my open-source tool to share Claude Code and Codex sessions as web pages, runs a local MCP server behind its plugins.
Do I need a custom MCP server?
If the first two rows of the decision table are yes, and the action is read-only, it is worth one sprint.
If the table says yes
I build it as a custom MCP server sprint: one two-week sprint, $6,000, for TypeScript codebases. Send me your API docs, or the search you want AI clients to use.
The technical long version, with the code, the limits and the ChatGPT connection steps, is on my personal site: Adding an MCP server to an existing SvelteKit search app.
MCP changes fast. The protocol statements in this post match the specification dated July 28, 2026.