> From the [Strife developer docs](https://strife.app/docs/tools/connect-strife-to-lovable). Every page is listed in [llms.txt](https://strife.app/docs/llms.txt).

# Connect Strife to Lovable

Use your real content while you build in Lovable: connect the Strife MCP server as a chat connector, turn a page you already published into a new layout, and build against your own templates instead of placeholder data.

[Lovable](https://lovable.dev) builds your app from a chat. Connect Strife's MCP server to that chat and it can also see the content you already have: the templates your team writes against, the pages in them, and the words on those pages.

That changes what you can ask for. Instead of describing a layout and filling it with placeholder text, you can point at a page you already published and ask for something new built from it — and the components you get back use your real field names, so they still work when they meet real data.

> [!NOTE]
> A chat connector works while you build. It is personal to you, and it is not part of your published app — your app's visitors never reach Strife through it. See [what this does and doesn't do](https://strife.app/docs/tools/connect-strife-to-lovable.md#what-this-does-and-doesnt-do).

## Connect the MCP server

In Lovable, open **Connectors**. The **+** button sits at the top right of the catalog, next to the button that closes it — it is easy to miss. It offers three things:

* **Custom connector** — connect an API to your workspace
* **MCP server** — connect an MCP to your chat
* **MCP registry** — add a directory of MCP servers

Choose **MCP server**. Strife is one server: not an API to wire up field by field, and not a directory to browse.

Enter `https://mcp.strife.app/mcp` as the URL, keep the default OAuth sign-in, and give it a name such as Strife.

Lovable then opens a Strife page in your browser:

1. Sign in to Strife, if you aren't already.
2. Choose the workspace to connect.
3. Check the name under **Details** and choose **Approve**.

The assistant then works in the teams of that workspace, with your own permissions. There is no key to copy and no client id to enter — Strife registers the client itself.

Each connection covers one workspace. To work in two, add the server twice under different names and approve a different workspace for each.

## Turn a page you already have into a new layout

> Find our article about the spring launch in Marketing and build a campaign page from it: the same copy, one hero, three sections and a call to action.

The assistant finds the page and reads its fields, then writes the new page from what is actually there. Because the copy is real, the layout meets real sentence lengths, real headings and real image sizes from the first render — which is where placeholder text usually hides the problems.

## Build against your real template

> Show me the fields in the Article template, then build a list page for Articles.

The assistant asks Strife for the template and gets every field back with an example value. That is what keeps generated code from inventing `post.title` when your field is called `heading`, and it means the component handles what your content really looks like: rich text arrives as HTML, a label field as `"Group/Label"` strings, a reference as the target page's own fields.

## Write content while you build

> Create a draft FAQ item in Marketing that explains how refunds work.

Everything the assistant writes goes into a draft. Creating, editing, translating — none of it touches a published page, and publishing is a separate step that asks you first. So a prototype can have the content it needs without changing what your site serves today.

## What this does and doesn't do

The connector reads and writes **content**. It does not:

* **change templates** — your schema is code, deployed with the [CLI](https://strife.app/docs/reference/cli.md)
* **upload media** — you add files in Studio; the assistant can find and reuse what is already there
* **reach Strife from your published app** — a chat connector works in the Lovable chat, not in the app you ship

That last point is worth being precise about. A published Lovable app serves what was built into it; it does not fetch content from Strife while someone is visiting. If you want a site that renders your content and refreshes when you publish, host it where a Node process runs: a Strife site reads from RavenDB with a client certificate, and neither a browser nor a managed edge runtime can present one. [Node.js](https://strife.app/docs/tutorials/getting-started/nodejs.md) and [Astro](https://strife.app/docs/tutorials/astro.md) cover that.

## Troubleshooting

**"could not reach registry: registry returned 405."** You picked **MCP registry** instead of **MCP server**. A registry is a directory of servers, so Lovable asks the URL for a list of them; the MCP endpoint only answers JSON-RPC. Start again and choose MCP server.

**The assistant can't find a team.** It may be connected to another workspace. Ask it to list the teams. If yours isn't there, sign the connector out, connect again and approve the right workspace.

**A change is refused.** Publishing, discarding, snapshots and label changes need you to be a member of the team, and snapshots and label changes also need edit rights.

## The full tool list

The [MCP server](https://strife.app/docs/tools/mcp-server.md) page lists all 28 tools, what each one does, and how the same server connects to Claude, Cursor and VS Code.
