Skip to main content

🤖 Famulor MCP Server

An MCP (Model Context Protocol) Server for the Famulor Voice Agent Platform that enables AI-powered phone calls, assistant management, and call data retrieval via ChatGPT and other MCP-compatible clients. Famulor MCP Server

Demo Video

Overview

This MCP Server provides access to the Famulor Voice Agent Platform, allowing users to make AI-powered phone calls, manage voice assistants, and retrieve call transcripts and recordings — all directly from any MCP-compatible client such as ChatGPT Desktop, Claude Desktop, or other MCP-compliant applications.

🌐 Online MCP Server

You can use the hosted MCP server without any local installation: The server is ready to use! For instructions on online usage, see the Online Deployment Guide.

Features

  • 📞 Make Calls – Initiate AI-powered phone calls
  • 🤖 Manage Assistants – Retrieve and manage your AI assistants
  • 📊 Fetch Call Data – Get transcripts, recordings, and metadata
  • 🔒 Secure Authentication – User-based API key authentication

Development

# Development with hot reload
npm run dev

# Build for production
npm run build

# Start production build
npm start

# Lint code
npm run lint

# Format code
npm run format

Available Tools

Call Tools

Initiates a phone call with an AI assistantParameters:
  • assistant_id (required) - The assistant’s ID
  • phone_number (required) - Phone number in E.164 format
  • variables (optional) - Variables to pass to the assistant
Retrieves details of a specific callParameters:
  • call_id (required) - Call ID
Lists all calls with optional filters (paginated)Parameters:
  • assistant_id (optional) - Filter by assistant ID
  • page (optional) - Page number (default: 1)
  • per_page (optional) - Calls per page (default: 15)
Returns: Paginated response with a data array containing calls and pagination metadata

Assistant Tools

Retrieves all available AI assistants (paginated)Parameters:
  • page (optional) - Page number (default: 1)
  • per_page (optional) - Assistants per page (default: 10)
Returns: Paginated response with a data array containing assistants and pagination metadata (current_page, per_page, total, last_page, next_page_url, etc.)
Retrieves all available phone numbers for assistant assignmentParameters:
  • type (optional) - Filter phone numbers by assistant type: ‘inbound’ or ‘outbound’
Returns: Array of available phone numbers with details including ID, phone number, country code, type label, and availability status
Retrieves all available LLM models for assistant configurationParameters: NoneReturns: Array of available LLM models with ID and name
Retrieves all available voices for assistant configurationParameters:
  • mode (optional) - Filter voices by assistant mode: ‘pipeline’ or ‘multimodal’
Returns: Array of available voices with ID, name, and mode compatibility
Retrieves all available languages for assistant configurationParameters: NoneReturns: Array of available languages with ID, name, and ISO 639-1 two-letter language code (iso_2)
Updates the configuration of an existing AI assistantParameters:
  • id (required) - Unique ID of the assistant to update
  • All other parameters are optional — only specified fields are updated:
    • assistant_name – Assistant name (max 255 chars)
    • voice_id – Voice ID (must exist in available voices)
    • language – Language name (max 100 chars)
    • llm_model – LLM model name (max 100 chars)
    • calls_direction – Call direction type: ‘receive’ or ‘make’
    • engine_type – Engine type: ‘pipeline’ or ‘multimodal’
    • timezone – Timezone (e.g., “Europe/Berlin”)
    • initial_message – Initial message the assistant speaks at call start
    • system_prompt – System prompt defining assistant behavior and personality
    • phone_number_id – Phone number ID to assign (set null to remove)
    • tool_ids – Array of mid-call action IDs to sync with the assistant
    • endpoint_type – Voice Activity Detection type: ‘vad’ or ‘ai’
    • endpoint_sensitivity – Endpoint sensitivity level (0-5)
    • interrupt_sensitivity – Interrupt sensitivity level (0-5)
    • ambient_sound_volume – Ambient noise volume (0-1)
    • post_call_evaluation – Whether post-call evaluation is enabled
    • send_webhook_only_on_completed – Whether webhooks are sent only on completed calls
    • include_recording_in_webhook – Whether the recording URL is included in webhook payloads
    • is_webhook_active – Whether webhook notifications are active
    • webhook_url – Webhook URL for post-call notifications (set null to remove)
    • use_min_interrupt_words – Whether minimum interrupt words setting is used
    • min_interrupt_words – Minimum words before an allowed interruption (0-10)
    • variables – Key-value pairs of custom variables for the assistant
    • post_call_schema – Schema definition for post-call data extraction
    • end_call_tool – End-call tool configuration
    • llm_temperature – LLM temperature setting (0-1)
    • voice_stability – Voice stability setting (0-1)
    • voice_similarity – Voice similarity setting (0-1)
    • speech_speed – Speech speed multiplier (0.7-1.2)
    • allow_interruptions – Whether interruptions by callers are allowed
    • filler_audios – Whether filler audio is played during processing
    • re_engagement_interval – Re-engagement interval in seconds (7-600)
    • max_call_duration – Maximum call duration in seconds (20-1200)
    • max_silence_duration – Maximum silence duration in seconds (1-120)
    • end_call_on_voicemail – Whether to end calls upon voicemail detection
    • noise_cancellation – Whether noise cancellation is enabled
    • record_call – Whether the call should be recorded
    • who_speaks_first – Who speaks first in the call: ‘AI assistant’ or ‘Customer’
Returns: Success message and updated assistant data

Conversation Tools

Retrieves the full message history of an existing Famulor conversationParameters:
  • uuid (required) – The UUID of the conversation to retrieve
Returns: Complete conversation history with messages, roles, and function calls
Starts a new chat session with an AI assistantParameters:
  • assistant_id (required) – UUID of the assistant handling the conversation
  • type (optional) – Conversation type: ‘widget’ (paid) or ‘test’ (free for development)
  • variables (optional) – Custom variables to inject into the assistant context (accessible via template syntax in the system prompt)
Returns: Conversation ID, status, and initial history (if the assistant has a start message)Note: Widget conversations are paid; test conversations are free for development
Sends a user message to an existing conversation and receives the assistant’s replyParameters:
  • uuid (required) – UUID of the existing conversation
  • message (required) – User message to send (max 2000 characters)
Returns: Assistant reply message and any function calls executed during the responseNote: Widget conversations cost $0.01 per user message; test conversations are free

Campaign Tools

Lists all campaigns from the Famulor accountParameters: NoneReturns: Array of all campaigns with details including status, settings, and scheduling info
Starts or stops a campaign within the Famulor systemParameters:
  • campaign_id (required) – ID of the campaign to update
  • action (required) – Action to perform: ‘start’ or ‘stop’
Returns: Success message and updated campaign statusNote: Starting a campaign requires sufficient leads and balance. Stopping a campaign cancels any ongoing calls.

Lead Tools

Lists all leads for the authenticated user (paginated)Parameters:
  • page (optional) – Page number (default: 1)
  • per_page (optional) – Leads per page (default: 15)
Returns: Paginated response with a data array containing leads and pagination metadata
Creates a new lead in the Famulor systemParameters:
  • phone_number (required) – Phone number in E.164 format
  • campaign_id (required) – Campaign ID
  • variables (optional) – Array of variables to pass to the lead
  • allow_dupplicate (optional) – Whether duplicate leads within a campaign are allowed
Returns: Created lead information with IDNote: Use get_assistants to obtain assistant information and variables usable when creating leads
Updates an existing lead in your campaignsParameters:
  • id (required) – ID of the lead to update
  • campaign_id (optional) – ID of the campaign to assign the lead to
  • phone_number (optional) – Phone number (automatically formatted in E.164)
  • status (optional) – Status: ‘created’, ‘completed’, or ‘reached-max-retries’
  • variables (optional) – Custom variables to merge with existing lead variables
Returns: Success message confirming the lead was updated

SMS Tools

Sends an SMS message via your phone numberParameters:
  • from (required) – ID of your phone number to send from (must be SMS-capable)
  • to (required) – Recipient phone number in international format (e.g., “+4915123456789”)
  • body (required) – SMS message content (max 300 characters)
Returns: Success message and SMS data including SMS ID, segments, costs, and statusNote:
  • The sender phone number must belong to the authenticated user and be SMS-capable
  • Sufficient account balance is required to cover SMS costs
  • SMS costs vary by destination country and are charged per segment
  • Long messages may be split into multiple segments, increasing costs

Mid-Call Tools

Lists all mid-call tools enabling AI assistants to interact with external APIs during callsParameters: NoneReturns: Array of all mid-call tools with details including name, description, endpoint, method, timeout, headers, and schema
Retrieves detailed information about a specific mid-call toolParameters:
  • id (required) – Unique ID of the mid-call tool
Returns: Full tool information including configuration and schema
Updates an existing mid-call toolParameters:
  • id (required) – Unique ID of the tool to update
  • name (optional) – Tool name (lowercase letters and underscores only)
  • description (optional) – Detailed explanation of when and how the AI should use this tool
  • endpoint (optional) – Valid URL of the API endpoint to call
  • method (optional) – HTTP method: GET, POST, PUT, PATCH, or DELETE
  • timeout (optional) – Request timeout in seconds (1-30)
  • headers (optional) – HTTP headers to send with the request
  • schema (optional) – Parameter schema that AI will extract and send
Returns: Success message and updated tool data

Project Structure

Famulor-MCP/
├── src/
│   ├── index.ts          # MCP Server entry point
│   ├── server.ts         # MCP Server setup
│   ├── tools/            # Famulor API tools
│   │   ├── calls.ts      # Call operations
│   │   ├── assistants.ts # Assistant operations
│   │   ├── conversations.ts # Conversation operations
│   │   ├── campaigns.ts   # Campaign operations
│   │   ├── leads.ts       # Lead operations
│   │   ├── sms.ts         # SMS operations
│   │   ├── midCallTools.ts # Mid-call tools operations
│   │   └── index.ts      # Tools export
│   ├── auth/             # Authentication
│   │   └── famulor.ts    # Famulor API client
│   └── types/            # TypeScript types
│       └── famulor.ts    # Famulor API types
├── dist/                 # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
├── README.md
├── QUICKSTART.md         # Quick start guide
├── MCP_SETUP.md          # Detailed setup guide
├── DEPLOYMENT.md          # Deployment guide
└── ONLINE_DEPLOYMENT.md   # Online deployment guide

About MCP

This is a Model Context Protocol (MCP) Server providing access to the Famulor Voice Agent Platform. MCP is a protocol that allows AI assistants like ChatGPT, Claude, and other AI tools to securely connect with external data sources and tools. The server exposes Famulor’s voice agent capabilities as MCP tools, enabling any MCP-compatible client (ChatGPT Desktop, Claude Desktop, or others) to interact with the Famulor platform.

Security

  • ✅ Each user configures their own API key
  • ✅ API keys are stored locally in your MCP config file (encrypted by your MCP client)
  • ✅ No API keys are sent over the network (stdio is local)
  • Never commit your MCP config file with API keys to version control
  • Never share your API key publicly

Resources

Contributing

Contributions are welcome! Please feel free to submit a pull request.

License

Proprietary license – use only permitted for Famulor users This software may only be used, copied, and modified if you are using the Famulor Voice Agent Platform. See the LICENSE file for full details.

Author

bekservice