Ethora MCP Server
The Ethora MCP Server enables comprehensive integration with the Ethora platform, providing tools for user authentication, application management, chat operations, and cryptocurrency wallet functionality.
User Management: Login with email/password and register new users with email, first name, and last name.
Application Management: Create, list, update, and delete applications, including configuration of display names, bot status, domain names, colors, and descriptions.
Chat Management: Create and delete chats within applications, specifying titles and pinned status.
Room Management: Retrieve default rooms for the platform or specific applications by
appId.Wallet Operations: Check authenticated user's cryptocurrency balance and transfer ERC20 tokens to other wallets by recipient address and amount.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ethora MCP Serverlist my applications"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ethora MCP CLI (Model Context Protocol)
An MCP (Model Context Protocol) CLI/server that connects popular MCP clients to the Ethora platform. This runs locally on a developer machine via stdio rather than as a hosted Ethora service.
Use it from Cursor, VS Code MCP, Claude Desktop, or Windsurf/Cline to log in, manage apps and chats, automate B2B workflows, and interact with wallets (ERC-20).
Part of the Ethora SDK ecosystem β see all SDKs, tools, and sample apps. Follow cross-SDK updates in the Release Notes.
Default Ethora API:
https://api.chat.ethora.com/v1(Swagger: https://api.chat.ethora.com/api-docs/#/)
β¨ What you get
Talk to the Ethora platform directly from your IDE or AI agent client (Cursor, VS Code MCP, Claude Desktop, Windsurf / Cline).
Both user-auth flows (login/register, files, owner/admin endpoints) and B2B / app-token flows (tenant provisioning, broadcast jobs, async user batches, AI bot config).
Built-in recipes, prompts, and generators for the most common Ethora workflows (Vite/Next chat-component setup, B2B bootstrap, AI-bot enablement, RAG sources).
Standard tool response envelope (
{ ok, ts, meta, data | error }) so agent code can reason about success/failure consistently.
Related MCP server: MCP Server Trello
π Two typical usage modes
1) User Auth mode
Best for:
developers trying Ethora locally
tenant admins / app owners using MCP manually
flows that start with
ethora-user-login
How it works:
configure
ETHORA_APP_JWTonce for login/register bootstrapswitch to
ethora-auth-use-usercall
ethora-user-loginuse user-auth tools such as files and legacy owner/admin endpoints
2) B2B mode
Best for:
permanent backend integrations
partner provisioning flows
autonomous agents operating Ethora without a human user session
How it works:
configure
ETHORA_B2B_TOKENswitch to
ethora-auth-use-b2bfor explicit tenant-actor/v2/apps/:appId/...routesoptionally switch into
ethora-auth-use-appafterethora-app-selectwhen you want app-scoped convenience routes powered byappToken
Rule of thumb:
first-time local use usually starts with User Auth
repeatable automation usually starts with B2B, then often moves into app-token mode for one selected app
Prompts & Resources (P2: dev-facing docs)
Resources (loadable docs into context)
ethora://docs/auth-mapβ appJwt vs appToken vs b2bTokenethora://docs/chat-component/quickstartβ Vite/Next quickstart + replacing demo tokensethora://docs/sdk-backend/quickstartβ backend integration quickstartethora://docs/recipesβ common tool sequences (broadcast/sources/files/bot)
Prompts
ethora-auth-mapethora-vite-quickstartethora-nextjs-quickstartethora-backend-sdk-quickstartethora-recipes
Generators (no shell, no file writes)
ethora-generate-chat-component-app-tsxβ ready-to-pasteApp.tsxsnippet for@ethora/chat-componentethora-generate-env-examplesβ.env.exampletemplates for:frontend chat component
backend SDK integration
MCP usage (
ETHORA_API_URL,ETHORA_APP_JWT,ETHORA_B2B_TOKEN)
ethora-generate-b2b-bootstrap-runbookβ minimal βcall these MCP tools in orderβ runbook for B2B bootstrap
Tip: to list runnable recipes without calling ethora-help, call ethora-run-recipe with goal: "auto" and omit recipeId.
Session / Config
ethora-configureβ set API URL plus App JWT / B2B token / appToken for this MCP sessionethora-statusβ show configured API URL, active auth mode, and which credentials are presentethora-helpβ task-oriented help (recommended next calls + βone-click recipesβ based on current state)ethora-run-recipeβ execute a built-in recipe by id (sequential steps; no shell, no file writes)ethora-doctorβ validate config + ping the configured Ethora API for both user and B2B usageethora-app-selectβ select current appId and optionally set appTokenethora-auth-use-appβ switch to app-token auth mode for app-scoped operationsethora-auth-use-userβ switch to user-session auth modeethora-auth-use-b2bβ switch to tenant-actor B2Bx-custom-tokenauth mode
Chats (v2)
ethora-chats-broadcast-v2β enqueue broadcast job using app-token auth or B2B + explicitappIdethora-chats-broadcast-job-v2β get broadcast job status/results using app-token auth or B2B + explicitappIdethora-wait-broadcast-job-v2β poll broadcast job until completed/failed using app-token auth or B2B + explicitappIdethora-chats-message-v2β send a test/automation message through the app chat surface (requires app-token auth)ethora-chats-history-v2β read persisted automation/test history for private or group sessions (requires app-token auth)
Users (v2 async batch)
ethora-users-batch-create-v2β create async users batch job (requires B2B auth)ethora-users-batch-job-v2β get users batch job status/results (requires B2B auth)ethora-wait-users-batch-job-v2β poll users batch job until completed/failed (requires B2B auth)
Files (v2)
Bot / Agent (v2)
ethora-bot-get-v2β get bot status/settings using app-token auth or B2B + explicitappIdethora-bot-update-v2β update bot settings using app-token auth or B2B + explicitappIdethora-bot-enable-v2β enable bot using app-token auth or B2B + explicitappIdethora-bot-disable-v2β disable bot using app-token auth or B2B + explicitappIdethora-bot-widget-v2β get widget/embed config and public widget URL metadata (app-token auth)ethora-agents-list-v2β list reusable saved agents for the current app owner (app-token auth)ethora-agents-get-v2β get one reusable saved agent (app-token auth)ethora-agents-create-v2β create a reusable saved agent (app-token auth)ethora-agents-update-v2β update a reusable saved agent (app-token auth)ethora-agents-clone-v2β clone a reusable saved agent (app-token auth)ethora-agents-activate-v2β bind a saved agent as the active bot for the selected app (app-token auth)ethora-bot-message-v2β compatibility alias forethora-chats-message-v2ethora-bot-history-v2β compatibility alias forethora-chats-history-v2ethora-files-upload-v2β upload files (requires user auth)ethora-files-get-v2β list/get files (requires user auth)ethora-files-delete-v2β delete file by id (requires user auth)
Sources
ethora-sources-site-crawlβ crawl a URL (requires user auth)ethora-sources-site-reindexβ reindex URL by urlId (requires user auth)ethora-sources-site-delete-urlβ delete by URL (requires user auth)ethora-sources-site-delete-url-v2β batch delete URLs (requires user auth)ethora-sources-docs-uploadβ upload docs for ingestion (requires user auth)ethora-sources-docs-deleteβ delete ingested doc by id (requires user auth)ethora-sources-site-crawl-v2β crawl a URL using app-token auth or B2B + explicitappIdethora-sources-site-reindex-v2β reindex URL by urlId using app-token auth or B2B + explicitappIdethora-sources-site-crawl-v2-waitβ single-call long-timeout helper for crawl (app-token auth)ethora-sources-site-reindex-v2-waitβ single-call long-timeout helper for reindex (app-token auth)ethora-sources-site-list-v2β list crawled site sources and current tags using app-token auth or B2B + explicitappIdethora-sources-site-tags-update-v2β set/update tags for a crawled site source using app-token auth or B2B + explicitappIdethora-sources-site-delete-url-v2β delete one crawled URL by URL using app-token auth or B2B + explicitappIdethora-sources-site-delete-url-v2-batchβ batch delete crawled source records by id using app-token auth or B2B + explicitappIdethora-sources-docs-upload-v2β upload docs for ingestion using app-token auth or B2B + explicitappIdethora-sources-docs-list-v2β list indexed documents and current tags using app-token auth or B2B + explicitappIdethora-sources-docs-tags-update-v2β set/update tags for an indexed document using app-token auth or B2B + explicitappIdethora-sources-docs-delete-v2β delete doc by id using app-token auth or B2B + explicitappId
Auth & Accounts
ethora-user-loginβ login user (email + password)ethora-user-registerβ register user (email + first/last name)
Applications
ethora-app-createβ create appethora-app-updateβ update appethora-app-deleteβ delete appethora-app-listβ list appsethora-b2b-app-createβ create app using B2B auth (x-custom-token)ethora-b2b-app-bootstrap-aiβ create app β index sources β configure/enable bot, including runtime LLM selection (B2B automation)ethora-app-tokens-list-v2β list app token metadata (B2B auth)ethora-app-tokens-create-v2β create new app token (returned once) (B2B auth)ethora-app-tokens-rotate-v2β rotate token (revoke old, return new once) (B2B auth)ethora-app-tokens-revoke-v2β revoke token by tokenId (idempotent) (B2B auth)ethora-b2b-app-provisionβ create app + create tokens + provision rooms + configure bot, including runtime LLM selection (B2B orchestrator)
Chat & Rooms
ethora-app-get-default-roomsβ list default roomsethora-app-get-default-rooms-with-app-idβ rooms for a given appethora-app-create-chatβ create chat for appethora-app-delete-chatβ delete chat
Wallet
ethora-wallet-get-balanceβ get balanceethora-wallet-erc20-transferβ send ERC-20 tokens
Tool names above reflect the functional areas exposed by the server. Your exact tool names may vary slightly by version; run the clientβs βlist toolsβ to confirm.
π¦ Install / Run
Pre-requisites
Before you begin, ensure you have the following:
Node.js installed on your system (recommended version 18.x or higher).
Install
The server is distributed as an npm package and is typically launched by MCP clients via npx:
npx -y @ethora/mcp-serverNo global install is required.
π Configuration (env vars)
This MCP server supports both the local user-auth flow and the server-side B2B flow.
Core values:
Ethora API URL (where to send requests)
Ethora App JWT (used only for login/register bootstrap in user-auth mode)
Ethora B2B Token (used for tenant-actor server-to-server flows)
You can provide these either:
via env vars, or
at runtime via the
ethora-configuretool (in-memory; resets when MCP process restarts)
Supported env vars
ETHORA_API_URL: full API URL (example:https://api.chat.ethora.com/v1,http://localhost:8080/v1)ETHORA_BASE_URL: base host URL (example:https://api.chat.ethora.com,http://localhost:8080)
If provided, the server will default to.../v1.ETHORA_APP_JWT: App JWT string, usually starting withJWT ...ETHORA_B2B_TOKEN: B2B server token forx-custom-tokenauth (JWT withtype=server)ETHORA_MCP_ENABLE_DANGEROUS_TOOLS: enable destructive tools (default: disabled). Set totrueto expose:app deletion tools
wallet transfer tools
bulk delete tools
Security: never commit App JWTs, B2B tokens, or appTokens to git. Configure them via env vars, the MCP client secret store, or your own backend.
π§± Standard response envelope (tools)
All tools return JSON in a consistent envelope:
Success:
{ ok: true, ts, meta, data }Error:
{ ok: false, ts, meta, error }, whereerrorincludes:code: stable string (prefer APIcode, otherwise inferred)httpStatus: HTTP status when the failure came from an API callrequestId: request/correlation id if returned by APIhint: 1-line βwhat to do nextβ
π Using with MCP Clients
Cursor
Open Cursor β Settings β MCP
Click Add new global MCP server
Add an entry for the Ethora MCP server, following the pattern below:
{
"mcpServers": {
"ethora-mcp-cli": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}Save. You should see green active when connected.
VS Code (MCP extension)
Open User Settings (JSON)
Add an MCP entry:
"mcp": {
"servers": {
"ethora-mcp-cli": {
"command": "npx",
"args": [
"-y", "@ethora/mcp-server"
]
}
}
}Save. The server will auto-start on first use.
Claude Desktop
Settings β Developer
Click Edit Config
Open
claude_desktop_config.jsonAdd the following configuration:
{
"mcpServers": {
"ethora-mcp-cli": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}Windsurf (Cline)
Run:
npx -y @ethora/mcp-serverConfigure your
mcp_config.jsonsimilarly:{ "mcpServers": { "ethora-mcp-cli": { "command": "npx", "args": ["-y", "@ethora/mcp-server"] } } }
π§ͺ Quick test
After the server shows as connected in your client:
Run
list tools(client command) to verify Ethora tools are available.Check config/connectivity: call
ethora-doctor(orethora-status)For a first local/manual test:
call
ethora-configurewithapiUrl/appJwtcall
ethora-auth-use-usercall
ethora-user-loginthen try
ethora-app-listorethora-wallet-get-balance
For a server-side/B2B test:
call
ethora-configurewithapiUrl/b2bTokencall
ethora-auth-use-b2bthen try
ethora-b2b-app-createorethora-app-tokens-list-v2
π§ P1: B2B βcreate app β index sources β deploy botβ in one call
Pre-reqs:
Configure
ETHORA_API_URL(or callethora-configure)Configure
ETHORA_B2B_TOKEN(or callethora-configurewithb2bToken)Ensure your Ethora backend is configured with AI service URL/secret (for bot activation)
Suggested flow:
Call
ethora-auth-use-b2bCall
ethora-b2b-app-bootstrap-aiwith:displayNameoptional
savedAgentIdoptional
crawlUrloptional
docs[](base64)enableBot: trueoptional
llmProvideroptional
llmModel
It will:
create the app (B2B)
set current app context (best-effort)
index sources via
/v2/sources/*(app-token auth)configure and/or enable bot (best-effort)
Example payloads
Minimal (create app only):
{
"displayName": "Acme AI Demo",
"setAsCurrent": true
}Create app + crawl a website + enable bot:
{
"displayName": "Acme AI Demo",
"savedAgentId": "6790abc1234567890def1111",
"crawlUrl": "https://example.com",
"followLink": true,
"enableBot": true,
"botTrigger": "/bot",
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}Create app + upload docs + enable bot:
{
"displayName": "Acme AI Demo",
"docs": [
{
"name": "faq.pdf",
"mimeType": "application/pdf",
"base64": "BASE64_PDF_CONTENT_HERE"
}
],
"enableBot": true,
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}Provision app + token + default rooms + bot settings:
{
"displayName": "Acme Support",
"savedAgentId": "6790abc1234567890def1111",
"tokenLabels": ["default", "staging"],
"rooms": [
{ "title": "General" },
{ "title": "Support", "pinned": true }
],
"enableBot": true,
"botTrigger": "/bot",
"botPrompt": "You are the Acme support assistant.",
"botGreetingMessage": "Hello. How can I help?",
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}Provider/model note:
Common values are
openaiandopenai-compatible.The effective provider/model must also be enabled by your Ethora backend + AI service environment.
π€ App automation loop
Once you already have an app selected with appToken auth:
call
ethora-auth-use-appcall
ethora-bot-get-v2to inspect current bot status and prompt settingscall
ethora-sources-site-list-v2andethora-sources-docs-list-v2to inspect indexed sourcescall
ethora-sources-site-tags-update-v2orethora-sources-docs-tags-update-v2to organize retrieval by tagscall
ethora-chats-message-v2/ethora-chats-history-v2if your backend exposes the chat automation surface on the same API host
Example: apply retrieval tags to a crawled source
{
"sourceId": "6790abc1234567890def1234",
"tags": ["support", "faq", "billing"]
}Example: apply retrieval tags to an indexed document
{
"docId": "6790abc1234567890def1235",
"tags": ["support", "faq"]
}π‘οΈ Security notes
Never hardcode API keys in shared config. Prefer client-side secret stores.
Use least privilege keys and consider allowlists/rate limits on your Ethora backend.
Rotate credentials regularly in production use.
CI security scans (report-only)
This repo runs report-only scans on pushes/PRs:
gitleaks for secret scanning
semgrep for basic SAST
π§° Development
Clone and run locally:
git clone https://github.com/dappros/ethora-mcp-cli.git
cd ethora-mcp-cli
npm install
npm run build
npm startSuggested scripts (if not present):
{
"scripts": {
"build": "tsc -p .",
"start": "node dist/index.js",
"dev": "tsx src/index.ts"
}
}β Troubleshooting
Client canβt connect: Ensure
npx @ethora/mcp-serverruns locally without errors. Check Node β₯ 18.Auth errors: Verify
ETHORA_BASE_URLand any required secrets are set in the clientβs environment.Tools missing: Restart the MCP client and inspect server logs for registration errors.
Network: Confirm outbound access from the IDE to your Ethora host.
π Related Repos
Ethora Chat Component β our React chat component used in widgets and stand-alone apps https://github.com/dappros/ethora-chat-component
Ethora WP Plugin β WordPress integration
https://github.com/dappros/ethora-wp-pluginRAG Demos β RAG AI assistant examples
https://github.com/dappros/rag_demos
π License
See LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dappros/ethora-mcp-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server