[{"data":1,"prerenderedAt":598},["ShallowReactive",2],{"blog-/en/mcp-vs-rest-api":3,"blog-related-/en/mcp-vs-rest-api":347},{"id":4,"title":5,"author":6,"body":7,"canonical":330,"date":331,"description":332,"extension":333,"image":334,"meta":335,"navigation":336,"path":337,"seo":338,"stem":339,"tags":340,"__hash__":346},"blog/en/mcp-vs-rest-api.md","MCP vs REST API: What Changes When an Agent Talks to Your CMS Directly","Martin Swoboda",{"type":8,"value":9,"toc":318},"minimark",[10,14,19,22,30,38,42,45,48,51,55,58,61,68,71,75,185,189,192,208,211,215,218,237,244,248,276,280,293,300,303,306],[11,12,13],"p",{},"If you already know REST well, most MCP explainers will annoy you. They either sell it as a magic layer that makes integration disappear, or they walk through the JSON-RPC wire format without ever saying why you'd care. Only one thing actually changes between the two, and everything else follows from it.",[15,16,18],"h2",{"id":17},"what-is-a-rest-api-and-what-is-mcp","What is a REST API, and what is MCP?",[11,20,21],{},"A REST API is an interface you write a client against. You read the docs, decide which endpoints match your intent, and write code that maps one to the other: auth, pagination, schema, retries and all.",[11,23,24,29],{},[25,26,28],"a",{"href":27},"/blog/what-is-mcp","MCP (Model Context Protocol)"," is a protocol a system uses to describe its own capabilities to an agent. The model discovers the available tools and calls them at runtime, so you don't write bespoke integration code for each one.",[11,31,32,33,37],{},"People frame this as old way versus new way, which misses it. The question is ",[34,35,36],"em",{},"who maps intent to calls, and when",". With REST, you do it at development time, in code you then maintain. With MCP, the model does it at runtime against a described tool surface. Every benefit and every trade-off below comes out of that one shift.",[15,39,41],{"id":40},"with-rest-the-integration-is-the-work","With REST, the integration is the work",[11,43,44],{},"The endpoints are usually the easy part. The work is everything around them: getting and refreshing a token, working out which of forty endpoints you need, handling pagination that differs between collections, mapping field names onto your own model, deciding what to do on a 429, and writing tests that catch it when the vendor changes a response shape. Then the API version moves, and the client you wrote is now the thing you maintain: a small, permanent piece of software with its own upgrade path.",[11,46,47],{},"That's not a knock on REST. It's a stable, cacheable, inspectable contract that has survived twenty years because it's genuinely good. The problem shows up in one place: for one-off or low-volume work, the ratio of integration effort to actual task is terrible.",[11,49,50],{},"MCP doesn't remove that work, it moves it. The server author writes the tool definitions once (names, input and output schemas, descriptions), and every agent that connects gets that surface.",[15,52,54],{"id":53},"the-same-task-two-ways-40-events-from-a-spreadsheet","The same task, two ways: 40 events from a spreadsheet",[11,56,57],{},"Say you need to publish 40 event entries from a spreadsheet, resize the images, and fix the slugs.",[11,59,60],{},"As REST integration work, that's a script. You read the sheet, authenticate, find the create-event endpoint and its required fields, discover that dates want a specific format, upload each image through a separate media endpoint, wire the returned asset ID back into the event record, write a slugify function matching the CMS's own rules and get it slightly wrong, add rate limiting when the twelfth request fails, and re-run it against staging a few times. At the end you own a script for exactly this shape of spreadsheet.",[11,62,63,64,67],{},"As a prompt against an MCP server, it's a sentence and a file path, run in Claude Code or Cursor: ",[34,65,66],{},"\"Read events.csv, create an event entry for each row, scale the images to the standard sizes, and make the slugs consistent with the existing ones.\""," The agent lists the available tools, sees that event creation, file upload and image scaling exist, reads a couple of existing events to infer the slug convention, and executes.",[11,69,70],{},"The asterisks are real. The agent may pick a different call sequence than you would have, it costs actual tokens, and 40 entries means a lot of round trips. Run it against staging and diff the result. And if this turns into a nightly job for 4,000 rows instead of a one-off for 40, go write the REST script after all. That's the decision boundary, and it has very little to do with which protocol is more modern.",[15,72,74],{"id":73},"mcp-vs-rest-api-where-each-one-wins","MCP vs REST API: where each one wins",[76,77,78,93],"table",{},[79,80,81],"thead",{},[82,83,84,87,90],"tr",{},[85,86],"th",{},[85,88,89],{},"REST API",[85,91,92],{},"MCP",[94,95,96,108,119,130,141,152,163,174],"tbody",{},[82,97,98,102,105],{},[99,100,101],"td",{},"Who maps intent to calls",[99,103,104],{},"You, in code, at build time",[99,106,107],{},"The model, at runtime",[82,109,110,113,116],{},[99,111,112],{},"Integration cost per consumer",[99,114,115],{},"New client each time",[99,117,118],{},"Tool surface described once",[82,120,121,124,127],{},[99,122,123],{},"Determinism",[99,125,126],{},"Exact: same input, same calls",[99,128,129],{},"Non-deterministic; the model chooses",[82,131,132,135,138],{},[99,133,134],{},"Auditability",[99,136,137],{},"Your code is the audit trail",[99,139,140],{},"Needs tool-call logging to reconstruct",[82,142,143,146,149],{},[99,144,145],{},"Cost per run",[99,147,148],{},"Compute only",[99,150,151],{},"Compute plus tokens per call",[82,153,154,157,160],{},[99,155,156],{},"Handles ambiguous instructions",[99,158,159],{},"No",[99,161,162],{},"Yes, that is the point",[82,164,165,168,171],{},[99,166,167],{},"Best for",[99,169,170],{},"High-volume pipelines, strict contracts",[99,172,173],{},"One-off, exploratory and irregular work",[82,175,176,179,182],{},[99,177,178],{},"Breaks when",[99,180,181],{},"The API changes shape",[99,183,184],{},"The task needs guarantees, not judgement",[15,186,188],{"id":187},"when-you-should-write-a-rest-client-instead","When you should write a REST client instead",[11,190,191],{},"Write the client by hand whenever you can't tolerate a model choosing the call:",[193,194,195,199,202,205],"ul",{},[196,197,198],"li",{},"High-volume automated pipelines. A nightly sync of 10,000 records shouldn't pay per-call token cost or re-derive its plan every night.",[196,200,201],{},"Strict contracts. If a regulator, an SLA or a downstream system depends on exactly which fields get written, you want code you can read, not a plan reconstructed from logs.",[196,203,204],{},"Anything where a wrong call is expensive: bulk deletes, permission changes, anything irreversible. Give the agent read access and a human the write button.",[196,206,207],{},"Pulling content into another system. A search index, a mobile app or a static build wants a cacheable, predictable HTTP response, not a conversation.",[11,209,210],{},"MCP doesn't replace any of that. It's a protocol layered over capabilities that still have to exist: if the CMS can't scale an image, no amount of tool description makes it possible.",[15,212,214],{"id":213},"native-mcp-server-vs-a-wrapper-someone-built-around-the-rest-api","Native MCP server vs a wrapper someone built around the REST API",[11,216,217],{},"A native MCP server is implemented inside the system itself. A wrapper is a separate process translating MCP tool calls into REST requests against a public API. Both speak the same protocol, and they behave differently in production for four reasons:",[219,220,221,228,231,234],"ol",{},[196,222,223,224,227],{},"Coverage is capped by the author's imagination. A wrapper exposes the endpoints its author happened to think about. Anything not wrapped is invisible to the agent. Not documented-but-hard, ",[34,225,226],{},"invisible",".",[196,229,230],{},"Auth is bolted on. The wrapper holds an API token and acts as one user, so per-role permissions tend to flatten.",[196,232,233],{},"It lags. New features arrive in the product, then in the API, then in the wrapper. You feel the gap exactly when you want the new thing.",[196,235,236],{},"It's another dependency: a third process to deploy, monitor and upgrade, sitting between your agent and your content.",[11,238,239,240,227],{},"Wrappers are genuinely useful. They're how most systems get MCP support at all, and a good one beats no support. Just know which kind you're running before you build a workflow on it. We went through this in more depth in ",[25,241,243],{"href":242},"/blog/native-mcp-vs-wrapper","native MCP vs an MCP wrapper",[15,245,247],{"id":246},"what-the-2026-spec-changed-in-one-paragraph","What the 2026 spec changed, in one paragraph",[11,249,250,251,255,256,259,260,263,264,267,268,271,272,275],{},"The 2026-07-28 revision made MCP stateless. The ",[252,253,254],"code",{},"initialize"," handshake and the ",[252,257,258],{},"Mcp-Session-Id"," header are gone, each request carries its own protocol version and client capabilities, and a new ",[252,261,262],{},"server/discover"," RPC advertises what a server supports. Tool, prompt and resource listings became cacheable via ",[252,265,266],{},"ttlMs"," and ",[252,269,270],{},"cacheScope",", and server-initiated requests were replaced by Multi Round-Trip Requests, where a tool returns ",[252,273,274],{},"input_required"," and the client retries with the answers. If you looked at MCP in 2025 and found the session handling awkward to operate, that specific complaint is dealt with: servers can now sit behind an ordinary load balancer.",[15,277,279],{"id":278},"where-neleto-sits","Where Neleto sits",[11,281,282,283,287,288,292],{},"Neleto is a ",[25,284,286],{"href":285},"/blog/full-cms-vs-headless","complete CMS"," with an ",[25,289,291],{"href":290},"/blog/mcp-connectors","MCP server built into the product itself"," rather than a wrapper around its own REST API, so the tools an agent sees are the CMS's own capabilities: pages, blog posts, events, files, components, layouts, image scaling. The agent acts with the role of the person who connected it, not a shared admin token. It works with Claude Code, Cursor and Windsurf.",[11,294,295,296,299],{},"There's also a ",[25,297,89],{"href":298},"/docs/developer/api/api-endpoints",", for pulling content into a search index, an app or another system where you want a predictable HTTP response and not a model deciding anything. We're not going to pretend the MCP server is the right tool for a nightly 10,000-record sync.",[11,301,302],{},"Other CMSes offer MCP support too, natively and through wrappers, and the space is moving fast. The question worth asking any vendor isn't whether they have MCP. It's whether it's native, how much of the product it actually covers, and whether it respects your role permissions.",[304,305],"hr",{},[11,307,308,312,313,317],{},[309,310,311],"strong",{},"Try it yourself:"," Point Claude Code or Cursor at a ",[25,314,316],{"href":315},"/pricing","Neleto instance on the free plan"," and ask it to list the available tools. That ten-minute test tells you more about any MCP server than a comparison table will.",{"title":319,"searchDepth":320,"depth":320,"links":321},"",2,[322,323,324,325,326,327,328,329],{"id":17,"depth":320,"text":18},{"id":40,"depth":320,"text":41},{"id":53,"depth":320,"text":54},{"id":73,"depth":320,"text":74},{"id":187,"depth":320,"text":188},{"id":213,"depth":320,"text":214},{"id":246,"depth":320,"text":247},{"id":278,"depth":320,"text":279},null,"2026-11-09","REST makes you write the client. MCP makes the CMS describe itself. Both still need the capability to exist underneath.","md","/img/blog/mcp-vs-rest-api.svg",{},true,"/en/mcp-vs-rest-api",{"title":5,"description":332},"en/mcp-vs-rest-api",[92,89,341,342,343,344,345],"CMS","AI Agents","Claude Code","Integration","Neleto","1YZ-HAdDQpKk3WKOgp_fderOk4hlQIZYSxnlXJWxynA",[348,350,360,371,382,392,402,412,424,432,443,451,460,467,478,486,496,505,512,519,528,538,547,555,565,573,583,590],{"path":337,"title":5,"description":332,"date":331,"author":6,"image":334,"tags":349},[92,89,341,342,343,344,345],{"path":351,"title":352,"description":353,"date":354,"author":6,"image":355,"tags":356},"/en/regions-and-hosting","Host your site where your visitors are: Neleto now runs in Europe, the US and Asia","When you create a Neleto site, you can now choose where it's hosted: Germany, the United States or Singapore. Here's what that means for your site and how to pick the right region.","2026-11-02","/img/blog/regions-and-hosting.svg",[357,358,359,345],"Hosting","Regions","Performance",{"path":361,"title":362,"description":363,"date":364,"author":6,"image":365,"tags":366},"/en/neleto-vs-wordpress","Neleto vs WordPress: What You Give Up, and What You Stop Maintaining","WordPress is the right answer for a large share of the web. Here is the specific kind of site where it stops being one, what you lose by leaving, and what you stop maintaining.","2026-10-26","/img/blog/neleto-vs-wordpress.svg",[367,368,369,370,345],"WordPress","CMS Comparison","Migration","Security",{"path":372,"title":373,"description":374,"date":375,"author":376,"image":377,"tags":378},"/en/php-vulnerabilities-dont-affect-neleto","PHP Just Got Two Critical CVEs. Neleto Never Had to Patch.","On October 20, the PHP security team flagged two critical vulnerabilities (CVSS 9.2) affecting all supported PHP branches and older end-of-life versions. Here's why Neleto's stack was never in the blast radius, and what it says about interpreted versus compiled backends.","2026-10-21","Marc Zinser","/img/blog/php-vulnerabilities-dont-affect-neleto.svg",[379,370,380,381,341,345],"PHP","CVE","Rust",{"path":383,"title":384,"description":385,"date":386,"author":6,"image":387,"tags":388},"/en/story-of-neleto","The Story of Neleto","Six years of real customer websites before we ever called it a product. Here's how a tool we built for our own client work became a CMS you can start for free.","2026-10-19","/img/blog/story-of-neleto.svg",[345,389,390,391,341],"Build in Public","Story","Triple-A Soft",{"path":393,"title":394,"description":395,"date":396,"author":6,"image":397,"tags":398},"/en/templates-are-dead","Templates Are Dead","Every CMS starts by asking you to pick a template. Now that AI generates real designs and a native MCP server places them straight into your CMS, you can start from your own idea instead of someone else's theme.","2026-10-07","/img/blog/templates-are-dead.svg",[341,399,92,400,401,345],"AI","Web Design","Templates",{"path":403,"title":404,"description":405,"date":406,"author":6,"image":407,"tags":408},"/en/best-cms-for-agencies","Best CMS for Agencies With 10+ Client Sites (2026)","Which CMS fits an agency with 10+ client sites? A quick pick by agency type, the per-site maths at 10 and 25 sites, and where each option falls apart.","2026-10-05","/img/blog/best-cms-for-agencies.svg",[409,368,410,411,92,345],"Agencies","Pricing","Client Sites",{"path":413,"title":414,"description":415,"date":416,"author":6,"image":417,"tags":418},"/en/host-without-us-cloud","How to Host a Website Without US Cloud Providers (And What Actually Counts as 'EU')","An EU data centre is not the same thing as being outside US legal reach. Here is the difference, layer by layer.","2026-09-28","/img/blog/host-without-us-cloud.svg",[419,420,421,422,423,345],"GDPR","EU Hosting","Digital Sovereignty","CLOUD Act","Data Compliance",{"path":425,"title":426,"description":427,"date":428,"author":6,"image":429,"tags":430},"/en/native-mcp-vs-wrapper","Native MCP vs an MCP Wrapper: Why the Difference Shows Up in Production","Both speak the same protocol. The gap opens in what they can reach, who they act as, and how many round-trips one instruction costs.","2026-09-21","/img/blog/native-mcp-vs-wrapper.svg",[92,342,341,344,343,431,345],"Permissions",{"path":433,"title":434,"description":435,"date":436,"author":6,"image":437,"tags":438},"/en/jimdo-to-neleto-migration","Jimdo to Neleto: A Real Migration Story","We rebuilt a live Jimdo one-pager on Neleto with Claude. The first pass hurt accessibility; two prompts later Lighthouse showed 99/100/100/100.","2026-09-14","/img/blog/jimdo-to-neleto-migration.svg",[439,369,440,441,442,92,345],"Case Study","Jimdo","Accessibility","Lighthouse",{"path":444,"title":445,"description":446,"date":447,"author":6,"image":448,"tags":449},"/en/mcp-server-faster-image-ingest","The same AI build went from 30 minutes to 4 — here's what we changed in our MCP server","Image uploads were the slowest part of building a site with an AI agent. What we changed in Neleto's MCP server, with before-and-after numbers.","2026-09-07","/img/blog/mcp-server-faster-image-ingest.svg",[345,92,399,450,389,359],"Agents",{"path":452,"title":453,"description":454,"date":455,"author":6,"image":456,"tags":457},"/en/full-cms-vs-headless","Full CMS vs Headless: Why All-in-One Wins for Most of the Web","Headless earned its reputation for real reasons. Here's the honest trade-off — and why, for most sites, a complete CMS is the better deal.","2026-08-31","/img/blog/full-cms-vs-headless.svg",[458,341,459,92,420,345],"Comparison","Headless",{"path":461,"title":462,"description":463,"date":464,"author":6,"image":465,"tags":466},"/en/self-verifying-ai","The AI That Checks Its Own Work","Most AI-plus-CMS setups write content and hope it rendered. Neleto checks three ways: structured output, LSP checks and a look at the live page.","2026-08-24","/img/blog/self-verifying-ai.svg",[345,399,92,450,389,341],{"path":468,"title":469,"description":470,"date":471,"author":6,"image":472,"tags":473},"/en/five-plugins-built-in","Five New Neleto Plugins — Built In, Not Bolted On","Search, comments, Google reviews, SEO and accessibility audits, and galleries: five plugins that run inside your Neleto instance, no third-party scripts.","2026-08-17","/img/blog/five-plugins-built-in.svg",[345,474,341,389,475,476,477],"Plugins","SEO","Search","DSGVO",{"path":479,"title":480,"description":481,"date":482,"author":6,"image":483,"tags":484},"/en/why-neleto-runs-on-rust","Why Neleto Runs on Rust (And the Benchmarks to Prove It)","Why Neleto runs on Rust: real benchmarks (11 ms TTFB, ~9,400 req/s, 78 MB RAM) and what it cost us in dev speed, hiring and young libraries.","2026-08-10","/img/blog/why-neleto-runs-on-rust.svg",[345,381,359,485,389],"Benchmarks",{"path":487,"title":488,"description":489,"date":490,"author":6,"image":491,"tags":492},"/en/page-builder-walkthrough","Building a Landing Page in Neleto: A Real Walkthrough (Mouse and Prompt)","I built the same landing page twice, by hand in the visual builder and by prompting Claude, and timed both. Including the parts that were slower.","2026-07-27","/img/blog/page-builder-walkthrough.svg",[345,493,341,92,494,495],"Page Builder","AI CMS","No-Code",{"path":497,"title":498,"description":499,"date":500,"author":6,"image":501,"tags":502},"/en/mcp-connectors","Connect Neleto to Anything: The Native MCP Server and Connector Ecosystem","Your CMS shouldn't be an island. Here's how Claude, Cursor, and Windsurf talk to your content directly — and where it goes next.","2026-07-20","/img/blog/mcp-connectors.svg",[92,503,399,343,504,345,341],"Connectors","Cursor",{"path":506,"title":507,"description":508,"date":509,"author":6,"image":510,"tags":511},"/en/wordpress-migration-walkthrough","40-Page WordPress Migration: Honest Walkthrough","The content migration took under an hour. The full cutover (domain, DNS, redirects, forms, QA) took most of a day. Every step, every gotcha.","2026-07-13","/img/blog/wordpress-migration-walkthrough.svg",[367,369,341,419,420,345],{"path":513,"title":514,"description":515,"date":516,"author":6,"image":517,"tags":518},"/en/html-to-editable-cms","Turn a Static HTML Site into an Editable CMS","Web designers lose days rebuilding finished designs as a CMS. With Neleto's MCP server it takes one prompt, animations and custom cursor included.","2026-07-06","/img/blog/html-to-editable-cms.svg",[92,342,400,343,341,345],{"path":520,"title":521,"description":522,"date":523,"author":6,"image":524,"tags":525},"/en/console-launch-free-tier","Neleto Console Is Live — and the Free Tier Is Open","Sign up at console.neleto.io, get a real CMS, and pay us nothing. Here's why we built it that way.","2026-06-29","/img/blog/console-launch-free-tier.svg",[389,345,526,527,420,341],"Free Tier","Self-Serve",{"path":529,"title":530,"description":531,"date":532,"author":6,"image":533,"tags":534},"/en/mcp-server-explained","MCP Server Explained: The Deep Dive","How the Model Context Protocol enables secure, native AI agent interaction with your applications — and why native implementation matters.","2026-06-22","/img/blog/mcp-server-explained.svg",[92,535,536,342,537],"MCP Server","Model Context Protocol","AI Integration",{"path":539,"title":540,"description":541,"date":542,"author":6,"image":543,"tags":544},"/en/neleto-vs-contentful","Neleto vs Contentful: Which CMS Should You Choose in 2026?","A practical comparison for developers, agencies, and growing businesses — covering pricing, performance, AI integration, editor experience, and EU compliance.","2026-06-16","/img/blog/neleto-vs-contentful.svg",[345,545,546,368,494],"Contentful","Headless CMS",{"path":548,"title":549,"description":550,"date":551,"author":6,"image":552,"tags":553},"/en/agentic-traffic-surpassed-humans","Bots Just Out-Numbered Us: What the Agentic Web Means for Your CMS","Cloudflare Radar now counts more automated requests to HTML pages than human ones, about 18 months before its CEO expected. Here's what that changes for how you publish content.","2026-06-08","/img/blog/agentic-traffic-surpassed-humans.svg",[554,342,92,341,345],"Agentic Web",{"path":556,"title":557,"description":558,"date":559,"author":6,"image":560,"tags":561},"/en/glw-gmbh-case-study","Modernizing a 40-Year Family Business: GLW GmbH's New Website with Neleto","How we delivered a fast, multilingual, and CRM-integrated website for a leading German cable processing specialist — in close collaboration with agency Inhalt.","2026-06-05","/img/blog/glw-gmbh-case-study.svg",[439,562,345,563,564],"Customer Story","CRM Integration","Custom Plugin",{"path":566,"title":567,"description":568,"date":569,"author":6,"image":570,"tags":571},"/en/eu-hosting-compliance","Why EU Hosting Compliance Matters for Your Website","Data sovereignty, GDPR, and choosing the right infrastructure in 2026","2026-06-01","/img/blog/eu-hosting-compliance.svg",[419,420,423,572,345],"Privacy",{"path":574,"title":575,"description":576,"date":577,"author":6,"image":578,"tags":579},"/en/buergerstiftung-ravensburg","Bürgerstiftung Ravensburg: A Modern Website for Community Impact with Neleto","How we built a clear, fast, and emotionally engaging website for a regional community foundation using Neleto CMS — in close collaboration with agency Inhalt.","2026-05-29","/img/blog/buergerstiftung-ravensburg.svg",[439,580,581,345,582],"Nonprofit","Foundation","Website",{"path":584,"title":585,"description":586,"date":587,"author":6,"image":588,"tags":589},"/en/what-is-mcp","What is the Model Context Protocol (MCP)?","The new standard connecting AI agents to your tools and data","2026-05-25","/img/blog/what-is-mcp.svg",[92,399,536,342,341],{"path":591,"title":592,"description":593,"date":594,"author":6,"image":595,"tags":596},"/en/why-neleto-exists","Why Neleto Exists","The CMS Built for Speed, Simplicity, and the AI Era","2026-05-18","/img/blog/why-neleto-exists.svg",[341,399,597,359,345],"Web Development",1794299057955]