Docs navigation

Use your server

Connect an agent

Every deployed server speaks streamable HTTP MCP at https://<slug>.foro.sh/mcp. The project's Overview tab has this exact snippet pre-filled with your own slug and token, ready to copy - the block below is the shape it generates.

How do I add my foro.sh server to Claude, Cursor, Codex, VS Code, Windsurf, Antigravity, or Le Chat?

claude_desktop_config.json / .cursor/mcp.json / mcp_config.json

Claude Desktop, Cursor, and Windsurf all read the same JSON shape - only the file it lives in differs by client:

{
  "mcpServers": {
    "your-project": {
      "url": "https://your-project.foro.sh/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

The key inside mcpServers can be anything memorable - it's a local label, not something foro reads back. The headers field carries the project's bearer token; see authentication for what it protects and how to rotate it. A project that requires no auth omits headers entirely - just the URL. So does one behind OAuth, where the client discovers what to send and negotiates its own token rather than reading one from a config file.

VS Code's .vscode/mcp.json uses a similar JSON shape, but under a servers key (not mcpServers) with an added type: "http" field on each entry - see the dashboard's Overview tab for the exact block.

Codex reads TOML instead, in ~/.codex/config.toml, with the same URL and bearer token expressed as an http_headers table:

[mcp_servers.your-project]
url = "https://your-project.foro.sh/mcp"
http_headers = { Authorization = "Bearer <token>" }

Antigravity's ~/.gemini/config/mcp_config.json reads the same mcpServers shape as Claude, Cursor, and Windsurf, but names the URL field serverUrl instead of url.

Le Chat is the exception - there's no config file. Add a custom MCP connector in Le Chat's UI, paste the same https://<slug>.foro.sh/mcp URL, and - for a private project - set its authentication to the project's bearer token. The Overview tab surfaces both values, ready to copy.

claude.ai's own web connector (Settings → Connectors, not the desktop app's claude_desktop_config.json above) is the same shape as Le Chat - no config file, paste the URL into its UI - but its connector settings have no bearer-token field, only a name, the URL, and an optional OAuth client id/secret. A project on Token auth can't be reached from claude.ai's connector at all: set Server access to None or OAuth first.

Worth a detour before pasting a token into a client for the first time: run the same tool from the dashboard's Playground to confirm it returns what you expect.

Does the URL change after a redeploy?

No. The URL is stable across deployments, unaffected by which branch is checked out, or how many times the server has been redeployed since. Paste it into a laptop, a second machine, or a CI job once; there's nothing device-specific about the config.

Can I use a different MCP client?

Yes. The clients above are what the dashboard has ready-made instructions for, but the server itself is a standard streamable-HTTP MCP endpoint - any client that speaks that transport can point at the same URL with the same header, no foro-specific SDK required.