Chamade

io.chamade由 chamade.io 發布官方發布者v5.1.0更新於 Oct 24, 2026

Voice and chat for AI agents — Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, NC Talk, SIP

已驗證Streamable HTTP可網頁執行溝通與協作媒體與設計

概覽

AI 產生的概覽

Chamade 是語音與聊天閘道,讓 AI 助理加入 Discord、Teams、Meet、Slack、Zoom、Telegram、WhatsApp、Nextcloud Talk 與 SIP 的會議和私訊。

可以做什麼
加入、接聽、拒接、列出與離開語音會議及來電,以 TTS 朗讀文字或傳送含附件的會議聊天訊息,讀取通話狀態與增量轉錄,並在會議聊天中顯示正在輸入。查看 Discord、Telegram、Teams、WhatsApp、Slack 與 Nextcloud Talk 的私訊收件匣,傳送含附件的私訊並顯示正在輸入。產生短時有效的預簽章上傳連結,讓本機檔案無需驗證即可上傳並以 file_id 引用。查看帳戶狀態、方案、額度及各平台可用情況。以資源形式讀取即時通話轉錄,並可選擇接收新訊息、來電與轉錄列的推送事件。
適用情境
適合需要讓助理參加或在線上會議中發言、接聽來電,或在聊天平台上處理私訊(含收發檔案)的情境。特別適合以文字驅動的助理,由 Chamade 使用自帶金鑰的 STT/TTS 服務商執行語音層。
執行需求
可透過 Streamable HTTP 連接 mcp.chamade.io 遠端端點,或對僅支援 stdio 的用戶端使用 npm 套件 @chamade/mcp-server 作為 stdio 橋接(經 npx 需要 Node.js)。必須驗證:使用 Chamade 後台產生的 Authorization Bearer API 金鑰(chmd_ 前綴),支援的用戶端也可用 OAuth 2.1;橋接模式需要環境變數 CHAMADE_API_KEY。可選 CHAMADE_URL 與 CHAMADE_MCP_URL 覆寫位址。Teams、Meet 等平台需在後台完成 OAuth 連結;語音需自備 STT/TTS 服務商金鑰。
安裝前請注意
API 金鑰是機密,透過 Authorization 標頭或 CHAMADE_API_KEY 傳遞,勿放入共用設定。此伺服器可傳送訊息、在會議中發言、接聽來電與上傳檔案,操作對其他參與者可見。自帶金鑰的語音服務商(ElevenLabs、Deepgram、OpenAI、Cartesia)依其自身計費。預簽章上傳連結在五分鐘內無需驗證即可使用。收到的檔案以 Chamade 簽章連結形式提供。Claude Code 中接收推送事件需每次啟動加參數。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Chamade,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.chamade%2Fserver/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "chamade": {
      "type": "http",
      "url": "https://mcp.chamade.io/mcp/"
    }
  }
}

README

@chamade/mcp-server

[npm version] [npm downloads] [License: MIT]

MCP (Model Context Protocol) server for Chamade — a voice and chat gateway that lets your AI agent join meetings and DMs on Discord, Microsoft Teams, Google Meet, Telegram, SIP, Zoom, Nextcloud Talk, Slack, and WhatsApp.

The recommended voice path is hosted STT/TTS with bring-your-own-key. Drop your own ElevenLabs / Deepgram / OpenAI / Cartesia API key in your dashboard once — Chamade runs the full speech pipeline on its side using that key. Transcripts flow in as call_transcript events, chamade_call_say speaks into the meeting. Free on Chamade's side; you only pay your provider. Your agent stays fully text-driven.

Already have a voice pipeline you want to keep (OpenAI Realtime, LiveKit Agents, Pipecat, Deepgram Voice Agent, a manual cascade)? Chamade also exposes the call's raw-PCM audio as a bidirectional WebSocket — BYO audio, Chamade transports, you run the speech layer. Either mode, same MCP tools for control.

File attachments work out of the box on DMs and meeting chat for Discord, Telegram, Slack, WhatsApp (incl. voice notes), and Nextcloud Talk. Use chamade_file_upload_url to mint a pre-signed no-auth upload URL, then pass the returned file_id in attachments on chamade_dm_chat or chamade_call_chat. Inbound files arrive on chamade_inbox as Chamade-signed URLs — your agent can curl them with no extra auth. Teams + Meet support is code-ready but gated until the respective platform certifications complete.

Chamade is currently in early access: free, no subscription, no quota.

v4: hosted MCP + thin stdio shim

The Chamade MCP server is now hosted at https://mcp.chamade.io/mcp/ and speaks the Streamable HTTP transport. That's the single source of truth — every tool, every resource, every push event lives there.

  • If your MCP client supports Streamable HTTP (Claude Desktop recent, Claude Code, Cursor, Windsurf, …), configure it directly against the hosted endpoint. You don't need this npm package.
  • If your MCP client is stdio-only, install this package. Since v3 it's a ~160-line wrapper that spawns mcp-remote under the hood to bridge stdio to the hosted HTTP endpoint. Same tools, same push events, same latency. Zero drift because there is no parallel stdio implementation.

What changed in v4

v4 is a server-side wire-shape change picked up automatically by the shim. Headline items, full detail in docs/AGENTS.md:

  • Channels are now Agents. Per-bearer scoping is unchanged; the noun is agent everywhere on the wire and in tool descriptions.
  • account_id is the canonical join key. Used identically in chamade_dm_chat, chamade_call_join, event payloads, and reply XML tag attributes.
  • Event payload v2. data carries account_id + from + from_name (sender_* fields removed) and a pre-stuffed agent_context.{accounts, active_calls} snapshot so the agent always knows what it's on without an extra round-trip.
  • Explicit-target XML tags. Reply XML can now address conversations / calls outside the current reply context (<dm platform=…>, <call_say call_id=…>, …) for cross-target initiation.
  • Auto-MCP attachment. Providers with native MCP-as-tool support (OpenAI Responses, Anthropic Managed Agents, Foundry) receive the Chamade MCP server pre-injected with a per-agent bearer.

Earlier versions of this package (v2.x and below) shipped a full native stdio server that implemented the 13 tools locally in TypeScript against Chamade's REST API. v3+ replaces that with a shim — please upgrade to avoid maintaining two surfaces that slowly diverge.

Quick start

Option A — HTTP direct (preferred)

If your client speaks Streamable HTTP, skip this package entirely:

json
{  "mcpServers": {    "chamade": {      "type": "http",      "url": "https://mcp.chamade.io/mcp/",      "headers": {        "Authorization": "Bearer chmd_..."      }    }  }}

Option B — stdio shim (this package)

For stdio-only clients:

json
{  "mcpServers": {    "chamade": {      "command": "npx",      "args": ["-y", "@chamade/mcp-server@3"],      "env": {        "CHAMADE_API_KEY": "chmd_..."      }    }  }}

CHAMADE_API_KEY is required. Get a real one at https://chamade.io/dashboard → API keys and paste the full chmd_… value (≥ 40 chars after the prefix). If the env var is missing, empty, or still contains a placeholder like chmd_..., the shim refuses to start instead of silently falling back to OAuth — that fallback path loops on refresh-and-revoke and is not a viable auth method for this server.

Configuration

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows). Use Option A or B above.

Claude Code

.mcp.json at the root of your project. Use Option A (HTTP direct) for the best experience.

For real-time push events (transcripts, incoming DMs, ringing calls, WhatsApp dm_delivered flush), launch Claude Code with the channel flag every time:

bash
claude --dangerously-load-development-channels server:chamade --continue

The flag is a per-launch client-side opt-in mandated by Claude Code for MCP channels not yet on the Anthropic allowlist — it's not dangerous, it's just the standard opt-in for experimental channels during the research preview. The server name after server: must match the key in your .mcp.json. Without the flag, tools still work but push events are silently ignored — you have to poll chamade_inbox and chamade_call_status to see new activity.

Cursor / Windsurf / OpenClaw

Same format. Path varies by client: .cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.openclaw/config.json. Use Option A if the client supports HTTP, otherwise Option B.

Tools

ToolDescription
chamade_call_joinJoin a voice meeting (platform + meeting_url).
chamade_call_saySpeak text aloud via TTS in the meeting.
chamade_call_chatSend a text chat message in the meeting. Optional attachments: [{file_id} | {url} | {bytes_b64, name, mime}] to send files along with the text; text becomes the caption when both are set. 25 MB cap per attachment.
chamade_call_statusGet call state and new transcript lines (delta pattern).
chamade_call_acceptAnswer a ringing inbound call (SIP, etc.).
chamade_call_refuseRefuse/reject a ringing inbound call.
chamade_call_typingSend a typing indicator in meeting chat.
chamade_call_leaveHang up and leave the meeting.
chamade_call_listList all active calls.
chamade_inboxCheck DM conversations (Discord, Telegram, Teams, WhatsApp, Slack, NC Talk). Shows WhatsApp 24h window state inline. Inbound file attachments arrive as attachments[] on each message, with Chamade-signed URLs.
chamade_dm_chatSend a DM message by platform. Optional attachments: [{file_id} | {url} | {bytes_b64, name, mime}] to send files; text becomes the caption. On WhatsApp outside the 24h window, returns 202 queued and auto-fires a re-engagement template.
chamade_dm_typingSend a typing indicator in DM by platform.
chamade_file_upload_urlMint a short-lived (5 min) pre-signed upload URL. Your shell / agent curl -F file=@path <url> with no auth header (URL itself is the auth), then pass the returned file_id in attachments: [{file_id}] on a subsequent send. Recommended path for any non-trivial local file — a shell-streamed upload keeps the tool call tiny instead of forcing every base64 character through the model's output budget.
chamade_accountCheck account status, plan, credit/quota, and per-platform readiness (incl. a files bool per platform).

Resources

URI templateDescription
chamade://calls/{call_id}/transcriptLive transcript. Each read returns only new lines since the last read (delta pattern). Channel-mode clients also receive push notifications for every new line.

Channel mode (push events)

Channel mode pushes DM messages, incoming SIP calls, transcript lines, call state changes, and WhatsApp dm_delivered flush events directly into the agent's context — no polling.

Server side — nothing to configure. The hosted Chamade MCP server always declares the experimental.claude/channel capability during the initialize handshake. The v2.x --channel arg / CHAMADE_CHANNEL=1 env var are gone.

Client side — Claude Code needs a per-launch flag. Claude Code only processes notifications/claude/channel from MCP servers you've explicitly opted in:

bash
claude --dangerously-load-development-channels server:chamade --continue

Required every launch. Without it, Chamade tools still work but push events are silently dropped client-side — the agent has to poll chamade_inbox and chamade_call_status to see new activity.

Other MCP clients (Claude Desktop, Cursor, Windsurf) currently do not have a channel receiver and will silently ignore push notifications. They still work in polling mode via chamade_inbox with last_message_cursor + optional wait for long-polling.

Environment variables (shim only)

Only the stdio shim uses these. Direct HTTP config has everything in JSON.

VariableRequiredDefaultDescription
CHAMADE_API_KEYYes—API key (chmd_*, ≥ 40 chars of entropy) from chamade.io/dashboard. The shim validates the shape at startup and exits 1 on placeholders or missing values; there is no OAuth fallback.
CHAMADE_URLNohttps://chamade.ioChamade instance URL. The shim derives the MCP endpoint automatically: https://chamade.io → https://mcp.chamade.io/mcp/, https://dev.chamade.io → https://mcp.dev.chamade.io/mcp/.
CHAMADE_MCP_URLNo—Explicit MCP endpoint override. Skip unless you're running a custom proxy.

The v2.x --channel CLI flag is silently accepted for backwards-compat, but it's a no-op — channel mode is always on in v3.

Supported platforms

  • Discord — voice channels (shared bot or bring your own), text, files (send + receive, 25 MB)
  • Microsoft Teams — voice meetings + text DM, requires OAuth connection on dashboard. Files code-ready, gated behind AppSource cert.
  • Google Meet — voice (audio_in) + chat text, requires OAuth connection on dashboard (see note below). Files code-ready, gated behind Google OAuth verification.
  • Telegram — DM text + files (send + receive). No voice.
  • Zoom — voice + meeting chat, pass meeting URL (pending Zoom Marketplace approval — tester access on request). No files.
  • SIP / Phone — voice only, pass phone number or SIP URI. No files.
  • Nextcloud Talk — voice + text + files (send on any addon version, receive needs addon ≥ 2.4.0)
  • WhatsApp — DM text + files (send + receive, incl. voice notes as raw audio). No voice calls.

⚠️ Google Meet voice — beta limitation. Real-time audio capture on Meet relies on Google's Meet Media API, currently in Developer Preview. Every meeting participant must be individually enrolled — if anyone isn't, audio capture fails. Calendar integration and in-meeting chat work normally for everyone. For production voice use cases, prefer Teams, Discord, Nextcloud Talk, or SIP.

How it works

Agent (Claude Desktop, Cursor, …)  │ MCP (Streamable HTTP, Authorization: Bearer chmd_*)  ▼mcp.chamade.io                       (hosted by Chamade)  │  ▼Chamade API                           (chamade.io)  │  ▼Maquisard bridge                      (transports audio; forwards to your                                       STT/TTS provider when BYOK preset set)  │  ▼Discord / Teams / Meet / …

With Option B (stdio shim), the client doesn't speak HTTP; the shim sits in between as a transport adapter:

Agent (stdio-only client)  │ stdio JSON-RPC  ▼@chamade/mcp-server@3                 (this package, ~160 LOC)  │ spawns  ▼mcp-remote                            (local subprocess)  │ Streamable HTTP, Bearer chmd_*  ▼mcp.chamade.io                        (hosted)

Development

bash
npm installnpm run dev     # runs with tsx (hot reload, src/index.ts)npm run build   # compiles to dist/npm test        # unit tests for deriveMcpUrl + buildRemoteArgs

The shim itself is tiny (see src/index.ts). Full MCP tool behavior is tested in the parent Chamade repo under tests/e2e/test_mcp_http.py, which drives the hosted server directly — that's the source of truth for tool semantics.

Documentation

Issues & feedback

License

MIT — see LICENSE.

來源:README.md,提交 8951ecc

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

1
  1. v5.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 85%

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

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

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

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