Package Exports
- @chamade/mcp-server
- @chamade/mcp-server/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@chamade/mcp-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@chamade/mcp-server
MCP (Model Context Protocol) server for Chamade — a voice gateway that lets your AI agent join voice meetings and phone calls on Discord, Microsoft Teams, Google Meet, Telegram, SIP, Zoom, Nextcloud Talk, and WhatsApp.
Your agent only deals with text. Chamade handles the audio layer: joining the meeting, transcribing what people say (STT), speaking replies aloud (TTS), and relaying chat messages.
Beta / early access — Chamade is currently free during early access, no credit card required. Sign up and get an API key in one minute.
Quick start
npx @chamade/mcp-serverRequires CHAMADE_API_KEY env var. Get one at https://chamade.io/dashboard.
Configuration
OpenClaw
{
"agents": {
"list": [{
"id": "main",
"mcp": {
"servers": [{
"name": "chamade",
"command": "npx",
"args": ["-y", "@chamade/mcp-server"],
"env": {
"CHAMADE_API_KEY": "chmd_..."
}
}]
}
}]
}
}Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"chamade": {
"command": "npx",
"args": ["-y", "@chamade/mcp-server"],
"env": {
"CHAMADE_API_KEY": "chmd_..."
}
}
}
}Claude Code (with channels — recommended)
.mcp.json at the root of your project:
{
"mcpServers": {
"chamade": {
"command": "npx",
"args": ["-y", "@chamade/mcp-server", "--channel"],
"env": {
"CHAMADE_API_KEY": "chmd_..."
}
}
}
}Then launch Claude Code with channels enabled:
claude --dangerously-load-development-channels server:chamade --continueThis is required every session. The --dangerously-load-development-channels flag is standard Claude Code naming for loading third-party channels not yet on the official allowlist — it is not dangerous. --continue resumes the current conversation.
With channel mode, transcripts, messages, and incoming calls are pushed to the agent in real-time — no polling needed.
Cursor / Windsurf
.cursor/mcp.json or .windsurf/mcp.json — same format as Claude Desktop.
Tools
| Tool | Description |
|---|---|
chamade_call_join |
Join a voice meeting (platform + meeting_url). |
chamade_call_say |
Speak text aloud via TTS in the meeting. |
chamade_call_chat |
Send a text chat message in the meeting. |
chamade_call_status |
Get call state and new transcript lines (delta pattern). |
chamade_call_accept |
Answer a ringing inbound call (SIP, etc.). |
chamade_call_refuse |
Refuse/reject a ringing inbound call. |
chamade_call_typing |
Send a typing indicator in meeting chat. |
chamade_call_leave |
Hang up and leave the meeting. |
chamade_call_list |
List all active calls. |
chamade_inbox |
Check DM conversations (Discord, Telegram, Teams, WhatsApp, Slack). |
chamade_dm_chat |
Send a DM message by platform. |
chamade_dm_typing |
Send a typing indicator in DM by platform. |
chamade_account |
Check account status, plan, credit/quota, and platform readiness. |
Resources
| URI template | Description |
|---|---|
chamade://calls/{call_id}/transcript |
Live transcript. Subscribe for notifications/resources/updated push on each new line. Each read returns only new lines since last read. |
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
CHAMADE_API_KEY |
Yes | — | API key (chmd_*) from chamade.io/dashboard |
CHAMADE_URL |
No | https://chamade.io |
Chamade API base URL |
Supported platforms
- Discord — voice channels (no OAuth needed, pass channel link)
- Microsoft Teams — requires OAuth connection on dashboard
- Google Meet — requires OAuth connection on dashboard (see note below)
- Telegram — voice chats (pass invite link)
- Zoom — pass meeting URL
- SIP / Phone — pass phone number or SIP URI (Pro plan)
- Nextcloud Talk — pass meeting URL
- WhatsApp — text DM only (pass phone number)
⚠️ Google Meet voice — beta limitation. Real-time audio capture on Meet relies on Google's Meet Media API, which is currently in Developer Preview. Every meeting participant must be individually enrolled in Google's program — if anyone isn't, audio capture fails. In practice, audio capture is not usable in real meetings with non-enrolled colleagues or external clients. 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 (OpenClaw, Claude, ...)
│ MCP (stdio JSON-RPC)
▼
@chamade/mcp-server (runs locally)
│ HTTPS + WSS
▼
Chamade API (chamade.io)
│ HTTP + WS
▼
Maquisard bridge (handles audio, STT/TTS)
│
▼
Discord / Teams / Meet / ...The MCP server is a thin client. It calls the Chamade REST API to create/manage calls and poll transcripts. Transcripts are exposed as an MCP resource with a delta-read pattern (only new lines since last read).
In channel mode (Claude Code and other clients that support MCP notifications), the server opens WebSocket connections to Chamade and pushes events directly to the agent — no polling loop needed. Transcripts, chat messages, incoming calls, and DMs all arrive as real-time notifications.
Development
npm install
npm run dev # runs with tsx (hot reload)
npm run build # compiles to dist/
npm test # mock chamade server + JSON-RPC test clientDocumentation
- Chamade docs — full API reference, platform setup, and pricing
- LLMs guide — complete API reference formatted for AI agents
- Setup guide — step-by-step onboarding for agents
Issues & feedback
- Bug or feature request: open an issue
- Direct contact: chamade@nafis.io
- In-app: every Chamade dashboard has a "Send feedback" button during early access
License
MIT — see LICENSE.