# Connect Cursor

Cursor connects to a gateway through an entry in `mcp.json`. A person signs in with a gateway user. A setup that cannot open a browser sends an API key.

## Before you begin

- A gateway that serves at least one API. See [Create a gateway](https://docs.faustine.ai/agent-gateway/create-a-gateway/).
- A [gateway user](https://docs.faustine.ai/agent-gateway/gateway-users/) or an [API key](https://docs.faustine.ai/agent-gateway/api-keys/) in the environment you connect to.

The configuration on this page is in the gateway's **Connect** tab, under **Cursor**, with your gateway's values filled in. For Cursor's own screens, see [Model Context Protocol](https://docs.cursor.com/context/model-context-protocol) in the Cursor docs.

## Add the gateway

Add the server to `~/.cursor/mcp.json` to use it in every project, or to `.cursor/mcp.json` in a project to use it there. `<gateway>` is the name Cursor shows for the server. The portal uses the gateway's slug.

**Gateway user**

```json filename="~/.cursor/mcp.json"
{
  "mcpServers": {
    "<gateway>": {
      "url": "https://gateway.faustine.ai/<workspace>/<gateway>/mcp"
    }
  }
}
```

Then sign in:

1. In Cursor, go to **Settings** > **MCP**.
2. Select the server, then **Connect**. A browser window opens on the gateway's sign-in page.
3. Enter the username and password of the gateway user.

**API key**

Replace `<GATEWAY_KEY>` with the key you saved when you created it.

```json filename="~/.cursor/mcp.json"
{
  "mcpServers": {
    "<gateway>": {
      "url": "https://gateway.faustine.ai/<workspace>/<gateway>/mcp",
      "headers": {
        "Authorization": "Bearer <GATEWAY_KEY>"
      }
    }
  }
}
```

> **Warning:** A project's `.cursor/mcp.json` is part of the repository. Put an API key only in `~/.cursor/mcp.json`, or use a gateway user.

## Make the first call

Ask Cursor's agent what it can do with the gateway, or ask for something the API returns, such as a list of contacts.

In the portal, the request appears in the gateway's **Logs** tab, and the **Cursor** card in the **Connect** tab shows when the client was last seen.

Cursor cannot ask the person for a confirmation. For an operation that requires one, the gateway refuses the call unless the credential is set to **Run without asking**. A new gateway user and a new API key both start on **Refuse**. See [Confirmation](https://docs.faustine.ai/agent-gateway/confirmation/).

## Next steps

- [Scope a key or user](https://docs.faustine.ai/agent-gateway/scope-a-credential/): limit what Cursor can call.
- [Serving modes: Code and Tools](https://docs.faustine.ai/agent-gateway/serving-modes/): which tools the gateway gives Cursor.
- [Connect clients](https://docs.faustine.ai/agent-gateway/connect-clients/): the other clients a gateway supports.
