How to use Windsurf with Fabapp AI
Connecting Windsurf to your account
Windsurf has its own MCP configuration file, and the editor's plugins panel opens it for you. The block is the same:
{ "mcpServers": { "fabapp": { "command": "npx", "args": ["-y", "@fabappai/cli", "mcp"] } } }
After saving, Windsurf offers to reload the servers. Fabapp's tools then appear in the panel's list.
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 Windsurf
Windsurf's flow is a long conversation with the agent, and what pays off most here is leaving dev running
alongside. Every screen change shows in the browser; every schema change means the local app sees the new fields
without you publishing anything.
One note about credits that often confuses people: Windsurf credits and Fabapp credits are different things. Windsurf charges for using its model. Fabapp charges build credits when the platform's AI generates code, which is not what happens when your assistant is the one writing. Through the MCP path, what your Fabapp account spends is the plan, not generation credit.
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.