JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 712
  • Score
    100M100P100Q91460F
  • 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_join Join a voice meeting (platform + meeting_url).
chamade_say Speak text aloud via TTS in the meeting.
chamade_chat Send a text chat message in the meeting.
chamade_status Get call state and new transcript lines (delta pattern).
chamade_answer Answer a ringing inbound call (SIP, etc.).
chamade_typing Send a typing indicator in chat or DM.
chamade_leave Hang up and leave the meeting.
chamade_list_calls List all active calls.
chamade_inbox Check DM conversations (Discord, Telegram, Teams, etc.).
chamade_send Send a DM message to a conversation.
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/