Cursor, VS Code, Windsurf, Cline

Ethora MCP server for Cursor, VS Code, Windsurf and Cline

Every editor that takes a URL and headers can use the hosted Ethora MCP server with one JSON block. The same server runs locally over stdio when you would rather launch a command.

One JSON block Remote or stdio Same 90 tools everywhere
Ethora MCP server

In 30 seconds

The Ethora MCP server is a hosted Streamable HTTP endpoint at https://mcp.chat.ethora.com/mcp. Cursor, Windsurf, Cline and Gemini CLI configure it under a mcpServers key with url and headers; VS Code and GitHub Copilot agent mode use a servers key with "type": "http". The header is Authorization: Bearer <your API key>. For local development the npm package @ethora/mcp-server runs over stdio with one-click install buttons in the README.

Use this if

  • you write the app in Cursor or VS Code and want the same assistant to provision Ethora apps, rooms and agents
  • your editor supports remote MCP servers with custom headers, which all of the above do
  • you want a config you can paste into a project file or your global settings

Best for: developers who want provisioning and code in one editor session, with the remote server as the default and stdio for offline or CI work.

Step by step

1

Get a key

In the Ethora web app open Account, AI Assistants and create an API key; the page shows a Cursor config with a copy button. Keys default to 90 days, max 365, value shown once. No account? Register or let the assistant call ethora-user-register on the open endpoint.

2

Cursor

Put the block in .cursor/mcp.json at the project root or ~/.cursor/mcp.json for every project; servers are managed from the Customize panel. Cursor asks for approval before using MCP tools by default. The same block works for Windsurf (~/.codeium/windsurf/mcp_config.json), Cline (cline_mcp_settings.json, opened from the MCP Servers icon) and Gemini CLI (~/.gemini/settings.json).

{
  "mcpServers": {
    "ethora": {
      "url": "https://mcp.chat.ethora.com/mcp",
      "headers": { "Authorization": "Bearer <your API key>" }
    }
  }
}
3

VS Code and GitHub Copilot agent mode

Create .vscode/mcp.json; the top-level key is servers, not mcpServers, and remote servers declare "type": "http". The MCP: Add Server command fills the same fields at workspace or user level. Tools appear behind the Configure Tools button in the chat input, where you can toggle them; you may be asked to confirm each invocation.

{
  "servers": {
    "ethora": {
      "type": "http",
      "url": "https://mcp.chat.ethora.com/mcp",
      "headers": { "Authorization": "Bearer <your API key>" }
    }
  }
}
4

Or one-click install the stdio package

The GitHub README has Add to Cursor and Install in VS Code buttons that register npx -y @ethora/mcp-server as a local stdio server. Supply credentials through environment variables or ethora-configure at runtime for a quick test.

{ "mcpServers": { "ethora": { "command": "npx", "args": ["-y", "@ethora/mcp-server"] } } }

# credentials, if you run it by hand
ETHORA_API_URL=https://api.chat.ethora.com/v1 ETHORA_APP_JWT="JWT <your app jwt>" npx -y @ethora/mcp-server
5

Try it

Open the chat in agent mode and ask for a documentation lookup first (search and fetch need no login), then something real. ethora-status should report authMode: user; when unsure of the call order the assistant runs ethora-help.

6

Remote or stdio?

Remote when you want no local process, revocable keys and OAuth for shared setups. Stdio when the machine cannot hold a personal key (CI), when you point ETHORA_API_URL at a self-hosted Ethora API, or when you need ETHORA_B2B_TOKEN for server-side provisioning. Same tools; app deletion on stdio needs ETHORA_MCP_ENABLE_DANGEROUS_TOOLS=true.

The tools this uses

Names and descriptions come from the server’s own tool list. Read-only tools are safe to auto-approve; destructive ones make your client ask first. Full reference.

ToolNameWhat it doesAccess
Session Statusethora-statusReport the current Ethora MCP session state: configured API URL, active auth mode, which credentials are present (booleans like hasAppJwt - values never echoed),...read-only
Help and Next Stepsethora-helpTask-oriented orientation for this MCP server: explains the three Ethora auth modes (user / app-token / B2B) and recommends next tool calls + recipes based on current...read-only
Register Accountethora-user-registerCreate a new Ethora user account by email + first/last name, then log in and bind the session.write
Log Inethora-user-loginAuthenticate as an existing Ethora user with email + password.write
Create API Keyethora-api-key-createMint a long-lived, revocable API key for the currently logged-in user.write
List API Keysethora-api-key-listList the current user’s API keys (id, name, createdAt, expiresAt).read-only
Revoke API Keyethora-api-key-revokeRevoke one of the current user’s API keys by id.destructive
List Appsethora-app-listList all Ethora apps (tenants) owned by the currently logged-in user.read-only
Create Appethora-app-createCreate a new Ethora app (tenant) owned by the currently logged-in user.write
Widget Embed Snippetethora-widget-embed-snippetGenerate the <script> tag that embeds the Ethora AI chat widget (the floating launcher + chat panel that website visitors use) for an app, plus the prerequisites that...read-only

A worked example

“Create an Ethora app called Docs Helper, add a room called Q&A, crawl https://docs.example.com into its knowledge base, create an agent that answers from those docs, invite it to the room and give me the widget script tag for this site.”
  1. ethora-app-create { displayName: "Docs Helper" }
  2. ethora-app-select { appId }
  3. ethora-app-create-chat { title: "Q&A" }
  4. ethora-sources-site-crawl-v2-wait { url: "https://docs.example.com", followLink: true }
  5. ethora-agents-create-v2 { name: "Docs Helper", prompt: "Answer from the indexed docs...", isRAG: true }
  6. ethora-agent-invite-to-chat { agentIdOrAddress, chatJid }
  7. ethora-agents-activate-v2 { agentId, chatJid }
  8. ethora-widget-embed-snippet { botName: "Docs Helper" }

An app with a crawled knowledge base, a RAG agent active as the default responder, and a script tag the editor can drop into the site.

Good to know

FAQ

Where is mcp.json in Cursor?

Project level: .cursor/mcp.json in the project root. Global: ~/.cursor/mcp.json in your home directory. Both use a top-level mcpServers key; for a remote server such as Ethora give it url and headers. Cursor also lists and manages servers from the Customize panel.

How do I add a remote MCP server to VS Code?

Create .vscode/mcp.json with a top-level servers key, set "type": "http", the url and any headers, or run the MCP: Add Server command. Tools then appear under Configure Tools in the chat input for agent mode. MCP: Open User Configuration edits the user-level file.

What is the Windsurf MCP config file?

~/.codeium/windsurf/mcp_config.json. It uses the same mcpServers shape as Cursor; Windsurf documents serverUrl for remote servers and also accepts url, with a headers object for the Authorization header. Manage servers from the MCPs icon in the Cascade panel or the settings.

Should I use the remote MCP server or the npm package?

Remote for day-to-day work: no local process, revocable keys and OAuth. Stdio (npx -y @ethora/mcp-server) for CI, for a self-hosted Ethora API with a custom ETHORA_API_URL, or for B2B tokens. Both expose the same tool set, recipes and help.

Does Cursor ask before running MCP tools?

By default yes: Cursor asks for approval before using MCP tools, and you can expand the arrow next to the tool name to inspect the arguments. Allowlisted tools in Auto-review mode run immediately. The Ethora server marks read-only and destructive tools so you can allowlist reads and keep confirming deletes.

Get started

Get a connector URL

Create a free Ethora account, copy the Cursor config from Account, AI Assistants, and paste it into mcp.json. The tool reference lists every call your editor can make.

Free tier available Revocable API keys Self-host with the monoserver