1. Conduid
  2. Cloud
  3. MCP
MCP server · Cloud

MCP

The AI that answers the phone.

67Good

Scored 5 hours ago · breakdown

About MCP

MCP is an MCP server published by fonoster in the Cloud category: the AI that answers the phone.

The repository has 8.1K stars and 559 forks, with the last commit 5 hours ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

Claude Code
claude mcp add mcp-865b -- npx -y @fonoster/mcp
npx
npx -y @fonoster/mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about MCP

Powered by Claude · Grounded in docs

I know everything about MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 4 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.

2 checks have not been run yet.

Releases

v0.22.14Release v0.22.14 · 11 Sep 2026v0.22.14 - 2026-09-11 🐛 Bugfixes Stop an unhandled rejection from crashing the process on hangup 4feec84
v0.22.13Release v0.22.13 · 11 Sep 2026v0.22.13 - 2026-09-10 🐛 Bugfixes Resolve playStream only when playback has actually finished 0b82f4e
v0.22.10Release v0.22.10 · 31 Aug 2026v0.22.10 - 2026-08-31 🐛 Bugfixes Settle a verb when the session ends instead of hanging forever 9efe447
v0.22.7Release v0.22.7 · 26 Aug 2026v0.22.7 - 2026-08-26 🐛 Bugfixes Store and return ApiKey timestamps as epoch seconds d1f1f68
v0.22.6Release v0.22.6 · 24 Aug 2026v0.22.6 - 2026-08-24 🐛 Bugfixes Speed up GetCall by tagging call ref in InfluxDB 9eb77f8

README

[!WARNING] Major upgrades underway. We're moving fast, so expect breaking changes and some instability for a while. We're pausing contributions for now, but bug reports are welcome: report a bug.

The AI that answers the phone.

Fonoster is an open-source platform for building, testing, and running voice agents on real phone lines. Use Fonoster Cloud, or run it on your own servers.

build release Discord GitHub Twitter Follow

Features

The most notable features of Fonoster are:

  • Multitenancy
  • Easy deployment of PBX functionalities
  • Programmable Voice Applications
  • NodeJS SDK
  • Support for Amazon Simple Storage Service (S3)
  • Secure API endpoints with Let's Encrypt
  • Authentication with OAuth2
  • Authentication with JWT
  • Role-Based Access Control (RBAC)
  • Plugins-based Command-line Tool
  • Support for Google Speech APIs

Code Examples

Autopilot

With Autopilot, your agent is a YAML file. Pick the speech-to-text, the voice, and the language model, then write the prompt:

# agent.yaml
name: front-desk
type: AUTOPILOT
speechToText:
  productRef: stt.deepgram
  config:
    model: nova-3
    languageCode: multi
textToSpeech:
  productRef: tts.deepgram
  config:
    voice: aura-asteria-en
intelligence:
  productRef: llm.openai
  config:
    conversationSettings:
      firstMessage: Hi! Thanks for calling. How can I help?
      systemPrompt: You book appointments for a dental clinic. Keep your answers short.
      goodbyeMessage: Thanks for calling. Goodbye!
      systemErrorMessage: Sorry, I'm having trouble right now. Please call again later.
      idleOptions:
        message: Are you still there?
    languageModel:
      provider: openai
      model: gpt-4o
      temperature: 0.7
      maxTokens: 250

Deploy it with the command-line tool:

# Log in once with an API key from your workspace
npx @fonoster/ctl workspaces:login

# Create the agent
npx @fonoster/ctl applications:create -f agent.yaml

Then point a phone number at the new application (in the dashboard, or with npx @fonoster/ctl sipnet:numbers:create) and give it a call. Autopilot also supports tools, a knowledge base, and call transfers. See the Autopilot docs.

Voice Applications

For full control over the call, write a Voice Application instead. Fonoster opens one signed WebSocket session to your app for every call (session protocol); the SDKs for TypeScript (@fonoster/voice) and Python (fonoster-voice) wrap it. A session can:

  • say - Speak text (or a stream of model tokens) and report what the caller heard
  • gather - Wait for speech or keypresses
  • play / playDtmf - Play a media file or DTMF tones
  • transfer - Cold, warm or SIP REFER transfer to a number or SIP URI
  • hold / resume, handoff, hangup
  • audio - Raw call audio in and out, for your own speech stack
  • Events: turns, partial transcripts, keypresses

Voice Application Example:

const { VoiceServer } = require("@fonoster/voice");

// The gateway signs every connection; set APP_SIGNING_SECRET to the app's signing secret.
new VoiceServer({ port: 3000 }).listen(async (session) => {
  await session.say("Hi there! What's your name?");

  const { speech: name } = await session.gather();

  await session.say("Nice to meet you " + name + "!");

  await session.say("Please enter your 4 digit pin.");

  const { digits } = await session.gather({
    maxDigits: 4,
    finishOnKey: "#"
  });

  await session.say("Your pin is " + digits);

  await session.hangup();
});

// Your app lives at ws://127.0.0.1:3000
// and you can publish it to the Internet with:
// ngrok http 3000

Coming from the gRPC SDK? See What changed.

Making calls

Everything in Fonoster is an API first, and initiating a call is no exception. You can use the SDK to start a call with a few lines of code.

Example of originating a call with the SDK:

const SDK = require("@fonoster/sdk");

async function main(request) {
  const apiKey = "your-api-key";
  const apiSecret = "your-api-secret"
  const accessKeyId = "WO00000000000000000000000000000000";

  const client = new SDK.Client({ accessKeyId });
  await client.loginWithApiKey(apiKey, apiSecret);

  const calls = new SDK.Calls(client);
  const response = await calls.createCall(request);

  console.log(response); // successful response
}

const request = {
  from: "+18287854037",
  to: "+17853178070",
  appRef: "3e61ecb7-a1b6-4a93-84c3-4f1979165bca",
  // Optional metadata to be sent to the Voice Application
  metadata: {
    name: "John Doe",
    message: "Please call me back."
  }
};

main(request).catch(console.error);

Getting Started

To get started with Fonoster, use the following resources:

Guides in this repository

Give a Star! ⭐

Please give it a star if you like this project or plan to use it. Thanks 🙏

Bugs and Feedback

For bugs, questions, and discussions, please use the Github Issues

Contributing

For contributing, please see the following links:

Sponsors

We're glad to be supported by respected companies and individuals from several industries.

Find all our supporters here

Become a Github Sponsor

Authors

License

Copyright (C) 2026 by Fonoster Inc. MIT License (see LICENSE for details).

README fetched from the repository 4 hours ago. The original is authoritative.

Questions

About MCP

How do I install MCP?

Run claude mcp add mcp-865b -- npx -y @fonoster/mcp, then add the server to your MCP client's configuration.

Is MCP safe to use with an AI agent?

Its trust score is 67 out of 100 (good). It passes 4 of the 4 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is MCP still maintained?

Yes — the latest release is v0.22.14 (11 Sep 2026), and the last commit was 5 hours ago. The repository has 8.1K stars and 36 open issues.