> For the complete documentation index, see [llms.txt](https://docs.flora.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flora.ai/mcp/install/cursor.md).

# Install FLORA MCP in Cursor

Add FLORA MCP to Cursor with a one-click install link or \~/.cursor/mcp.json, then sign in with your FLORA account.

Cursor connects to [FLORA MCP](https://flora.ai/mcp) as a remote server and signs in with OAuth. Use the one-click link, or add three lines to your Cursor MCP config.

|             |                                                                                                                                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Fastest** | The [one-click install link](#one-click-install), which opens Cursor                                                                                                                                             |
| **Or**      | Add `flora` to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (one project)                                                                                                                           |
| **Needs**   | Cursor, and a FLORA plan: Starter or above for ongoing use, or Free on the $2.50 of usage every new workspace gets ([pricing](/plans-and-billing/pricing.md), [details](/mcp/authentication.md#who-can-connect)) |
| **Sign in** | In **Customize → MCPs**, connect `flora` and sign in on FLORA's sign-in page                                                                                                                                     |
| **Verify**  | "List my FLORA workspaces. Don't generate anything."                                                                                                                                                             |
| **Remove**  | **Customize → MCPs**, or delete the `flora` entry from `mcp.json`                                                                                                                                                |

## One-click install

<a href="cursor://anysphere.cursor-deeplink/mcp/install?name=flora&#x26;config=eyJ1cmwiOiJodHRwczovL2FnZW50cy5mbG9yYS5haS9tY3AifQ==" class="button primary">Install in Cursor</a>

The link opens Cursor and asks you to add a server named `flora`. If the button doesn't open Cursor, paste this link into your browser's address bar:

```
cursor://anysphere.cursor-deeplink/mcp/install?name=flora&config=eyJ1cmwiOiJodHRwczovL2FnZW50cy5mbG9yYS5haS9tY3AifQ==
```

The `config` value is the Base64 encoding of `{"url":"https://agents.flora.ai/mcp"}`.

## Or edit mcp.json

Add FLORA to `~/.cursor/mcp.json` to use it in every project. Create the file if it doesn't exist:

```json
{
  "mcpServers": {
    "flora": {
      "url": "https://agents.flora.ai/mcp"
    }
  }
}
```

If the file already lists other servers, add the `"flora"` entry inside the existing `mcpServers` object.

To share FLORA with a team in one repo, put the same JSON in `.cursor/mcp.json` at the project root and commit it. Each teammate signs in with their own FLORA account.

## Sign in

1. Open **Customize** in Cursor's sidebar, then **MCPs**. (In older versions, open Cursor's settings, then **Tools & MCP**.)
2. `flora` shows that it needs a sign-in. Click to connect it.
3. Your browser opens FLORA's sign-in page. Sign in with the account you use at [app.flora.ai](https://app.flora.ai), then return to Cursor.

Cursor stores the token and refreshes it. See [Authentication](/mcp/authentication.md).

## Check it works

In Cursor's agent chat, ask:

> List my FLORA workspaces. Don't generate anything.

Cursor asks permission to call `flora_list_workspaces`, then lists your workspaces.

## Use an API key instead (headless)

For a setup where no one can sign in through a browser, send a FLORA API key in a header and read it from an environment variable. See [API keys](/mcp/authentication.md#api-keys-for-headless-setups).

```json
{
  "mcpServers": {
    "flora": {
      "url": "https://agents.flora.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${env:FLORA_API_KEY}"
      }
    }
  }
}
```

## Skills

Your agent can load any FLORA skill on demand with `flora_discover_skills`. To keep FLORA's skills as files in your project, see [Skills and plugins](/mcp/skills.md).

## Gotchas

| Symptom                                                 | Cause                                                                                               | Fix                                                                                                |
| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `flora` shows an error status                           | Wrong URL, often a trailing slash (`/mcp/` returns 404), or a network that blocks `agents.flora.ai` | Use exactly `https://agents.flora.ai/mcp`, and check that your network allows it.                  |
| `flora` still asks you to sign in                       | The browser sign-in didn't finish                                                                   | Connect again from **Customize → MCPs** and complete the FLORA sign-in.                            |
| The agent doesn't see FLORA tools                       | The server is turned off, or Cursor hasn't reloaded it                                              | Turn `flora` off and on in **Customize → MCPs**.                                                   |
| Two FLORA servers appear                                | FLORA is in both the global and project `mcp.json`                                                  | Keep one entry.                                                                                    |
| The agent calls a retired tool such as `flora_generate` | Old project rules or a cached tool list                                                             | Those tools are retired. Update your rules and reload. See [Retired tools](/mcp/retired-tools.md). |

## Remove

Delete the `flora` entry from `~/.cursor/mcp.json` (or the project's `.cursor/mcp.json`), or remove it in **Customize → MCPs**. If you used an API key, also revoke it in FLORA; see [Disconnect and revoke](/mcp/authentication.md#disconnect-and-revoke).

## Next

* [Quickstart](/mcp/quickstart.md): your first image, with a cost quote first.
* [Batch-generate 20 to 500 assets](/mcp/recipes/batch.md).
* [Tools reference](/mcp/tools.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.flora.ai/mcp/install/cursor.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
