DEV Community

Cover image for Why we built an MCP server for our mobile backend? (Build in public #1)
Roel Leal
Roel Leal

Posted on

Why we built an MCP server for our mobile backend? (Build in public #1)

Your AI can already write your app. It just can't run the backend behind it, until now.

Let's start with the idea that made all of this click, because everything else follows from it. MCP, the Model Context Protocol, is a way to let an AI agent like Claude or Cursor actually operate your app's backend by chat, instead of only writing code about it. That one shift is what this whole post is about, and it's what we just shipped for AppAmbit.

Here's the gap it closes. If you build with AI, you know the feeling: the agent designs a feature and writes it flawlessly, then stalls the moment real backend is involved, a place to store data, a function to run on signup, a live piece that has to actually exist. It can describe the work, not do it. So you leave your editor, set things up by hand, and come back. AppAmbit's MCP server removes that detour. Point Claude or Cursor at your workspace, and it builds against AppAmbit directly: spin up a database, deploy cloud functions, and wire the app that calls them. Then keep operating from the same chat, flip a flag, ship an update, and review your crashes, events, and billing without ever leaving the conversation.

We built it specifically for the tools you already use, Claude and Cursor, with scoped access tokens so the agent only reaches what you allow. No new app to learn, no context-switching. It meets you where you already work.

The most important design choice was this: we didn't build one big magic button that tries to do everything. We built a specific tool for each job. There's a tool to create a database, a tool to deploy a cloud function, a tool to flip a feature flag, a tool to ship a build, and tools to review crashes, check events, and see billing right from the console. Each one does a single clear thing. So "spin up a database for profiles and deploy a signup function" becomes one conversation: the agent creates the database, deploys the function, and wires the app that calls it, no separate backend to stand up.

Now the honest part, because that's what building in public is for. Creating the tools turned out to be the easy half. The hard half was getting the agent to reliably choose the right tool at the right moment, and that came down almost entirely to how we described each one. A tool with a vague description is a tool the agent uses wrong: it reaches for the wrong action, or invents parameters that don't exist. Good tool behavior isn't magic, it's good writing.

MCP Server URL

MCP Server URL

Client MCP Configuration

Client MCP Configuration

AppAmbit Docs

AppAmbit Documentation

And that led to the real lesson. The tool descriptions couldn't live in their own little world, they had to match our documentation and our API exactly. The moment a tool's description drifted from what the docs said, two things broke at once: the agent got confused, and so did any developer reading the docs. So we started treating our documentation and our tool descriptions as a single source of truth. When we change how something works, the docs and the tool description change together, on purpose. That alignment is quietly what makes the agent trustworthy, it and your team are always reading the same story.

The payoff for you is simple. You describe what you want, and AppAmbit's agent actually does it, in Claude or Cursor, with a real database, real cloud code, and your crashes, events, and billing a sentence away. Backend and app, built and operated in one conversation.

Claude MCP AppAmbit

Claude MCP AppAmbit connecting...

This is the first post in a build-in-public series where we share how we're building AppAmbit, the useful parts and the lessons. If you've built an MCP server yourself, I'd love to hear how you keep tool descriptions and API docs from drifting apart. Follow along on X ยป AppAmbit.

Top comments (0)