---
title: "Connect to Fluveo MCP"
description: "Add Fluveo MCP to Claude Code, Cursor, Codex, VS Code or any client."
url: https://docs.fluveo.com/agents/mcp/connect/
---

> Index of every page: https://docs.fluveo.com/llms.txt. Integrating Fluveo? Read https://docs.fluveo.com/agents/integrate.md first.

> Too long? This page with code in one language only: https://docs.fluveo.com/agents/mcp/connect.curl.md (cURL), https://docs.fluveo.com/agents/mcp/connect.node.md (Node.js), https://docs.fluveo.com/agents/mcp/connect.python.md (Python), https://docs.fluveo.com/agents/mcp/connect.php.md (PHP).

# Connect to Fluveo MCP

Add Fluveo MCP to Claude Code, Cursor, Codex, VS Code or any client.

The Fluveo MCP server is not available in production yet.

## Before you start

For OAuth, you need a Dashboard sign-in with the owner, admin or developer role in the store the agent will use. [MCP sign-in with OAuth](https://docs.fluveo.com/agents/mcp/oauth.md) shows the consent page and how to revoke a connection.

For an agent key, you need a restricted test key (`rk_test_...`) made in the [Dashboard](https://dash.fluveo.com) for an AI agent. [Authentication](https://docs.fluveo.com/agents/mcp/authentication.md#agent-keys) shows how to make one.

Put the key in `FLUVEO_MCP_KEY` in the shell that starts your client. `read -s` takes the key without showing it on screen or saving it in the shell history.

```bash
read -rs FLUVEO_MCP_KEY && export FLUVEO_MCP_KEY
```

Start the client from that same shell. Each file on this page names the variable, never the key, so no file holds a secret and you can commit it with your project.

> **For AI agents:**
>
> Read the agent key only from `FLUVEO_MCP_KEY`. Never ask the person to paste the key into the chat, and never write a key into a configuration file. Write the variable in its place.
> With OAuth, the person signs in only in the browser. Never ask for a password, a code or a token in the chat.

## Claude Code

### Sign in with OAuth

Add the server with its address only.

The Fluveo MCP server is not available in production yet.

Start Claude Code and run `/mcp`. Pick `fluveo` and start its sign-in. Claude Code opens the consent page in your browser. After you click **Allow access**, the browser returns to Claude Code, and `/mcp` shows `fluveo` as connected, with its tools.

### Use an agent key

Add the server to `.mcp.json` at the root of your project. Claude Code replaces `${FLUVEO_MCP_KEY}` with the value of the variable when it starts the server.

The Fluveo MCP server is not available in production yet.

Claude Code asks you to approve a server from a project's `.mcp.json` before it connects. Inside Claude Code, run `/mcp`. The list shows `fluveo` as connected, with its tools. From the shell, `claude mcp get fluveo` shows the same server.

To use the server for one session only, save the same JSON to any file and pass it with `--mcp-config`:

```bash
claude --mcp-config fluveo.json
```

## Cursor

### Sign in with OAuth

Add the server to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` for every project, with its address and no headers.

The Fluveo MCP server is not available in production yet.

With the Cursor CLI, approve the server once, sign in, then list its tools. `login` opens the consent page in your browser.

```bash
cursor-agent mcp enable fluveo
cursor-agent mcp login fluveo
cursor-agent mcp list-tools fluveo
```

### Use an agent key

Add the key's header to the same entry. Cursor reads an environment variable as `${env:NAME}`.

The Fluveo MCP server is not available in production yet.

With the Cursor CLI, approve the server once, then list its tools:

```bash
cursor-agent mcp enable fluveo
cursor-agent mcp list-tools fluveo
```

## Codex

### Sign in with OAuth

Add the server with its address, then sign in. `codex mcp login` opens the consent page in your browser. On a machine without a browser, add `--no-browser`: Codex prints the address to open, and then takes the address your browser lands on after you click **Allow access**.

The Fluveo MCP server is not available in production yet.

### Use an agent key

Add the server to `~/.codex/config.toml`. Codex takes the name of the variable in `bearer_token_env_var` and sends its value as the Bearer token.

The Fluveo MCP server is not available in production yet.

Either way, show the server Codex loaded:

```bash
codex mcp get fluveo
```

## VS Code

VS Code's Copilot agent reads MCP servers from `.mcp.json` at the root of the workspace, or from `~/.copilot/mcp-config.json` for every workspace. Both files take the same shape as Claude Code's, so one `.mcp.json` serves both clients.

### Sign in with OAuth

Add the server with its address and no headers.

The Fluveo MCP server is not available in production yet.

Open the Command Palette and run **MCP: List Servers**. When VS Code asks you to sign in to `fluveo`, accept, and it opens the consent page in your browser. If it does not ask, pick **Authenticate** in the server's actions.

### Use an agent key

Add the key's header to the same entry. VS Code reads an environment variable as `${NAME}`, in braces.

The Fluveo MCP server is not available in production yet.

Start VS Code from the shell that holds the key, for example with `code .`, so the variable reaches it. Then open the Command Palette and run **MCP: List Servers**. The list shows `fluveo`.

## Other clients

The Fluveo MCP server is not available in production yet.

## Check the connection

Ask the agent to call `get_account_info`. It answers the store the key belongs to, or the store you picked on the consent page. `account_id` starts with `mch_`, and `livemode` is `false`, because the server works in test mode only.

*get_account_info (first fields)*

```json
{
  "account_id": "mch_...",
  "livemode": false,
  "permissions": { "account": "read" }
}
```

When `get_account_info` is not in the agent's tools, the key or the connection has no **Read** permission on **Account**. [Tools](https://docs.fluveo.com/agents/mcp/tools.md) lists every tool and the permission it needs.

## When it does not connect

The server answers a refused request with an HTTP status, and a 401 also carries a JSON body with a `code`.

| Answer | Why | What to do |
| --- | --- | --- |
| 401 `api_key_required` | The request carried no key or token. With an agent key, `FLUVEO_MCP_KEY` was empty in the shell that started the client. With OAuth, the client has not signed in yet. | Export the key in that shell and start the client again, or start the client's sign-in. |
| 401 `invalid_token` | The OAuth access token expired, or the connection was revoked or ended. | Start the client's sign-in again, such as `/mcp` in Claude Code. |
| 401 `agent_key_required` | The key is a secret, publishable or live key, or a restricted test key made without **This key is for an AI agent**. | Use a restricted test key (`rk_test_...`) made for an AI agent, or sign in with OAuth. |
| 401 `api_key_invalid` | No store has this key. | Copy the key again from the Dashboard, or make a new one. |
| 401 `api_key_expired` | The key expired or was revoked. | Make a new agent key in the Dashboard. |
| 403 | The request came with a browser `Origin` the server does not allow. | Connect from a client that runs outside the browser. |
| 406 | The `Accept` header leaves out `application/json`. | Send `Accept: application/json`, or no `Accept` header. |

[Security](https://docs.fluveo.com/agents/mcp/security.md) explains what the server refuses and why.

## Next

- [Tools](https://docs.fluveo.com/agents/mcp/tools.md): Every tool with its arguments and answers.
- [MCP sign-in with OAuth](https://docs.fluveo.com/agents/mcp/oauth.md): The consent page, the connection it makes, and how to revoke it.
- [Authentication](https://docs.fluveo.com/agents/mcp/authentication.md): Make, use and revoke an agent key.
- [Fluveo MCP](https://docs.fluveo.com/agents/mcp.md): What an agent can and cannot do.
