[{"data":1,"prerenderedAt":393},["ShallowReactive",2],{"post-mcp-server-saas-feedback-en":3,"surround-/en/blog/mcp-server-saas-feedback-en":388},{"id":4,"title":5,"body":6,"canonical_id":370,"category":371,"date_created":372,"date_updated":372,"description":373,"extension":374,"head":375,"image":376,"lang":377,"layout":378,"meta":379,"navigation":380,"ogImage":375,"path":381,"reading_time":382,"robots":375,"schemaOrg":375,"seo":383,"sitemap":385,"stem":386,"__hash__":387},"blog/en/blog/14.mcp-server-saas-feedback.md","I built two MCP servers for my SaaS: my first feedback",{"type":7,"value":8,"toc":358},"minimark",[9,22,29,55,58,63,66,69,72,75,79,82,88,94,105,109,116,122,143,147,167,170,174,177,180,216,220,227,233,236,239,243,246,255,269,272,287,291,294,314,318,321,324,327,347,350],[10,11,12,13,21],"p",{},"For the past year, ",[14,15,16],"strong",{},[17,18,20],"a",{"href":19},"/en/services/product-engineering/mcp-server","MCP servers"," (Model Context Protocol) have been one of the hot topics in AI. They allow connecting a product to any compatible AI agent (Claude, ChatGPT, Cursor...) via an open standard.",[10,23,24,25,28],{},"I now have ",[14,26,27],{},"two in production"," on my own projects:",[30,31,32,45],"ul",{},[33,34,35,36,44],"li",{},"One for ",[14,37,38],{},[17,39,43],{"href":40,"rel":41},"https://www.begonia.pro/en",[42],"nofollow","Begonia.pro",", my Local SEO SaaS.",[33,46,35,47,54],{},[14,48,49],{},[17,50,53],{"href":51,"rel":52},"https://fude.md/en",[42],"Fude.md",", my multi-device Markdown reader.",[10,56,57],{},"Here is my feedback: why I chose to develop them, how I went about it, and what AI agents actually do with them.",[59,60,62],"h2",{"id":61},"the-principle-an-api-designed-for-ais","The principle: an API designed for AIs",[10,64,65],{},"An MCP server is a bit like an API designed for AIs.",[10,67,68],{},"Where a traditional API exposes endpoints for developers, an MCP server mainly exposes tools that the AI can call directly in a conversation. Each tool has a name, a description, parameters, and returns a result. The agent reads the list, chooses the right tools, calls them if necessary, and then uses them to respond.",[10,70,71],{},"But an MCP server is not limited to tools. It can also expose resources for reading, meaning content that the AI can consult, as well as ready-to-use prompts to guide usage.",[10,73,74],{},"For a SaaS, this opens a new entry point. A bit like the mobile app opened one in 2012, or the public API in 2018.",[59,76,78],{"id":77},"why-i-wanted-to-build-them","Why I wanted to build them",[10,80,81],{},"Far from being a technical exercise, each of my projects had an interest in offering an MCP server:",[10,83,84,87],{},[14,85,86],{},"On the Begonia.pro side",", more and more local entrepreneurs and SEO consultants are asking their questions to an AI rather than Google. \"Is my Google Business profile well optimized?\", \"What local keywords am I missing?\". Without an MCP server, ChatGPT responds with its generic data. With my MCP server, they interrogate my SaaS Begonia.pro directly, which can answer with real data derived from my SEO analyses.",[10,89,90,93],{},[14,91,92],{},"On the Fude.md side",", it streamlines usage. Fude is a Markdown reader: my users store their product specs, meeting notes, and article drafts there. An AI agent connected via MCP can analyze their writing style, summarize specs, and query their notes in natural language. The MCP server literally becomes a product feature in its own right.",[10,95,96,97,100,101,104],{},"Two opposite logics: with Begonia, I expose ",[14,98,99],{},"qualified data","; with Fude, I expose ",[14,102,103],{},"personal documents",".",[59,106,108],{"id":107},"the-real-issue-choosing-what-to-expose","The real issue: choosing what to expose",[10,110,111,112,115],{},"An MCP server is not a dump of the internal API. The more tools you expose, the more the AI gets lost, unnecessarily consumes tokens, and hallucinates out-of-context calls. I preferred to ",[14,113,114],{},"start small",": 3 tools per server.",[10,117,118,119,121],{},"For ",[14,120,43],{},":",[30,123,124,131,137],{},[33,125,126,130],{},[127,128,129],"code",{},"audit_local_business",": quickly audit a new local business.",[33,132,133,136],{},[127,134,135],{},"get_business_scan",": read the complete existing audit, created by my SaaS, of a business.",[33,138,139,142],{},[127,140,141],{},"search_local_seo_knowledgebase",": query my SEO knowledge base.",[10,144,118,145,121],{},[14,146,53],{},[30,148,149,155,161],{},[33,150,151,154],{},[127,152,153],{},"list_projects",": list the user's projects.",[33,156,157,160],{},[127,158,159],{},"search_documents",": search through documents by keywords.",[33,162,163,166],{},[127,164,165],{},"get_document",": read a complete document.",[10,168,169],{},"In both cases, three tools that each do one clear thing. No duplicates, no \"just in case\" tools.",[59,171,173],{"id":172},"writing-the-tool-description-is-writing-a-prompt","Writing the tool description is writing a prompt",[10,175,176],{},"A tool's description is read by an LLM. It's a prompt. If it's vague, the AI will never call it, or call it incorrectly.",[10,178,179],{},"Here is my method so far:",[30,181,182,195,201,207],{},[33,183,184,187,188,190,191,194],{},[14,185,186],{},"Name",": a verb + an object (",[127,189,159],{}," rather than ",[127,192,193],{},"documents",").",[33,196,197,200],{},[14,198,199],{},"Description",": what it does, when to use it, what it returns. Two or three sentences max.",[33,202,203,206],{},[14,204,205],{},"Parameters",": typed, with an example if the format isn't obvious.",[33,208,209,212,213,215],{},[14,210,211],{},"Errors",": exploitable by the LLM (\"Project not found, use ",[127,214,153],{}," to see available names\") rather than HTTP codes.",[59,217,219],{"id":218},"authentication-the-real-technical-challenge","Authentication: the real technical challenge",[10,221,222,223,226],{},"For a ",[14,224,225],{},"local"," MCP server (running on the user's machine), authentication is often simpler, because the server is already running on the user's machine. But it doesn't disappear entirely: you still have to pay attention to permissions, used secrets, and what the server can read or do.",[10,228,222,229,232],{},[14,230,231],{},"remote",", multi-user server, the subject becomes much more classic: identity, rights, revocation, audit.",[10,234,235],{},"For Fude, since Markdown files are synchronized locally on the machine, I naturally chose to create a local MCP server. This avoids transferring sensitive data outside of AI, to use the MCP, and promotes faster document search speeds.",[10,237,238],{},"For Begonia.pro, I have for now chosen to authenticate with an API key, unique to each user, easily revocable and copyable. In the future, I will likely offer a classic OAuth connection with authentication to their account via a browser. But for this first version, the API key is sufficient.",[59,240,242],{"id":241},"what-ai-agents-actually-do-with-my-servers","What AI agents actually do with my servers",[10,244,245],{},"It is interesting to look at the logs after a few weeks in production.",[10,247,248,249,251,252,254],{},"On ",[14,250,43],{},", most of the calls are for ",[127,253,129],{},". A user asks Claude to \"audit the Google profile of Bakery X in Lyon\" and gets a report back with real data.",[10,256,248,257,259,260,262,263,265,266,268],{},[14,258,53],{},", the agents are much more methodical: they almost systematically call ",[127,261,153],{}," first, then ",[127,264,159],{},", and only then ",[127,267,165],{}," if the search matched. This shows that AIs know how to navigate a well-designed MCP structure.",[10,270,271],{},"Two things I noted:",[30,273,274,281],{},[33,275,276,277,280],{},"Agents ",[14,278,279],{},"do not necessarily respect the suggested order"," in the descriptions. Each tool must be independently robust.",[33,282,276,283,286],{},[14,284,285],{},"sometimes call the same tool multiple times"," when they hesitate or want to retrieve more data to make a decision.",[59,288,290],{"id":289},"other-feedback","Other feedback",[10,292,293],{},"A few important points to keep in mind:",[30,295,296,302,308],{},[33,297,298,301],{},[14,299,300],{},"Versioning."," A remote MCP server is consumed by hundreds of different clients (every Claude Desktop installation is a client). It's impossible to break a tool without breaking your users' integrations. The same rules apply as for a public API: deprecate, don't delete.",[33,303,304,307],{},[14,305,306],{},"Tokens consumed on the AI side."," Each tool adds tokens to the AI's context window, even when it isn't called. If a user connects 40 MCP servers, they quickly hit their limit. All the more reason to focus on the essential tools per server.",[33,309,310,313],{},[14,311,312],{},"Discoverability."," MCP doesn't solve the adoption problem. The user must know that your server exists, then configure it in their client. Today, configuration is still the weak link in MCP server usage, often involving editing JSON config files. It will improve, but for now, you have to provide support.",[59,315,317],{"id":316},"conclusion","Conclusion",[10,319,320],{},"An MCP server is a new entry point for a SaaS. As important as an API, but with a radically different user: an LLM that reads, chooses, and chains your tools together.",[10,322,323],{},"This changes how a SaaS is used. My clients don't necessarily come to the Begonia.pro website or the Fude app anymore: they use their favorite AI, and my products are there, available, and cited. It's a new way to distribute a SaaS.",[10,325,326],{},"If you want to test them, both servers are accessible:",[30,328,329,338],{},[33,330,331,334,335,104],{},[14,332,333],{},"Begonia.pro MCP",": Google profile audits, local search, Local SEO knowledge base. More info on ",[17,336,43],{"href":40,"rel":337},[42],[33,339,340,343,344,104],{},[14,341,342],{},"Fude.md MCP",": access to your personal Markdown documents. ",[17,345,53],{"href":51,"rel":346},[42],[10,348,349],{},"And you, are your products ready for the AI agent era? Have you already thought about what you could expose via MCP?",[10,351,352,353,357],{},"📌 If you want to think about MCP integration or, more broadly, the role of AI in your product, ",[17,354,356],{"href":355},"/en/services/product-engineering","discover my Product Engineering services"," to design and develop the right tools.",{"title":359,"searchDepth":360,"depth":360,"links":361},"",2,[362,363,364,365,366,367,368,369],{"id":61,"depth":360,"text":62},{"id":77,"depth":360,"text":78},{"id":107,"depth":360,"text":108},{"id":172,"depth":360,"text":173},{"id":218,"depth":360,"text":219},{"id":241,"depth":360,"text":242},{"id":289,"depth":360,"text":290},{"id":316,"depth":360,"text":317},"14","ai","2026-04-23T08:00:00.000Z","For the past year, MCP servers (Model Context Protocol) have been one of the hot topics in AI. They allow connecting a product to any compatible AI agent (Claude, ChatGPT, Cursor...) via an open standard.","md",null,"/img/blog/blog14.jpg","en","page",{},true,"/en/blog/mcp-server-saas-feedback",4,{"description":384,"title":5},"Feedback on creating two MCP servers in production for my SaaS Begonia.pro and Fude.md. How I chose the tools, what I learned, and what AI agents actually do with them.",{"loc":381},"en/blog/14.mcp-server-saas-feedback","kdpYluJr3P0gsOJPbQDY08c11-7ia9aW5sACp2UhCGg",[375,389],{"title":390,"path":391,"stem":392,"children":-1},"New Project: Fude.md, a beautiful Markdown reader for the AI agent era","/en/blog/fude-md-beautiful-markdown-reader-ai-agents","en/blog/13.fude-md-beautiful-markdown-reader-ai-agents",1776935347511]