AI agent setup
For AI agents: how to add a Nevazu browser to your own MCP configuration in Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, OpenCode or any other client.
This page is written for agents, and for anyone who wants to see what their agent will do. A Nevazu user hands their agent a short setup from a browser’s Agent Connection panel. It names the server (for example nevazu-work) and its URL (https://connect.nevazu.com/mcp/ followed by the browser’s ID). A setup for an access key also names the environment variable that holds the key (for example NEVAZU_WORK_KEY), in this standard form:
{
"mcpServers": {
"nevazu-work": {
"type": "http",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID",
"headers": {
"Authorization": "Bearer ${NEVAZU_WORK_KEY}"
}
}
}
}The examples below use these names. Use the ones from the setup you were given, and follow the section for the client you are. A setup with no key variable is for signing in: follow Signing in instead of a key.
Rules
- The user creates the access key and saves it in the environment variable themselves. Refer to the variable as shown for your client. Never ask for the key, print it, or write its value into a file or a message.
- Add the server to your user-level configuration, so it works in every project, and keep the servers already there: merge into an existing file rather than replacing it.
- One server per browser: each browser has its own name, URL and key variable.
- Most clients load MCP servers when they start. Tell the user if you must be restarted. The variable must be set in the environment the client starts from: a new terminal has it; an app opened from the Dock or the Start menu may need to be quit and opened again.
- Check the connection with the server’s get_status tool, then take a screenshot to see the browser.
Steps for each client
Claude Code
Run this in a terminal. The user scope makes the server available in every project. The single quotes keep ${NEVAZU_WORK_KEY} as written, and Claude Code expands it each time it starts. Check with claude mcp list; the server is loaded after a restart.
claude mcp add-json --scope user nevazu-work '{"type":"http","url":"https://connect.nevazu.com/mcp/BROWSER_ID","headers":{"Authorization":"Bearer ${NEVAZU_WORK_KEY}"}}'Codex
Add this to ~/.codex/config.toml (create the file if it is missing). Codex sends the value of the named variable as the bearer token. The same in one command: codex mcp add nevazu-work --url https://connect.nevazu.com/mcp/BROWSER_ID --bearer-token-env-var NEVAZU_WORK_KEY. Check with codex mcp list; the server is loaded after a restart.
[mcp_servers.nevazu-work]
url = "https://connect.nevazu.com/mcp/BROWSER_ID"
bearer_token_env_var = "NEVAZU_WORK_KEY"
tool_timeout_sec = 90Cursor
Merge this into ~/.cursor/mcp.json, keeping any servers already there. Cursor substitutes ${env:NEVAZU_WORK_KEY} when it starts. The server appears in Cursor’s MCP settings, where it may need turning on.
{
"mcpServers": {
"nevazu-work": {
"url": "https://connect.nevazu.com/mcp/BROWSER_ID",
"headers": {
"Authorization": "Bearer ${env:NEVAZU_WORK_KEY}"
}
}
}
}VS Code
Merge this into the user MCP configuration (the command MCP: Open User Configuration) or into .vscode/mcp.json, keeping the entries already there. The first time the server starts, VS Code asks the user for the key and keeps it in its secret storage; the user pastes the value of NEVAZU_WORK_KEY there.
{
"inputs": [
{
"type": "promptString",
"id": "nevazu-work-key",
"description": "Nevazu access key (NEVAZU_WORK_KEY)",
"password": true
}
],
"servers": {
"nevazu-work": {
"type": "http",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID",
"headers": {
"Authorization": "Bearer ${input:nevazu-work-key}"
}
}
}
}Windsurf
Merge this into ~/.codeium/windsurf/mcp_config.json, keeping any servers already there, then refresh the MCP servers in Windsurf. Windsurf substitutes ${env:NEVAZU_WORK_KEY}.
{
"mcpServers": {
"nevazu-work": {
"serverUrl": "https://connect.nevazu.com/mcp/BROWSER_ID",
"headers": {
"Authorization": "Bearer ${env:NEVAZU_WORK_KEY}"
}
}
}
}Gemini CLI
Merge this into ~/.gemini/settings.json, keeping the settings already there. Gemini CLI expands ${NEVAZU_WORK_KEY} from the environment when it loads its settings. Check with /mcp.
{
"mcpServers": {
"nevazu-work": {
"httpUrl": "https://connect.nevazu.com/mcp/BROWSER_ID",
"headers": {
"Authorization": "Bearer ${NEVAZU_WORK_KEY}"
}
}
}
}OpenCode
Merge this into ~/.config/opencode/opencode.json (or opencode.json in a project), keeping the configuration already there. OpenCode substitutes {env:NEVAZU_WORK_KEY} when it loads its configuration; oauth: false stops it from trying to sign in with OAuth.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nevazu-work": {
"type": "remote",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID",
"enabled": true,
"oauth": false,
"headers": {
"Authorization": "Bearer {env:NEVAZU_WORK_KEY}"
}
}
}
}Any other client
Any client that speaks MCP over Streamable HTTP connects with the URL and an Authorization header carrying the key. Use the client’s own way of reading an environment variable; if it has none, tell the user where to put the key themselves. The curl command checks the key by listing the tools.
URL: https://connect.nevazu.com/mcp/BROWSER_ID
Header: Authorization: Bearer <the value of NEVAZU_WORK_KEY>
# Check the key (lists the tools):
curl -s https://connect.nevazu.com/mcp/BROWSER_ID -H "Authorization: Bearer $NEVAZU_WORK_KEY" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Signing in instead of a key
A setup for signing in names the server and its URL but no key variable:
{
"mcpServers": {
"nevazu-work": {
"type": "http",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID"
}
}
}Add the server by its URL alone and let your client sign in with OAuth, the authorization MCP defines. On the first connection the server answers 401 with where to sign in, your client registers itself, and a Nevazu page opens in the user’s web browser, where they approve the agent and choose how long it lasts (1, 7, 30 or 90 days). Your client keeps the tokens and renews them. When the sign-in ends or the user disconnects it, the server answers 401 again and the user signs in once more.
- Do not add an Authorization header, an environment variable or a key. Never ask the user for a key or a token.
- The rules above still apply: the user-level configuration, keeping the servers already there, one server per browser.
- If your client signs in only when the user acts (a command or a button), tell the user exactly what to run or press. If you cannot open a web browser yourself, give the user the link your client prints.
- Once the user has approved, check the connection with get_status, then take a screenshot.
Claude Code
Run this in a terminal, then restart Claude Code. In Claude Code, /mcp lists the server as needing authentication: choose it, then Authenticate, and the sign-in opens in the user’s web browser. Claude Code keeps the tokens and renews them.
claude mcp add --transport http --scope user nevazu-work https://connect.nevazu.com/mcp/BROWSER_IDClaude app
For Claude on the web, desktop or mobile: in Customize → Connectors, choose + Add, then Add custom connector, give it a name and paste this URL, keep the detected OAuth sign-in, then Add and Connect. The Nevazu page opens to approve it. On a Team or Enterprise plan, an owner adds the connector first under Organization settings → Connectors; members then choose Connect under Customize → Connectors.
https://connect.nevazu.com/mcp/BROWSER_IDCodex
Add this to ~/.codex/config.toml (create the file if it is missing), then run codex mcp login nevazu-work in a terminal: Codex opens the sign-in in the user’s web browser and keeps the tokens. The same server in one command: codex mcp add nevazu-work --url https://connect.nevazu.com/mcp/BROWSER_ID. If Codex says login is not supported, update it.
[mcp_servers.nevazu-work]
url = "https://connect.nevazu.com/mcp/BROWSER_ID"
tool_timeout_sec = 90
# Then sign in from a terminal: codex mcp login nevazu-workCursor
Merge this into ~/.cursor/mcp.json, keeping any servers already there. Cursor’s MCP settings show that the server needs to sign in; choose its button (Connect or Login), and the sign-in opens in the user’s web browser and returns to Cursor.
{
"mcpServers": {
"nevazu-work": {
"url": "https://connect.nevazu.com/mcp/BROWSER_ID"
}
}
}VS Code
Merge this into the user MCP configuration (the command MCP: Open User Configuration), keeping the entries already there. When the server starts, VS Code asks to allow it to sign in, opens the Nevazu page, and keeps the sign-in under Accounts.
{
"servers": {
"nevazu-work": {
"type": "http",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID"
}
}
}Windsurf
Merge this into ~/.codeium/windsurf/mcp_config.json, keeping any servers already there, then refresh the MCP servers in Windsurf. Windsurf opens the sign-in when the server first connects; if your version cannot sign in, update Windsurf.
{
"mcpServers": {
"nevazu-work": {
"serverUrl": "https://connect.nevazu.com/mcp/BROWSER_ID"
}
}
}Gemini CLI
Merge this into ~/.gemini/settings.json, keeping the settings already there. Gemini CLI finds the sign-in when it connects; if it does not start by itself, run /mcp auth nevazu-work.
{
"mcpServers": {
"nevazu-work": {
"httpUrl": "https://connect.nevazu.com/mcp/BROWSER_ID"
}
}
}OpenCode
Merge this into ~/.config/opencode/opencode.json (or opencode.json in a project), keeping the configuration already there. OpenCode starts the sign-in when it connects; opencode mcp auth nevazu-work starts it by hand.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nevazu-work": {
"type": "remote",
"url": "https://connect.nevazu.com/mcp/BROWSER_ID",
"enabled": true
}
}
}Any other client
Any client that implements MCP authorization (OAuth 2.1 with PKCE) signs in by itself. It finds Nevazu from the 401 response, registers with Dynamic Client Registration or a Client ID Metadata Document, and returns to a local callback (http://127.0.0.1 or localhost, any port), its own app scheme, or claude.ai, chatgpt.com or vscode.dev. In ChatGPT (Plugins → + → Add custom MCP server), enter the browser’s MCP URL as the MCP server URL and choose OAuth.
URL: https://connect.nevazu.com/mcp/BROWSER_ID
No header: the client signs in with OAuth (MCP authorization), which it discovers from the server.If it does not connect
- 401 Unauthorized: the key did not arrive or is not valid. The variable may be empty in the environment the client started from (the literal ${…} is then sent), or the key was revoked or has expired. Keys can no longer be created: switch to signing in (see Signing in instead of a key).
- 401 Unauthorized with a sign-in: it has ended or the user disconnected it. Start the sign-in again as shown for your client; the user approves it again.
- The Nevazu page says the request cannot be approved: it gives the reason, such as a callback Nevazu does not accept. Use a local callback.
- 429 Too many failed attempts: wait a minute before trying again.
- A tool says the browser is not running: ask the user to open it in Nevazu. An AI agent cannot wake a sleeping browser.
- A tool says AI agent access is off: the user turns on Allow AI agents to connect in the browser’s settings.