
Convocore
io.github.Moe03由 GitHub 帳號 Moe03 發布v2.6.16更新於 Oct 29, 2026
Build, test and manage customer-facing AI voice and chat agents (web, WhatsApp, phone) from chat.
概覽
Convocore 讓助手在對話中建立、設定並營運面向客戶的 AI 語音與聊天代理,涵蓋網頁、WhatsApp 與電話。
- 可以做什麼
- 建立、更新、複製、匯出、匯入與刪除代理,包含提示詞局部修改與音色選擇
- 管理對話:列出、查詢、匯出、指派、加入審閱備註,並透過頻道傳送訊息
- 維護知識庫:建立文件、依網址匯入、擷取頁面、搜尋、批次讀取與查看配額
- 處理潛在客戶、聯絡人、客群分組、外撥活動、通話紀錄、外撥電話與簡訊
- 連接 WhatsApp、Messenger、Instagram 與 Meta 粉絲頁等頻道,管理 WhatsApp 規則、範本與號碼
- 設定整合(行事曆、Sheets、Airtable、Shopify、Zoho CRM),測試代理工具並查看用量指標
- 適用情境
- 適合正在使用 Convocore 代理、希望不離開聊天用戶端就能建立或修改代理、稽核與匯出對話、管理知識庫與潛在客戶,或發起外撥與訊息的情境。
- 執行需求
- 遠端端點 mcp.convocore.app,需透過 OAuth 登入 Convocore 帳號。自架套件版本則需要 Node.js 20+(npx)或 Docker,以及 WORKSPACE_SECRET 權杖,可選 CONVOCORE_API_REGION、CONVOCORE_API_BASE_URL、CONVOCORE_INTERACT_WS_URL 與 CONVOCORE_WORKSPACE_ID。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Convocore,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.Moe03%2Fconvocore/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"convocore": {
"type": "http",
"url": "https://mcp.convocore.app/mcp"
}
}
}README
Convocore MCP Server
A Model Context Protocol (MCP) server that connects AI assistants (Claude Desktop, Cursor, and other MCP hosts) to the Convocore HTTP API. The host spawns this process, talks to it over stdio (standard input/output), and gains many tools for agents, conversations, knowledge bases (including mass URL ingest), and single-URL scraping.
[npm version] [Docker Hub] [License: MIT] [Convocore MCP connector – tool definition quality and endpoint health on Glama]
What this project is
This repository is not a chat UI. It is the bridge between an MCP-capable assistant and Convocore.
What the server exposes (capabilities)
The server declares tools only (no MCP resources or prompts in code). Each successful tool call returns MCP content with a single text part whose body is pretty-printed JSON (JSON.stringify(result, null, 2)) from the Convocore API response.
Light mode
The tools in the rows from "Campaigns" down to "Agent extras" (and every list tool) take mode:
compact(default): every record and field, but long text is cut and bulky blobs (transcripts, page content, histories) are replaced by a size marker.full: the complete API response.
How it runs (transport and lifecycle)
- The host (Claude Desktop, Cursor, etc.) starts the server as a subprocess: e.g.
npx -y convocore-mcp,docker run …, ornode dist/index.js. - Communication uses
StdioServerTransport: JSON-RPC messages on stdin/stdout. Do not write logs to stdout; the server logs to stderr (e.g.Convocore MCP Server running on stdio). - On startup,
getConfig()reads env vars. IfWORKSPACE_SECRETis missing, the process throws and exits. - The host sends
tools/listandtools/call. Each call is validated, thenConvocoreClientperformsfetch()to the REST API.
Repository layout
Environment variables
The server reads WORKSPACE_SECRET, CONVOCORE_API_REGION, optional CONVOCORE_API_BASE_URL, optional CONVOCORE_INTERACT_WS_URL, optional CONVOCORE_WORKSPACE_ID, and optional CONVOCORE_TELEMETRY / CONVOCORE_TELEMETRY_DEBUG / DO_NOT_TRACK. Any other variables in compose files or docs are ignored unless you wire them yourself.
API regions and base URLs
For local development, set CONVOCORE_API_BASE_URL=http://localhost:5000/v3 to redirect both REST and WebSocket, or set CONVOCORE_INTERACT_WS_URL=ws://localhost:5000/interact to redirect only the /interact WebSocket while REST keeps using the regional host.
Authentication
Every request from ConvocoreClient includes:
Authorization: Bearer <WORKSPACE_SECRET>Content-Type: application/json
Non-OK responses: body is parsed as JSON; message is thrown as an error when present, otherwise a generic status message. Keep WORKSPACE_SECRET out of prompts, screenshots, and shared configs; use env vars or your host’s secret mechanism.
Gray-label client connections
Agencies can let a whitelabel client connect Claude, ChatGPT or Cursor to only the agents assigned to that client, under the agency's brand, on a neutral host (https://mcp-project.vg-stuff.com/mcp, extra hosts via GRAY_LABEL_MCP_HOSTS).
- The agency turns on AI assistant access for the client (
mcpAccesson the client). The client clicks Connect AI in their dashboard; the API mints agl_…connection token stored as a hash on the agency workspace (users/{workspaceId}/mcpClientConnections). - The agency host accepts
gl_tokens only, andgl_tokens work only there. The API scopes every call to the client's agents (client.widgetIDs ∪ org.widgetIDs, read live) and refuses workspace-level routes; this server also narrows the tool list and checks agent ids. - Server name, instructions, tool text, results, errors and the OAuth Connect page carry the agency brand (
{Agency} - {Client}), never the platform's. Scope and brand refresh every minute on open sessions; revoking a connection or turning access off stops it.
Quick start
Prerequisites
- A Convocore workspace secret (
WORKSPACE_SECRET). - Optional: correct region (
eu-gcp/na-gcp). - Node.js 20+ (ships with
npx). Docker is optional and only needed for the container workflow.
Option A: npx (recommended)
You don't have to install anything. Your MCP host (Claude Desktop, Cursor, etc.) runs the server on demand:
Set WORKSPACE_SECRET (and optionally CONVOCORE_API_REGION) in the host's env block — see the Claude Desktop example below.
The first invocation downloads the package (a few seconds); subsequent runs are cached by npm.
Option B: Docker
-i keeps stdin open so the MCP host can speak JSON-RPC to the container.
Option C: Local Node (development)
Connecting MCP hosts
Gemini CLI
Install the extension (uses the hosted server; the first tool call opens a browser to sign in with your Convocore account):
Claude Desktop
Config path:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
npx (recommended):
Windows note: if Claude Desktop fails to spawn
npxdirectly, wrap it withcmd:
After saving the config, fully quit and relaunch Claude Desktop. The convocore server should appear in the MCP server list and the tools become available in chat.
Docker (alternative): pull the image first to avoid first-run timeout in the host:
Local Node (development): use an absolute path to dist/index.js:
Cursor and other clients
Any client that supports stdio MCP servers can use the same command + args + env pattern as above. The recommended command/args is npx + ["-y", "convocore-mcp"]; Docker and local Node also work. Set the same environment variables.
Dashboard one-click install (hosted MCP)
For a workspace dashboard button, call the hosted helper with the MCP URL, region, and workspace secret:
Response highlights — connector / install name defaults to Convocore {workspaceName} (e.g. Convocore Acme Agency) for Claude, Cursor, and other hosts:
Why Claude needs ?token= (and OAuth on the host)
- Cursor deeplinks embed headers in base64 — secret travels with the install.
- Claude’s install URL only prefills name + connector URL. No header query params exist.
- Claude then runs OAuth Dynamic Client Registration against the MCP host. Without
/oauth/register+ authorize/token, you get “Couldn't register with Convocore’s sign-in service”. - Hosted MCP implements that OAuth AS. Claude often strips
?token=from OAuthresource, so the secret is in the path (/t/…/mcp). Authorize shows a one-click Connect page (auto-submits) — no paste. Access tokens are the workspace secret,expires_in≈ 10 years, plus refresh. - MCP transport sessions idle-evict after ~1 year by default (
CONVOCORE_HOSTED_SESSION_IDLE_MS=0disables eviction). Reconnect recreates a session with the same secret.
Security note: ?token= in a Claude connector URL is a pragmatic tradeoff (logs/history). Prefer Cursor headers when possible; rotate the workspace secret if a link leaks.
You can also build the same URLs client-side with buildInstallLinks from dist/install-links.js without calling the API.
HTTP API mapping (what each tool calls)
All paths are relative to baseUrl (e.g. https://eu-gcp-api.vg-stuff.com/v3).
Tool reference (parameters and notes)
Agent tools
create_agent_from_template — Preferred for from-scratch chat+voice agents. Workspace is resolved internally (no workspaceId input). Recommended explicit fields: title, systemPrompt, voiceConfig (must use speechGen.provider google-live or ultravox only — use search_voices on those providers), primaryColor (hex, from scrape_url colours when possible), widgetImageUrl (logo URL, e.g. favicon from scrape_url). Optional: voicePrompt (Gemini Live systemInstruction; omitted → reuse systemPrompt), description, themeType (light|dark, default light), sourceUrl (optional scrape wait + excerpt), createKbUrlDoc (requires sourceUrl when true), defaultLanguage (default multilingual), proactiveMessage, branding, chatBgURL, additionalConfig.
- Workflow for the AI:
scrape_urlfirst → pick colour + favicon URL →search_voicesongoogle-live/ultravoxfor accents → then this tool with explicit prompts and fullvoiceConfig. - MCP builds
customThemeJSONString(nineColorPallet) fromprimaryColor(same lightness ramp as ConvocorehandleAutoGenPallet). - After create, MCP calls
get_agentand returnsdata.agentas the full document (plusagentId). - Prefer env
CONVOCORE_WORKSPACE_IDso MCP does not need to infer workspace fromlist_agents.
create_agent — Legacy direct mode for advanced/manual payload control. Required: title. Optional: description, theme, disabled, light, enableVertex, autoOpenWidget, voiceConfig, nodes, additionalConfig.
- Prefer
create_agent_from_templateunless you intentionally need low-level manual field control. nodes: Convocore’s multi-step graph;nodes[0].instructionsis the main system prompt.additionalConfig: Plain object merged into theagentpayload (same level as other fields). Use for fields not listed explicitly.
get_agent — Required: agentId. Response includes agent JSON; main prompt is under nodes[0].instructions when present.
update_agent — Required: agentId. Optional: same agent fields as create; patch semantics depend on API. To change the main prompt, update nodes[0].instructions. For large prompts prefer patch_agent_prompt.
patch_agent_prompt — Cursor-style surgical edit. Required: agentId, old_string, new_string. Optional: replace_all, target (auto|nodes0|vg_instructions|vg_systemPrompt|proactiveMessage|customCSS — vg_* still writes nodes[0].instructions), sync_mirrors (default false; never PATCHes vg_instructions). Fails if old_string is missing or ambiguous (unless replace_all).
AI Funnel / lead scoring — funnelConfig + leadCollectionRules on create/update, or ownerNotifyEmails on create_agent_from_template. Runtime emails sales on hot leads. Do not attach a custom HTTP “notify sales” webhook tool.
delete_agent — Required: agentId. Permanent deletion on the API side.
list_agents — Optional: limit (capped fetch when API supports ?limit=). Prefer search_agents or CONVOCORE_WORKSPACE_ID for large workspaces instead of dumping every agent without a cap.
search_agents — Required: none. Optional: search, page (default 1), limit (default 50), sortBy (newest | oldest | alphabetical, default newest), starredOnly (default false). Workspace is resolved internally by MCP.
export_agent — Required: agentId. Returns template JSON for backup/migration.
import_agent — Required: agentTemplate, agentName. Optional: fromAgentId.
get_agent_usage — Required: agentId. Optional: range: { from, to } ISO date strings.
Conversation tools
list_conversations — Required: agentId. Optional: limit (default 20, max 20), cursor (from previous nextCursor). Response: data, hasMore, nextCursor, limit. For page 2+ pass cursor — do not bump page alone (API rejects page>1 without cursor). List reads the Postgres mirror; summary / capturedVariables are often missing on list rows.
get_conversations_bulk — Required: agentId, convoIds (1–50). Fan-out GETs; returns lean { ID, summary, ts, capturedVariables, userName, origin } plus failed[]. Chunk larger audits.
query_conversations — Required: agentId. Optional filters: origin, tsFrom/tsTo, capturedVariableExists, capturedVariableEquals, summaryContains, hasUserName, plus limit / maxScan. MCP-side scan (not SQL).
get_agent_usage_bulk — Required: agentIds (1–20). Optional shared range.
get_kb_docs_bulk — Required: agentId, docIds (1–30). Optional includeContent (default false).
create_conversation — Required: agentId, conversation. The API expects at least a ts (timestamp) in the conversation object; you may add userName, userEmail, etc. per your Convocore setup.
get_conversation — Required: agentId, convoId.
update_conversation — Required: agentId, convoId, conversation (partial fields).
Conversation notes — a timeline of human review notes per conversation (reviewNotes, oldest first; also returned by get_conversation). add_conversation_note / update_conversation_note / delete_conversation_note need agentId, convoId, text / noteId; authorName (optional) labels an API-key caller such as "Claude via MCP". Notes cannot be changed through update_conversation. Every change is recorded in the workspace Logs (who, IP, time). query_conversations accepts hasNotes and noteContains.
delete_conversation — Required: agentId, convoId.
export_all_conversations — Required: agentId. Optional: format (json|csv), limit, sort, fromTs, toTs, cursor, convoIds. Requires a paid workspace (hasEverPaid === true); billed against monthly export quota. Cursor pagination via nextCursor / hasMore.
export_conversation — Required: agentId, convoId. Optional: format — json or csv. Requires a paid workspace (hasEverPaid === true).
assign_conversation — Required: agentId, convoId, assignToUserId. Optional: delegatedBy.
Knowledge base tools
Tool descriptions in code note “VG agents only” — KB operations target /agents/{id}/kb and may only apply to supported agent types on the Convocore side.
create_kb_from_urls — Preferred for many pages. Required: agentId, urls (max 50). Optional: mode (per_url default | batch), name, tags, refreshRate (3d|7d|never), scrapeContent (default true), skipExisting (default true). Uses the KB router to scrape — do not pre-scrape with scrape_url / web fetch. Scraping is async; poll list_kb_docs / get_kb_doc.
create_kb_doc — Required: agentId, name, sourceType: doc | url | sitemap.
doc: usecontentfor text.url: useurls(array), optionalscrapeContent.sitemap: usesitemapUrl, optionalmaxPages.
Optional: metadata, tags, refreshRate — 3d | 7d | never (default never; matches Convocore API).
list_kb_docs — Required: agentId. Optional: page (default 1), pageSize (default 20).
get_kb_doc — Required: agentId, docId.
update_kb_doc — Required: agentId, docId. Optional: name, content, metadata, tags, refreshRate, url. For large bodies prefer patch_kb_doc.
patch_kb_doc — Cursor-style surgical edit. Required: agentId, docId, old_string, new_string. Optional: replace_all, field (content|name, default content).
delete_kb_doc — Required: agentId, docId.
get_kb_stats — Required: agentId.
Scrape tool
scrape_url — Provide url and/or urls (max 20).
mode: "check"(default): fast HTTP ping — status (200/404/…),ok, content-type, final URL after redirects. Use to verify images, logos, and page links before wiring them into an agent.mode: "scrape": full Convocore crawler scrape of one URL (waits up to ~120s) for text/colours/favicon. Workspace resolved internally. Not for KB ingest (create_kb_from_urls).
Interact (WebSocket) tool
interact_with_agent is the only WebSocket-backed tool. It opens a single connection to wss://{region}-gcp-api.vg-stuff.com/interact, sends one InteractObject, and aggregates every streamed ChunkMessage (chunk / debug / action / metadata / sync_chat_history) into one MCP response. Authentication uses the same Authorization: Bearer <WORKSPACE_SECRET> header as REST.
Required: agentId, convoId.
Common optional:
prompt— User message. Special values:"start"(initial greeting),"@cancel:<reason>","@rewind:<nodeId>"(v2/node agents).bucket—voiceglow-euor(default). Auto-derived fromCONVOCORE_API_REGION(eu-gcp →voiceglow-eu, na-gcp →(default)); only override to deliberately cross regions.messageType+visualPayload— for image turns.replyTo— reply context for a previous message.lightConvoData—userName,userEmail,userPhone,origin,capturedVariables, etc. Surfaced into the agent's system prompt where supported.agentData/workspaceData/turnsHistory— overrides that skip Firestore loads.disableUiEngine,disableRecordHistory,v2,isTest,isLLMStudio,kbPreview,agentProfileId,toolTest,formSubmissionMetadata,initNodesOptions— same flags as the underlyingEWSInteractModel.timeoutMs(default120000, max600000) — how long the MCP waits for the streamed turn before forcing the WebSocket closed.raw(defaultfalse) — when true, the response includes every raw streamed chunk; when false, only the aggregated text + actions + metadata + final turns are returned (cheaper on tokens).
Response shape (default raw: false):
UI Engine handling
When the agent has vg_enableUIEngine: true (and the request did not pass disableUiEngine: true), the server streams JSON-stringified TurnProps snapshots instead of plain text. UI Engine snapshots are overwriting (each chunk is a full snapshot of the bot turn so far) — interact_with_agent parses them, keeps only the latest snapshot as uiEngineSnapshot, and produces a compact uiEngineSummary for quick scanning:
The eight UI Engine message types are text, choice, visual, cardV2, carousel, iFrame, form, input. form and input are emitted only on web channels (web-chat / text origin). Call get_ui_engine_spec before testing or building UI-Engine-enabled agents to load the full schema.
Cost note: every call runs a real agent turn (LLM + voice + tools) and consumes Convocore credits exactly like a normal chat. It is not a dry-run.
UI Engine spec tool
get_ui_engine_spec — Returns the full Convocore UI Engine schema. Static knowledge, no API call, no credits.
- Required: none.
- Optional:
section—"all"(default) |"meta"|"envelopes"|"message_types"|"shared"|"rules"|"checklist"|"primer". - Optional:
messageType—"text" | "choice" | "visual" | "cardV2" | "carousel" | "iFrame" | "form" | "input". When set, returns just that message-type schema (overridessection).
Use this BEFORE:
- Validating output from
interact_with_agentagainst a UI-Engine-enabled agent. - Creating / updating an agent whose system prompt should teach the model to emit UI Engine messages — bake the relevant rules and
messageTypeshapes intonodes[0].instructions.
Convocore concepts: nodes and prompts
- Each node can represent a step in a workflow.
- The first node (
nodes[0]) holds the primary instructions (instructionsfield) that define default agent behavior. lightmode (agent flag): described in-tool as no chat history retention for privacy.
Errors and validation
- Invalid tool arguments: Zod validation fails → error with
Invalid arguments: …. - Unknown tool name: thrown as
Unknown tool: …. - API errors: thrown with the message from the JSON body when available.
- Startup: missing
WORKSPACE_SECRET→ configuration error before the server connects.
Natural language examples (for end users)
After configuration, users can ask their assistant things like:
- “List all my Convocore agents” →
list_agents - “Create an agent for this website from scratch” →
create_agent_from_template(preferred default) - “Export all conversations for agent … as CSV” →
export_all_conversations - “Add many hotel/site pages to the KB” →
create_kb_from_urls(KB router scrapes; do not web-fetch first) - “Add one URL / sitemap to the KB” →
create_kb_docwithsourceType: url|sitemap+scrapeContent: true - “Are these image/page links dead?” →
scrape_urlwithmode: "check"+urls: [...] - “Scrape one URL for branding (colours/favicon)” →
scrape_urlwithmode: "scrape"
Exact tool choice and arguments are up to the host model; the tool descriptions in src/index.ts are what the model sees.
Docker
Common tags (see Docker Hub for current list): latest, version tags such as 2.0.0 / 1.0.x as published by the maintainer.
Build locally:
Docker Compose
The included docker-compose.yml runs the image with stdin open for MCP-style use. Set WORKSPACE_SECRET and optionally CONVOCORE_API_REGION in your environment or an .env file beside the compose file. Authentication is WORKSPACE_SECRET only (no separate API key variable is read by the server).
Development
Dependencies: @modelcontextprotocol/sdk, zod, plus file-reader stack (mammoth, pdf-parse, xlsx, sharp, mime-types). Dev: typescript, @types/node, shx.
Publish to npm (maintainers)
prepublishOnly re-runs the build automatically. Only dist/, README.md, and LICENSE are shipped (controlled by the files field in package.json).
Push Docker image (maintainers)
Telemetry
Like Next.js, convocore-mcp collects anonymous usage data to learn which tools are used and where they fail. It is on by default.
What is sent, per tool call: the tool name, whether it succeeded, a short error category (e.g. input_validation_error) plus, for failures only, a short error message with emails, URLs, IDs and numbers removed, the action of action-based tools (e.g. assign_to_agent), how long it took, the MCP client name and version (e.g. Claude Desktop, Cursor), the convocore-mcp version, Node.js version, OS platform, and a random id for the current server process.
What is never sent: tool arguments, tool results, prompts, agent content, contacts, conversations, or any file contents.
Events are batched and sent to the Convocore API in your own region (<base URL>/mcp/telemetry), authenticated with your workspace secret, so they are tied to your workspace and nothing else. Sending happens in the background and never slows down or fails a tool call.
Opt out by setting either variable in your MCP config's env:
DO_NOT_TRACK=1 is respected too. To see exactly what would be sent without sending anything, set CONVOCORE_TELEMETRY_DEBUG=1; events are printed to stderr.
The hosted server at mcp.convocore.ai runs on Convocore infrastructure and records the same events.
Contributing and license
Contributions are welcome via pull request.
MIT License — see the LICENSE file.
Links
- Convocore API / product docs
- Model Context Protocol
- npm — convocore-mcp
- Docker Hub — moe003/convocore-mcp
- Issues
- Convocore support
Built for the Convocore community.
來源:README.md,提交 e21875e
工具
0版本歷史
1- v2.6.16最新Oct 29, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分