How to use Cursor with Fabapp AI
Connecting Cursor to your account
Cursor reads MCP configuration from a file inside the project, and that is its advantage here:
{ "mcpServers": { "fabapp": { "command": "npx", "args": ["-y", "@fabappai/cli", "mcp"] } } }
Put that in .cursor/mcp.json and the configuration travels with the repository. Whoever clones the project and
opens it in Cursor finds Fabapp already connected, with no manual step and no README explaining what to set up. To
have it in every project instead, the same block goes in the equivalent file in your home folder.
Once saved, Cursor's MCP panel lists the available tools. That list is your connection test, and its length tells you something: a read-only credential shows fewer, because the write tools are not offered.
What you need
Node 20 or newer, a Fabapp account on the Builder plan or above, and a single login:
npx @fabappai/cli login
The credential goes into the system keychain. It is never displayed, and it is revoked from one place, in the panel.
The loop
npx @fabappai/cli create "My store"
npx @fabappai/cli dev
dev assembles the app on your machine on the same template the platform publishes with, installs the dependencies
and starts the local server. With it running, ask for what you would do by hand: read the definition, create the
entities, write the screens. Then:
npx @fabappai/cli deploy
It uploads what you changed and publishes, in that order. Publishing before uploading would publish what is on the server, and your work would be left behind.
What is different about Cursor
Cursor is an editor, not a terminal, and that changes the rhythm. dev runs in the integrated terminal while you
talk in the side panel, and the files the assistant writes show up as a diff you accept or reject. For anyone who
reviews what the AI writes, that is the practical difference against a terminal assistant.
Two things to know: the per-project file is what makes the configuration travel with the repository, so it is worth committing; and the MCP panel is where you find out the connection dropped, rather than finding out through the assistant claiming the tool does not exist.
What to ask for
"Read the platform documentation before writing the schema." The field types are a closed list and anything else is refused; the access rules are the only thing between an app's data and the public.
"Read the current definition before changing it." Without the schema at hand, a wrong model id answers 404 and an invented field answers 422.
"Schema first, screens after." The SDK is generated against the data model.