JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 712
  • Score
    100M100P100Q91454F
  • License MIT

MCP server for Chamade — voice gateway for AI agents. Join Discord, Teams, Meet, Telegram, SIP, Zoom meetings and interact via speech and text. Supports Claude Code channel mode for push events.

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 — voice gateway for AI agents.

Your agent gets tools to join voice meetings on Discord, Teams, Meet, Telegram, SIP and Nextcloud Talk. Chamade handles STT, TTS and the meeting connection. The agent only sees text.

Quick start

npx @chamade/mcp-server

Requires 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_..."
      }
    }
  }
}

.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 --continue

This 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
  • Telegram — voice chats (pass invite link)
  • Zoom — pass meeting URL
  • SIP / Phone — pass phone number or SIP URI
  • Nextcloud Talk — pass meeting URL
  • WhatsApp — text DM only (pass phone number)

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/