Claude Code

Ethora MCP server for Claude Code

One command adds the hosted Ethora MCP server to Claude Code. From then on the assistant in your terminal can create apps, rooms, agents and knowledge bases while it writes the code that talks to them.

One-liner install Local, project or user scope stdio option for CI
Ethora MCP server

In 30 seconds

Claude Code registers remote MCP servers with claude mcp add --transport http. For Ethora you pass the personal connector URL (key in the path, no headers) or the open endpoint plus an Authorization: Bearer header. The server is the hosted Streamable HTTP endpoint at https://mcp.chat.ethora.com/mcp with 90 tools. --scope user makes it available in every project; claude mcp list verifies it.

Use this if

  • you build with Claude Code and want it to provision the Ethora app, rooms and agents your code integrates with
  • you want the same tools in every project without pasting config files
  • you need a headless variant for CI or scripted runs

Best for: developers who live in the terminal and want Ethora provisioning and app code in the same session.

Step by step

1

Get a key

In the Ethora web app open Account, AI Assistants, create an API key and copy the Claude Code one-liner it shows. Or skip the browser: add the open endpoint with no key, then ask Claude Code to call ethora-user-register or ethora-user-login { createApiKey: true }; the result includes a key and connectorUrl, shown once.

2

Add the server

Two equivalent forms: key in the path, or the open endpoint with a Bearer header.

# with a personal connector URL (no headers needed)
claude mcp add --transport http ethora https://mcp.chat.ethora.com/mcp/k/<your API key>

# or the open endpoint plus a Bearer header
claude mcp add --transport http ethora https://mcp.chat.ethora.com/mcp --header "Authorization: Bearer <your API key>"
3

Pick a scope

The default scope is local: stored in ~/.claude.json for the current project only. --scope user loads it in all your projects. --scope project writes .mcp.json at the project root for version control, so keep personal keys out of it: use the open /mcp endpoint and let each developer log in inside the session. Claude Code prompts before using project-scoped servers.

# global for you, every project
claude mcp add --transport http ethora --scope user https://mcp.chat.ethora.com/mcp/k/<your API key>

# shared with the team, no secret in the repo
claude mcp add --transport http ethora --scope project https://mcp.chat.ethora.com/mcp
4

Verify

claude mcp list prints every server with its health; claude mcp get ethora shows details. Inside a session /mcp shows status, authenticates OAuth servers, toggles, clears authentication or reconnects. Then ask for ethora-status: authMode: user and hosted: true mean you are set.

claude mcp list
# ethora should show as connected
claude mcp get ethora
# inside a session:
/mcp
5

A worked terminal session

Start Claude Code in your project and describe the app. It provisions through the MCP tools and can write the integration in the same turn: ethora-widget-embed-snippet for the website widget, ethora-generate-chat-component-app-tsx for a chat component App.tsx.

$ claude
> Create an Ethora app called Support Desk with a room called Tickets,
  create a triage agent, invite it to the room, post “My invoice is wrong”
  and show the reply. Then give me the widget script tag for our site.

# calls, in order: ethora-app-create, ethora-app-select, ethora-app-create-chat,
# ethora-agents-create-v2, ethora-agent-invite-to-chat, ethora-chats-message-v2,
# ethora-agents-activate-v2, ethora-widget-embed-snippet
6

stdio for CI and scripted runs

Where a job cannot hold a personal key, run the local package with an app JWT from environment variables. In claude -p runs project-scoped servers load without prompting. Same tools; app deletion is off unless ETHORA_MCP_ENABLE_DANGEROUS_TOOLS=true.

claude mcp add ethora -e ETHORA_API_URL=https://api.chat.ethora.com/v1 -e ETHORA_APP_JWT="JWT <your app jwt>" -- npx -y @ethora/mcp-server

# or start it directly for another stdio client
ETHORA_API_URL=https://api.chat.ethora.com/v1 ETHORA_APP_JWT="JWT <your app jwt>" npx -y @ethora/mcp-server

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
Generate Chat Component App.tsxethora-generate-chat-component-app-tsxGenerate a ready-to-paste React App.tsx snippet that mounts @ethora/chat-component.read-only

A worked example

“Create an Ethora app called Support Desk with a room called Tickets, create a triage agent and invite it, post "My invoice is wrong" and show the reply, then generate the App.tsx that mounts the chat component for that room.”
  1. ethora-app-create { displayName: "Support Desk" }
  2. ethora-app-select { appId }
  3. ethora-app-create-chat { title: "Tickets" }
  4. ethora-agents-create-v2 { name: "Triage", prompt: "You triage support questions..." }
  5. ethora-agent-invite-to-chat { agentIdOrAddress, chatJid }
  6. ethora-chats-message-v2 { text: "My invoice is wrong", roomJid, waitForReplySec: 45 }
  7. ethora-generate-chat-component-app-tsx { roomJid }

A provisioned app with a live triage agent, the reply in the terminal, and a ready-to-paste App.tsx.

Good to know

FAQ

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

Run claude mcp add --transport http with a name and the server URL, adding --header with an Authorization Bearer value when the server needs one. For Ethora the URL is the personal connector URL from Account, AI Assistants, so no header is needed. Check it with claude mcp list.

What does --scope user do in claude mcp add?

It stores the server in your user configuration so it loads in every project on your machine, instead of the default local scope for the current project only. Project scope writes .mcp.json at the repo root for sharing with a team, so keep secrets out of it.

How do I check that an MCP server is connected in Claude Code?

Run claude mcp list from the shell; it shows each server with its connection health. Inside a session the /mcp command opens a panel with status, OAuth authentication, toggles and reconnect. For Ethora, asking for ethora-status confirms authMode: user and hosted: true.

Can Claude Code run the Ethora MCP server in CI?

Yes. Use the stdio package with an app JWT in environment variables through claude mcp add with -e flags and the npx command, as shown in the stdio step above. Non-interactive claude -p runs load project-scoped servers without prompting, which suits pipelines.

Get started

Get a connector URL

Create a free Ethora account, copy the Claude Code one-liner from Account, AI Assistants, and run it. The tool reference lists every call Claude Code can make.

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