SuperAPI AI Directory

callcenter.js-mcp

Make phone calls using VoIP/SIP and OpenAI's Realtime API, and observe the transcript.

Open website

About this tool

Purpose

CallCenter.js MCP + CLI is an MCP Server, CLI tool, and API that makes phone calls on your behalf using VoIP. Just tell Claude what you want to accomplish, and it will dial and handle the conversation. It is essentially a bridge between the OpenAI Real-Time Voice API and a local VoIP connection, used to make phone calls on someone's behalf.

Main Capabilities

  • MCP Server: Can be used directly in Claude Code or any MCP client (the most common way).
  • CLI Tool: Make phone calls directly from the command line.
  • TypeScript API: A programming library for building voice applications.
  • Multi-codec support: G.722 wideband (16kHz), with G.711 as a fallback; includes a precompiled G.722 WebAssembly codec, so npx users can get wideband audio without compilation tools, and also provides a native addon for maximum performance.
  • AI conversation: Actual calls use the OpenAI Real-Time Voice API with the gpt-realtime model (released August 28, 2025), and o3-mini is used for instruction generation.
  • Automatic language detection: Detects the conversation language based on the call brief and configures transcription accordingly.
  • Automatic voice selection: Adds an auto mode, where o3-mini selects an appropriate voice based on the call context; supports all 10 voices of the OpenAI Realtime API, with awareness of gender and personality.
  • Extended SIP support: Provides configurations for common SIP providers (Fritz!Box has been tested, others are experimental).
  • Smart configuration: Automatically detects provider requirements and optimizes settings.
  • Enterprise-grade features: Supports advanced SIP features (STUN/TURN, session timers, transport fallback).
  • Connection management: Automatic reconnection and smart error handling.
  • Built-in validation: Configuration validation and network testing.
  • Provider configuration profiles: Preset settings for major SIP systems.
  • Call brief processing: Uses o3-mini to convert natural language call instructions into structured JSON output.
  • Optional call recording: Stereo WAV, with the caller and AI on separate channels.

Usage

Installation and Running

Option 1: Run instantly with npx (no installation required), and a .env file can also be used. High-quality G.722 audio is provided with the package as a precompiled WebAssembly module, so machines without a compiler can also use npx; if you want a faster native addon, clone it and run npm run build:native (or npm run build:all). Option 2: Local installation. Optional dependencies: Python 3.x + C/C++ build tools (only needed when rebuilding the native addon). macOS requires Xcode Command Line Tools (xcode-select --install), Windows requires Visual Studio Build Tools, and Linux requires build-essential. Configuration: Edit config.json to fill in the settings.

MCP Server (Claude Code Integration)

You can use the MCP client CLI (the simplest), but you need to replace the placeholder values with actual SIP credentials and the OpenAI API key, otherwise the server cannot connect; you can also configure it manually, or configure Claude Code during local development/local installation. Available MCP tools: simple_call (automatically generates instructions and makes a call), advanced_call (allows fine-grained control of parameters).

Command-Line Interface

Using --brief instead of --instructions works better. --brief uses o3-mini to generate detailed instructions from a simple description; --instructions sends the text directly to the Real-Time Voice API, which is optimized for speed rather than detail, so --brief usually produces better call results.

Programming API

  • makeCall(options: CallOptions): Promise<CallResult>
  • createAgent(config, options?): Promise<VoiceAgent>

Configuration and Priority

All configuration items can be set via environment variables (convenient for npx use). Priority: CLI arguments > configuration file > environment variables.

Quick Success Check

  1. Configuration validation; 2. Make a test call to your own phone for Fritz!Box users; 3. Expected behavior: if configured correctly, audio is clear, AI responses are normal, and hangup is clean; network issuesThe issue may manifest as a connection failure error (check firewall/STUN); authentication issues appear as 401 Unauthorized (verify SIP credentials); codec issues appear as poor audio quality (G.722 compilation may fail). It is recommended to use --duration 30 for test calls first.

Configuration Validation Content

Configuration syntax and required fields, provider-specific requirements, network connectivity to the SIP server, STUN server reachability, codec availability (G.722/G.711), provider compatibility scoring.

SIP Provider Compatibility

Actually tested: AVM Fritz!Box (a German router brand with a built-in VoIP/SIP phone system, the only one verified working in practice). Not tested (research-based configurations): Asterisk PBX (including FreePBX, Elastix, etc.), Cisco CUCM, 3CX Phone System, generic SIP providers (standards-compliant SIP trunks).

Configuration Example Files

config.example.json (AVM Fritz!Box, default for home/SMB), config.asterisk.example.json, config.cisco.example.json, config.3cx.example.json, config.generic.example.json.

Audio Quality and Codecs

Priority and negotiation: G.722 (preferred, 16kHz wideband, better audio quality), G.711 μ-law (fallback, 8kHz narrowband, universal compatibility), G.711 A-law (fallback, 8kHz narrowband, European standard). G.722 implementation: precompiled WebAssembly codec distributed with the package, native C++ plugin can be enabled via npm run build:native; based on CMU and Sippy Software reference implementations; automatically falls back to G.711 if loading fails; real-time low-latency codec. Optional call recording: stereo WAV, caller on the left channel, AI on the right channel, filename can be specified, audio streams synchronized and aligned, high-quality PCM recorded at the native sample rate.

AI Call Brief Processing

The real-time voice API is optimized for speed rather than finesse, and is good at natural conversation but struggles with complex goal-oriented tasks that lack specific instructions. The system uses the o3-mini reasoning model to [start] from a simple briefAutomatically generate detailed instructions: analyze the goal, create conversation state and flow logic, generate specific instructions for each stage, handle edge cases such as voicemail/objections/alternatives, adjust language and tone according to context, and provide fallback strategies. o3-mini will detect the language from the brief and generate instructions in that language, handle cultural context, generate examples with real phrases, and provide a voicemail script for when no one answers.

When to use which method

Use --brief for 95% of calls; it is simpler and works better, suitable for reservations, appointments, business calls, and customer service; use --instructions only when very specific, customized behavior is needed, suitable for highly specialized scenarios, testing, or when the prompt has already been refined.

Voice selection

Supports the 10 voices of the OpenAI Realtime API. The default auto mode has o3-mini intelligently select the best voice based on the call context, and a voice can also be specified manually. The default voice can be set in the configuration file or environment variables. Auto mode considers: formality level (high: cedar, marin, sage; medium: alloy, verse; low: echo, coral, shimmer), industry context (healthcare: sage, shimmer; finance: cedar, sage; retail: coral, echo; technology: alloy, ash), target type (needs authority: cedar, sage; friendly: coral, shimmer; efficient: marin, alloy), language (the voice adapts to the language detected from the brief). MCP integration strongly recommends auto mode but supports manual override.

Advanced features

Intelligent connection management: automatic reconnection (exponential backoff and provider-specific error handling), transport fallback (UDP → TCP → TLS), provider-specific error recovery strategies, and adaptation to network changes. Enhanced SIP protocol support: STUN/TURN integration for NAT traversal, session timers (RFC 4028), PRACK support (RFC 3262), and multiple transports.

Applicable scenarios and limitations

Applicable scenarios: having AI make calls on your behalf through Claude Code or an MCP client (for example, ordering food, reservations, appointments, business calls, customer service); dialing directly with the CLI; building voice applications with the TypeScript API. Limitations and risks: This document is explicitly labeled as a "Vibe-coded" weekend side project, with no guardrails whatsoever. MCP clients may dial anynumber when you did not ask them to (during testing, it once called random numbers at night, played low-frequency noise, and claimed it was calling the author's number). It is explicitly not recommended for use in any professional scenario, and no guarantees are provided. It was developed and tested only on Fritz!Box (a router with built-in VoIP in Germany); configurations for other providers are based on research but untested. You need to provide your own OpenAI API key and SIP/VoIP credentials. Specific facts such as pricing, licensing, and support channels are not provided in this document.