ElevenLabs Agents

io.github.mindstone由 GitHub 帳號 mindstone 發布v0.2.1更新於 Oct 24, 2026

ElevenLabs Conversational AI: agents, calls, conversations, and knowledge base for MCP hosts

發布方自己的服務:ElevenLabs

概覽

AI 產生的概覽

管理 ElevenLabs 對話式 AI 語音代理:撰寫代理、檢視通話紀錄、撥打外撥與批次電話,並維護知識庫。

可以做什麼
  • 建立、讀取、更新、複製與刪除語音代理,並可模擬對話進行測試
  • 列出、新增與檢視工作區中的代理工具(例如 webhook 與用戶端工具)
  • 列出對話、讀取逐字稿與分析、下載錄音,並提交喜歡或不喜歡的回饋
  • 列出、匯入、更新與刪除電話號碼及其代理指派
  • 撥打單次外撥電話,並提交、列出、檢視、取消或重試排程批次通話工作
  • 列出、讀取、新增、刪除知識庫文件,重建 RAG 索引並查看索引狀態
適用情境
適合使用 ElevenLabs 對話式 AI 的情境:想讓助理草擬或調整語音代理、回顧過去的通話逐字稿與錄音、發起或安排外撥任務,或在不開啟 ElevenLabs 主控台的情況下維護代理知識庫。
執行需求
透過 npx 在本機執行,需要 Node.js 20+ 與 npm。需要具備對話式 AI 權限的 ElevenLabs API 金鑰,透過 ELEVENLABS_API_KEY 提供。選用的 MCP_WORKSPACE_PATH 可指定知識庫檔案上傳的沙箱根目錄。需要連線至 ElevenLabs API 的網路存取。
安裝前請注意
API 金鑰屬於機密,可透過設定工具儲存。外撥與批次通話會撥打真實電話號碼並產生 ElevenLabs 費用;排程批次工作在用戶端關閉後仍會在 ElevenLabs 伺服器上執行,需用列表或查詢工具監控並適時取消。多個工具會寫入或刪除上游資料,包括代理、電話號碼與知識庫文件。通話逐字稿包含來電者可控的語音內容,會以不受信任內容的形式包裝。伺服器端抓取 webhook 與 URL 模式文件雖經驗證,仍可能解析到內部網路位址。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ElevenLabs Agents,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@mindstone/mcp-server-elevenlabs-agents

[License: FSL-1.1-MIT]

ElevenLabs Conversational AI MCP server for Model Context Protocol hosts. Inspect and author voice agents, review conversation transcripts and recordings, manage phone-number assignments, place outbound calls, submit or monitor scheduled batch calls, and write to the knowledge base through the ElevenLabs ConvAI API.

Status

  • Version: 0.2.1 · npm
  • Auth: API key (ELEVENLABS_API_KEY)
  • Tools: 31 (configure, agents, agent tools, conversations, phone numbers, outbound calls, batch calls, knowledge base)
  • Surface: cloud-api
  • Machine-readable: STATUS.json

Requirements

  • Node.js 20+
  • npm
  • An ElevenLabs API key with Conversational AI access

One-click install

[Add to Cursor] [Add to VS Code] [Add to VS Code Insiders]

After clicking the button, your host will prompt you to fill: ELEVENLABS_API_KEY.

Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (ElevenLabs Agents)
json
{  "mcpServers": {    "ElevenLabs Agents": {      "command": "npx",      "args": [        "-y",        "@mindstone/mcp-server-elevenlabs-agents"      ],      "env": {        "ELEVENLABS_API_KEY": ""      }    }  }}

Quick Start

Install & build

bash
cd <path-to-repo>/connectors/elevenlabs-agentsnpm installnpm run build

Local

bash
node dist/index.js

Configuration

Environment variables

  • ELEVENLABS_API_KEY — ElevenLabs API key (starts with sk_)
  • MCP_WORKSPACE_PATH — optional sandbox root for knowledge-base file uploads
  • MCP_HOST_BRIDGE_STATE — optional path to a host bridge state file used for credential management
  • MINDSTONE_REBEL_BRIDGE_STATE — backwards-compatible alias for MCP_HOST_BRIDGE_STATE

Host configuration example

json
{  "mcpServers": {    "ElevenLabs Agents": {      "command": "node",      "args": ["<path-to-repo>/connectors/elevenlabs-agents/dist/index.js"],      "env": {        "ELEVENLABS_API_KEY": "your-api-key"      }    }  }}

Tools (31)

Configuration

  • configure_elevenlabs_agents_api_key — Save your ElevenLabs API key

Agents

  • list_agents — List voice agents in the workspace
  • get_agent — Get one agent, including prompts and nested conversation config
  • create_agent — Create a new agent from a user-friendly authoring surface
  • update_agent — Partially update one agent via PATCH deep-merge semantics
  • duplicate_agent — Duplicate an existing agent before experimenting
  • delete_agent — Permanently remove an agent
  • simulate_conversation — Test an agent with a simulated user message before telephony work

Agent tools (workspace tools)

  • list_agent_tools — List webhook/client/system tools available to agents
  • add_agent_tool — Add a webhook or client tool to the workspace

Conversations

  • list_conversations — List conversations, optionally filtered by agent/date/success
  • get_conversation — Get a full conversation transcript and analysis
  • get_conversation_audio — Download the conversation recording to a tmp file
  • submit_conversation_feedback — Submit like/dislike feedback on a reviewed conversation

Phone numbers

  • list_phone_numbers — List configured phone numbers
  • get_phone_number — Get one phone number and its label/assignment
  • import_phone_number — Import a Twilio or SIP trunk number into the workspace
  • update_phone_number — Update one phone number label and/or assigned agent
  • delete_phone_number — Permanently remove an imported phone number

Outbound calls

  • make_outbound_call — Place one outbound call after resolving the phone-number provider automatically

Batch calls

  • submit_batch_call — Submit a multi-recipient batch, optionally scheduled for the future
  • list_batch_calls — List recent batch-call jobs in the workspace
  • get_batch_call — Inspect one batch job, including per-recipient statuses
  • cancel_batch_call — Cancel a queued or scheduled batch job
  • retry_batch_call — Retry a previously submitted batch job

Knowledge base

  • list_knowledge_base_docs — List knowledge-base documents
  • get_knowledge_base_doc — Get one knowledge-base document (metadata + /content body, capped ~50KB)
  • add_knowledge_base_document — Add a KB document in text, file, or URL mode
  • delete_knowledge_base_document — Delete a KB document, optionally with force
  • get_knowledge_base_rag_index_status — Check whether a document is indexed and retrievable
  • rebuild_knowledge_base_rag_index — Trigger (re)indexing of a KB document

Security notes

All external text returned by the ElevenLabs API is wrapped in <untrusted-content> envelopes before it reaches the model. This is especially important for conversation transcripts, which can contain attacker-controlled caller speech. Enveloping is deny-by-default: anything that is not a recognised structural value (IDs, enums, timestamps, phone numbers) is wrapped, including responses whose root is a bare JSON value rather than an object.

The same walk runs on every response surface — agents, conversations, knowledge base, phone numbers, simulations, and outbound/batch calls. No surface carries a list of known prose field names, so a text field added upstream (an agent name, a workflow branch name, a future summary) is enveloped from the day it first appears in a response.

Nor does an unexpected shape route text around the walk. A response whose root is a bare JSON value, a list whose items are bare strings, and a transcript field carrying a string or an object where an array of turns was expected all go through the same deny-by-default walk rather than being returned unchanged.

Because reads come back enveloped, the agent authoring tools strip one envelope from the values they are given. Copying a language, model id, prompt, or advanced_config fragment out of get_agent and back into update_agent therefore stores the original text upstream rather than the envelope around it.

The structural literal exemptions in the walk are path-aware and value-shape-aware, not key-name-based. Inside arbitrary collaborator-authored maps — webhook request_headers, advanced_config passthroughs, JSON-Schema parameter fragments, and the caller-authored open maps submitted with call initiation (conversation_initiation_client_data, conversation_config_override, custom_llm_extra_body, overrides, which ElevenLabs reflects on the conversation, call, and batch-call surfaces) — key names are data rather than schema, so no string stays literal there at all: a property named status in a request-header map is collaborator text, not a trusted enum, and is enveloped whatever its value looks like. Because advanced_config is deep-merged into the config body before it is sent upstream, its reflected shape carries no advanced_config ancestor to key off; on the agent and workspace-tool surfaces a string therefore also stays literal only when every ancestor key from the surface root is a known schema position, so a flattened passthrough fragment (for example tool_config.custom.status) is enveloped however structural its key names and value shape look. Elsewhere on trusted paths, a string only stays literal under id/status/role/type keys when it is id/enum-shaped (no whitespace, no : or /, and not phrase-shaped or built from instruction-shaping words — alphabet shape alone cannot tell an identifier from whitespace-free authored text such as IGNORE_PRIOR_INSTRUCTIONS), under timestamp only when it is ISO-8601-shaped, and under phone-number keys only when it is E.164. Values under credential-shaped keys (token, sid, *_secret, *_password, *_api_key) are replaced with [redacted] instead of being passed on at all, and import_phone_number additionally strips the exact submitted credentials — the Twilio SID/token pair, and SIP trunk credential values such as a trunk username — from any success payload or upstream error detail that reflects them.

URLs the connector asks ElevenLabs to dereference server-side must be public https:// addresses. This covers webhook tools via add_agent_tool, URL-mode knowledge-base documents, and every url-keyed string in the agent authoring tools' advanced_config (create_agent / update_agent) — ElevenLabs fetches custom_llm.url on every conversation turn and dereferences platform_settings webhook URLs, so the merged agent body is validated recursively before any upstream call. Non-HTTP schemes, plain HTTP, embedded credentials, loopback/private/link-local/CGNAT/multicast IP literals (including the cloud-metadata address 169.254.169.254), IPv4-mapped/NAT64/6to4/Teredo and documentation IPv6 ranges, localhost-style hostnames, and single-label hostnames are rejected before any upstream call; trailing root-label dots are stripped before classification, so DNS-equivalent spellings such as localhost. are rejected too. A public hostname can still resolve or redirect to an internal address once ElevenLabs fetches it — that residual DNS/redirect trust boundary is inherent to server-side dereferencing and is not closed by this validation. add_agent_tool's advanced_config deep-merges last but cannot set first-class fields (type, name, description, expects_response, api_schema.url, api_schema.method), and the merged tool config is revalidated before it is sent.

Outbound numbers are validated in E.164 format before any billing-surface call is sent upstream. Scheduled batches run on ElevenLabs' servers even if the client app is closed, so they should be monitored with list_batch_calls / get_batch_call and stopped with cancel_batch_call when needed.

Licence

FSL-1.1-MIT — Functional Source License, Version 1.1, with MIT future licence. The software converts to MIT licence on 2030-04-08.

來源:connectors/elevenlabs-agents/README.md,提交 22c4611

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.1最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Elevenlabs 整合