MCP Server for Famulor Voice Agent Platform - AI-powered phone calling and voice assistant management through ChatGPT, Claude, and other MCP-compatible clients
🤖 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 through ChatGPT and other MCP-compatible clients.

Demo Video
https://www.youtube.com/watch?v=OMQeTiBNW3Q
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 like ChatGPT Desktop, Claude Desktop, or other MCP-compatible applications.
🌐 Online MCP Server
You can use the hosted MCP server without local installation:
- Server URL: https://mcp.famulor.io
- SSE Endpoint: https://mcp.famulor.io/sse
- Health Check: https://mcp.famulor.io/health
The server is ready to use! For online usage instructions, see the Online Deployment Guide.
Features
- 📞 Make Calls - Initiate AI-powered phone conversations
- 🤖 Manage Assistants - Get and manage your AI assistants
- 📊 Retrieve Call Data - Get transcripts, recordings, and metadata
- 🔒 Secure Authentication - API key-based authentication per user
Prerequisites
- An MCP-compatible client such as:
- A Famulor API key (Get one here)
Note: If you want to run your own local server (Option 2), you'll also need:
- Node.js >= 20.0.0 (Download)
Quick Start
Option 1: Use Online MCP Server (Recommended - No Installation Required)
The easiest way to get started! Use our hosted MCP server at https://mcp.famulor.io.
1. Get Your API Key
- Go to Famulor API Keys
- Sign in or create an account
- Create a new API key
- Copy the API key (you'll need it in the next step)
2. Configure MCP in Your Client
See the Client-Specific Installation section below for detailed instructions for your MCP client (Cursor, Claude Desktop, ChatGPT Desktop, etc.).
Quick Example Configuration:
{
"mcpServers": {
"famulor": {
"url": "https://mcp.famulor.io/sse",
"env": {
"FAMULOR_API_KEY": "your-api-key-here"
}
}
}
}
3. Restart Your MCP Client
- Close your MCP client completely
- Restart it
- The MCP server should be automatically connected
4. Test It!
In your MCP client (ChatGPT, Claude, etc.), try asking:
- "Show me my Famulor assistants"
- "List my recent calls"
- "Make a call with assistant [ID] to [phone number]"
Option 2: Use Your Own Local Server
If you prefer to run the server locally:
1. Clone the Repository
git clone https://github.com/bekservice/Famulor-MCP.git
cd Famulor-MCP
2. Install Dependencies
npm install
3. Build the Server
npm run build
4. Get Your API Key
- Go to Famulor API Keys
- Sign in or create an account
- Create a new API key
- Copy the API key (you'll need it in the next step)
5. Configure MCP in Your Client
Create or edit the MCP configuration file for your platform and client. See the Client-Specific Installation section below for detailed instructions.
Example Configuration:
{
"mcpServers": {
"famulor": {
"command": "node",
"args": [
"/absolute/path/to/Famulor-MCP/dist/index.js"
],
"env": {
"FAMULOR_API_KEY": "your-api-key-here"
}
}
}
}
Important:
- Replace
/absolute/path/to/Famulor-MCPwith the actual absolute path to your cloned repository - Replace
your-api-key-herewith your actual Famulor API key - On Windows, use forward slashes or escaped backslashes in the path
Example paths:
- macOS:
/Users/username/Famulor-MCP/dist/index.js - Windows:
C:/Users/username/Famulor-MCP/dist/index.jsorC:\\Users\\username\\Famulor-MCP\\dist\\index.js - Linux:
/home/username/Famulor-MCP/dist/index.js
6. Restart Your MCP Client
- Close your MCP client (ChatGPT Desktop, Claude Desktop, etc.) completely
- Restart it
- The MCP server should be automatically connected
7. Test It!
In your MCP client (ChatGPT, Claude, etc.), try asking:
- "Show me my Famulor assistants"
- "List my recent calls"
- "Make a call with assistant [ID] to [phone number]"
Client-Specific Installation
Choose your MCP client below for specific installation instructions:
For Claude Desktop
Important: Claude Desktop currently only supports local command-based MCP server configurations. HTTP/URL-based configurations are not supported, even in the latest version.
Setup Instructions
-
Find your configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Add the MCP server configuration:
Open the configuration file and add the following to the
mcpServerssection:{ "mcpServers": { "famulor": { "command": "node", "args": [ "/absolute/path/to/Famulor-MCP/dist/index.js" ], "env": { "FAMULOR_API_KEY": "your-api-key-here" } } } }Important:
- Replace
/absolute/path/to/Famulor-MCPwith your actual absolute path to the repository - Replace
your-api-key-herewith your actual Famulor API key - You can get your API key at Famulor API Keys
- Make sure you've built the server:
npm run build - The path must be absolute (not relative)
- Replace
-
Restart Claude Desktop completely for the changes to take effect.
For Cursor
Option 1: Use Online MCP Server (Recommended - No Installation Required)
Global Installation (Recommended):
-
Go to Cursor Settings > Tools & Integrations
-
Click "New MCP Server"
-
This will open
~/.cursor/mcp.json -
Add the following configuration:
{ "mcpServers": { "famulor": { "type": "http", "url": "https://mcp.famulor.io/sse", "headers": { "Authorization": "Bearer your-api-key-here" } } } }Important:
- Replace
your-api-key-herewith your actual Famulor API key - The API key must be prefixed with
Bearerin the Authorization header - You can get your API key at Famulor API Keys
- Replace
-
Go back to Settings > MCP and click the refresh button
-
The Cursor agent will now be able to use the Famulor MCP tools
Project-Specific Installation:
- Create or edit
.cursor/mcp.jsonin your project root - Add the same configuration as above
- Restart Cursor or refresh MCP settings
Option 2: Use Your Own Local Server
Global Installation (Recommended):
-
Go to Cursor Settings > Tools & Integrations
-
Click "New MCP Server"
-
This will open
~/.cursor/mcp.json -
Add the following configuration:
{ "mcpServers": { "famulor": { "command": "node", "args": [ "/absolute/path/to/Famulor-MCP/dist/index.js" ], "env": { "FAMULOR_API_KEY": "your-api-key-here" } } } } -
Go back to Settings > MCP and click the refresh button
-
The Cursor agent will now be able to use the Famulor MCP tools
Project-Specific Installation:
- Create or edit
.cursor/mcp.jsonin your project root - Add the same configuration as above
- Restart Cursor or refresh MCP settings
For Claude Code
Option 1: Use Online MCP Server (Recommended - No Installation Required)
To add the online MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "famulor" '{"type":"http","url":"https://mcp.famulor.io/sse","headers":{"Authorization":"Bearer your-api-key-here"}}'
Note:
- Replace
your-api-key-herewith your actual Famulor API key - The API key must be prefixed with
Bearerin the Authorization header - You can get your API key at Famulor API Keys
Option 2: Use Your Own Local Server
To add your local MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "famulor" '{"command":"node","args":["/absolute/path/to/Famulor-MCP/dist/index.js"],"env":{"FAMULOR_API_KEY":"your-api-key-here"}}'
Note: Replace /absolute/path/to/Famulor-MCP/dist/index.js with your actual path and your-api-key-here with your actual API key.
See the official Claude Code MCP documentation for more details.
For ChatGPT Desktop App
Option 1: Use Online MCP Server (Recommended - No Installation Required)
-
Find your configuration file:
- macOS:
~/Library/Application Support/ChatGPT/mcp.json - Windows:
%APPDATA%\ChatGPT\mcp.jsonorC:\Users\YourUsername\AppData\Roaming\ChatGPT\mcp.json - Linux:
~/.config/ChatGPT/mcp.json
- macOS:
-
Add the online MCP server configuration:
{ "mcpServers": { "famulor": { "url": "https://mcp.famulor.io/sse", "env": { "FAMULOR_API_KEY": "your-api-key-here" } } } } -
Restart ChatGPT Desktop App for the changes to take effect.
Option 2: Use Your Own Local Server
-
Find your configuration file:
- macOS:
~/Library/Application Support/ChatGPT/mcp.json - Windows:
%APPDATA%\ChatGPT\mcp.jsonorC:\Users\YourUsername\AppData\Roaming\ChatGPT\mcp.json - Linux:
~/.config/ChatGPT/mcp.json
- macOS:
-
Add the MCP server configuration:
{ "mcpServers": { "famulor": { "command": "node", "args": [ "/absolute/path/to/Famulor-MCP/dist/index.js" ], "env": { "FAMULOR_API_KEY": "your-api-key-here" } } } } -
Restart ChatGPT Desktop App for the changes to take effect.
Alternative: Using the Online MCP Server
No local installation required! You can use the hosted MCP server at https://mcp.famulor.io.
For OpenAI App Store / ChatGPT Web
- Register your app in the OpenAI Developer Portal
- Configure the MCP Server URL:
https://mcp.famulor.io/sse - Users will enter their own Famulor API key through the ChatGPT/Claude UI
- Each user's API key is securely stored and used per-request
See ONLINE_DEPLOYMENT.md for detailed instructions.
For MCP Clients with HTTP/SSE Support
Some MCP clients support HTTP/SSE connections. Configure your client to connect to:
- URL:
https://mcp.famulor.io/sse - API Key: Enter your Famulor API key in the client's configuration
Alternative: Using Environment Variable
Instead of putting the API key in mcp.json, you can use an environment variable:
-
Set the environment variable:
export FAMULOR_API_KEY="your-api-key-here" # macOS/Linux # or set FAMULOR_API_KEY=your-api-key-here # Windows CMD # or $env:FAMULOR_API_KEY="your-api-key-here" # Windows PowerShell -
Remove the
envsection frommcp.json:{ "mcpServers": { "famulor": { "command": "node", "args": [ "/absolute/path/to/Famulor-MCP/dist/index.js" ] } } }
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
make_call- Make a phone call with an AI assistant- Parameters:
assistant_id,phone_number,variables(optional)
- Parameters:
get_call- Get details of a specific call- Parameters:
call_id
- Parameters:
list_calls- List all calls with optional filters (paginated)- Parameters:
assistant_id(optional) - Filter by assistant IDpage(optional) - Page number (default: 1)per_page(optional) - Number of calls per page (default: 15)
- Returns: Paginated response with
dataarray containing calls and pagination metadata - Parameters:
assistant_id(optional),limit(optional)
- Parameters:
Assistant Tools
get_assistants- Get all available AI assistants (paginated)- Parameters:
page(optional) - Page number (default: 1)per_page(optional) - Number of assistants per page (default: 10)
- Returns: Paginated response with
dataarray containing assistants and pagination metadata (current_page,per_page,total,last_page,next_page_url, etc.)
- Parameters:
get_phone_numbers- Get all available phone numbers for assistant assignment- Parameters:
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
- Parameters:
get_models- Get all available LLM models for assistant configuration- Parameters: None
- Returns: Array of available LLM models with ID and name
get_voices- Get all available voices for assistant configuration- Parameters:
mode(optional) - Filter voices by assistant mode: 'pipeline' or 'multimodal'
- Returns: Array of available voices with ID, name, and mode compatibility
- Parameters:
get_languages- Get all available languages for assistant configuration- Parameters: None
- Returns: Array of available languages with ID, name, and ISO 639-1 two-letter language code (iso_2)
update_assistant- Update the configuration of an existing AI assistant- Parameters:
id(required) - The unique ID of the assistant to update- All other parameters are optional - only specified fields will be updated:
assistant_name- Assistant name (max 255 characters)voice_id- Voice ID (must exist in available voices)language- Language name (max 100 characters)llm_model- LLM model name (max 100 characters)calls_direction- Call direction type: 'receive' or 'make'engine_type- Engine type: 'pipeline' or 'multimodal'timezone- Timezone (e.g., "Europe/Berlin")initial_message- First message the assistant will speak at call startsystem_prompt- System prompt defining assistant behavior and personalityphone_number_id- Phone number ID to assign (set to null to remove)tool_ids- Array of mid-call action IDs to sync with assistantendpoint_type- Voice activity detection type: 'vad' or 'ai'endpoint_sensitivity- Endpoint sensitivity level (0-5)interrupt_sensitivity- Interruption sensitivity level (0-5)ambient_sound_volume- Ambient sound volume (0-1)post_call_evaluation- Whether to enable post-call evaluationsend_webhook_only_on_completed- Whether to send webhooks only on completed callsinclude_recording_in_webhook- Whether to include recording URL in webhook payloadis_webhook_active- Whether webhook notifications are enabledwebhook_url- Webhook URL for post-call notifications (set to null to remove)use_min_interrupt_words- Whether to use minimum interrupt words settingmin_interrupt_words- Minimum number of words before allowed interruption (0-10)variables- Key-value pairs of custom variables for the assistantpost_call_schema- Schema definition for post-call data extractionend_call_tool- End call tool configurationllm_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 caller are allowedfiller_audios- Whether to use filler audio during processingre_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 call on voicemail detectionnoise_cancellation- Whether noise cancellation is enabledrecord_call- Whether the call should be recordedwho_speaks_first- Who speaks first in the call: 'AI assistant' or 'Customer'
- Returns: Success message and updated assistant data
- Parameters:
Conversation Tools
get_conversation- Get the complete message history of an existing Famulor conversation- Parameters:
uuid(required) - The UUID of the conversation to retrieve - Returns: Full conversation history with messages, roles, and function calls
- Parameters:
create_conversation- Start a new chat session with an AI assistant- Parameters:
assistant_id(required) - UUID of the assistant that will handle the conversationtype(optional) - Conversation type: 'widget' (paid) or 'test' (free for development)variables(optional) - Custom variables to inject into the assistant context (accessible via {{variable_name}})
- 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
- Parameters:
send_message- Send a user message to an existing conversation and receive the assistant's response- Parameters:
uuid(required) - UUID of the existing conversationmessage(required) - User message to send (max. 2000 characters)
- Returns: Assistant response message and any function calls executed during the response
- Note: Widget conversations cost $0.01 per user message; test conversations are free
- Parameters:
Campaign Tools
list_campaigns- List all campaigns from the Famulor account- Parameters: None
- Returns: Array of all campaigns with details including status, settings, and scheduling information
update_campaign_status- Start or stop a campaign in the Famulor system- Parameters:
campaign_id(required) - The ID of the campaign to updateaction(required) - The action to perform: 'start' or 'stop'
- Returns: Success message and updated campaign status
- Note: Starting a campaign requires sufficient leads and balance. Stopping a campaign will cancel ongoing calls.
- Parameters:
Lead Tools
list_leads- List all leads for the authenticated user (paginated)- Parameters:
page(optional) - Page number (default: 1)per_page(optional) - Number of leads per page (default: 15)
- Returns: Paginated response with
dataarray containing leads and pagination metadata - Parameters: None
- Returns: Array of all leads with details including phone number, status, variables, campaign information, and secondary contacts
- Parameters:
create_lead- Create a new lead in the Famulor system- Parameters:
phone_number(required) - The phone number in E.164 formatcampaign_id(required) - The ID of the campaignvariables(optional) - Array of variables to be passed to the leadallow_dupplicate(optional) - Whether duplicate leads are allowed in a campaign
- Returns: Created lead information with ID
- Note: Use
get_assistantsto get assistant information and variables that can be used when creating leads
- Parameters:
update_lead- Update an existing lead in your campaigns- Parameters:
id(required) - The ID of the lead to updatecampaign_id(optional) - The ID of the campaign to assign the lead tophone_number(optional) - The phone number (automatically formatted to E.164)status(optional) - The status: 'created', 'completed', or 'reached-max-retries'variables(optional) - Custom variables to be merged with existing lead variables
- Returns: Success message confirming the lead was updated
- Parameters:
SMS Tools
send_sms- Send an SMS message via your phone number- Parameters:
from(required) - The ID of your phone number to send the SMS from (must be SMS-capable)to(required) - The recipient's phone number in international format (e.g., "+4915123456789")body(required) - The SMS message content (max. 300 characters)
- Returns: Success message and SMS data including SMS ID, segments, cost, and status
- Note:
- 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 calculated per segment
- Long messages may be split into multiple segments, increasing costs
- Parameters:
Mid-Call Tools
list_mid_call_tools- List all mid-call tools that allow AI assistants to interact with external APIs during calls- Parameters: None
- Returns: Array of all mid-call tools with details including name, description, endpoint, method, timeout, headers, and schema
get_mid_call_tool- Get detailed information about a specific mid-call tool- Parameters:
id(required) - The unique ID of the mid-call tool
- Returns: Complete tool information including configuration and schema
- Parameters:
update_mid_call_tool- Update an existing mid-call tool- Parameters:
id(required) - The unique ID of the tool to updatename(optional) - Tool name (lowercase letters and underscores only)description(optional) - Detailed explanation of when and how the AI should use this toolendpoint(optional) - Valid URL of the API endpoint to callmethod(optional) - HTTP method: GET, POST, PUT, PATCH, or DELETEtimeout(optional) - Request timeout in seconds (1-30)headers(optional) - HTTP headers to send with the requestschema(optional) - Parameter schema that the AI will extract and send
- Returns: Success message and updated tool data
- Parameters:
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
Troubleshooting
Server Not Found
- Verify the build was successful:
npm run build - Check that
dist/index.jsexists - Verify the path in
mcp.jsonis correct and absolute - On Windows, ensure you're using forward slashes or properly escaped backslashes
API Key Error
- Make sure the API key is set in
mcp.jsonor as an environment variable - Verify the API key is valid at Famulor API Keys
- Check that the API key hasn't expired
MCP Server Not Recognized
- Check the JSON syntax in your MCP config file (use a JSON validator)
- Ensure the path to
dist/index.jsis absolute - Restart your MCP client completely (ChatGPT Desktop, Claude Desktop, etc.)
- Check your client's logs for error messages
Node.js Version Issues
- Verify Node.js version:
node --version(must be >= 20.0.0) - Update Node.js if needed: Download Node.js
About MCP
This is a Model Context Protocol (MCP) Server that provides 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 to 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 other MCP applications) 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
- 🌐 Online MCP Server: https://mcp.famulor.io
- Famulor Voice Agent Homepage
- Famulor Voice Agent Platform
- Famulor API Documentation
- MCP Protocol Documentation
- ChatGPT Desktop App
- Claude Desktop App
- GitHub Repository
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
Proprietary License - Use allowed for Famulor users only
This software may be used, copied, and modified only if you are using the Famulor Voice Agent Platform. See LICENSE file for full details.