> ## Documentation Index
> Fetch the complete documentation index at: https://help.fanaura.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Developer tools

> Connect Fanaura to Cursor, VS Code with GitHub Copilot, Claude Code, Gemini CLI, Windsurf, Codex, and any other MCP client.

Editors and command-line agents use the same server as Claude and ChatGPT. Add the URL to your client's MCP settings, then sign in once in the browser.

<Info>
  **Server URL:** `https://app.fanaura.com/mcp`
  **Transport:** Streamable HTTP
  **Sign-in:** OAuth 2.1 with PKCE and dynamic client registration. Desktop apps may use a loopback redirect. No API key, no client ID to paste.
</Info>

## Add the server

<Tabs>
  <Tab title="Cursor" icon="mouse-pointer-2">
    Add this to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` for every project.

    ```json .cursor/mcp.json theme={null}
    {
      "mcpServers": {
        "fanaura": {
          "url": "https://app.fanaura.com/mcp"
        }
      }
    }
    ```

    Open **Cursor Settings**, then **MCP**. Fanaura shows **Needs login**. Click it, sign in on the Fanaura page, and tap **Allow access**. Cursor returns you to the editor on its own.
  </Tab>

  <Tab title="VS Code" icon="code">
    Add this to `.vscode/mcp.json`. GitHub Copilot agent mode reads it.

    ```json .vscode/mcp.json theme={null}
    {
      "servers": {
        "fanaura": {
          "type": "http",
          "url": "https://app.fanaura.com/mcp"
        }
      }
    }
    ```

    Click **Start** above the server entry. VS Code opens the Fanaura sign-in page in your browser and finishes on `127.0.0.1` or `vscode.dev`.
  </Tab>

  <Tab title="Claude Code" icon="square-terminal">
    Run this once in your terminal:

    ```bash theme={null}
    claude mcp add --transport http fanaura https://app.fanaura.com/mcp
    ```

    Then start Claude Code, type `/mcp`, choose **fanaura**, and choose **Authenticate**. Add `--scope user` to the first command to use Fanaura in every project.
  </Tab>

  <Tab title="Gemini CLI" icon="gem">
    Add this to `~/.gemini/settings.json`:

    ```json ~/.gemini/settings.json theme={null}
    {
      "mcpServers": {
        "fanaura": {
          "httpUrl": "https://app.fanaura.com/mcp"
        }
      }
    }
    ```

    Start Gemini CLI and run `/mcp auth fanaura` to sign in.
  </Tab>

  <Tab title="Windsurf" icon="wind">
    Add this to `~/.codeium/windsurf/mcp_config.json`:

    ```json mcp_config.json theme={null}
    {
      "mcpServers": {
        "fanaura": {
          "serverUrl": "https://app.fanaura.com/mcp"
        }
      }
    }
    ```

    Refresh the MCP list in Cascade and sign in when the browser opens.
  </Tab>

  <Tab title="Codex" icon="box">
    Add this to `~/.codex/config.toml`:

    ```toml ~/.codex/config.toml theme={null}
    [mcp_servers.fanaura]
    url = "https://app.fanaura.com/mcp"
    ```

    Then run `codex mcp login fanaura`.
  </Tab>
</Tabs>

<Note>
  Client settings formats change often. If a field name above stops working, check your client's MCP documentation. The URL never changes.
</Note>

## Any other MCP client

Any client that supports remote MCP servers over Streamable HTTP with OAuth can connect. The client needs to do four things, and most do them for you:

<Steps>
  <Step title="Discover the sign-in server">
    Call `https://app.fanaura.com/mcp` without a token. Fanaura answers `401` with `WWW-Authenticate: Bearer realm="fanaura-mcp"`. The client then reads `https://app.fanaura.com/.well-known/oauth-protected-resource` and `https://app.fanaura.com/.well-known/oauth-authorization-server`.
  </Step>

  <Step title="Register itself">
    `POST https://app.fanaura.com/api/oauth/mcp/register` with its redirect URI. Fanaura returns a client ID.
  </Step>

  <Step title="Send the user to sign in">
    Open `https://app.fanaura.com/oauth/mcp/authorize` with PKCE (S256). The user signs in and taps **Allow access**.
  </Step>

  <Step title="Exchange the code">
    `POST https://app.fanaura.com/api/oauth/mcp/token`. Send the access token as `Authorization: Bearer` on every MCP request.
  </Step>
</Steps>

Full endpoint details are on the [authentication page](/mcp-server/authentication).

## Allowed return addresses

Fanaura only sends a sign-in back to addresses it trusts. Desktop clients work because they return to the same computer.

| Return address | Used by |
| - | - |
| `http://localhost:<port>/...`, `http://127.0.0.1:<port>/...`, `http://[::1]:<port>/...` | Cursor, VS Code, Claude Code, Gemini CLI, Codex, Windsurf |
| `cursor://anysphere.cursor-mcp/oauth/callback` | Cursor desktop |
| `https://www.cursor.com/...` | Cursor in the browser and background agents |
| `https://vscode.dev/redirect` | VS Code in the browser |
| `https://claude.ai/...`, `https://*.anthropic.com/...` | Claude |
| `https://chatgpt.com/...`, `https://*.openai.com/...` | ChatGPT |

<Warning>
  Any other `http://` address, a custom scheme other than Cursor's, or a URL with a username or password is refused. If your client uses a hosted callback that is not on this list, email [support@fanaura.com](mailto:support@fanaura.com) with the exact URL.
</Warning>

## MCP Registry

Fanaura is not listed in the official MCP Registry yet. Add `https://app.fanaura.com/mcp` to your client directly.

## Test it from the terminal

You can confirm the server answers before you set up a client. Without a token, a `401` is the correct answer.

```bash theme={null}
curl -i -X POST https://app.fanaura.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

```text theme={null}
HTTP/2 401
www-authenticate: Bearer realm="fanaura-mcp"
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.