Callmcp

ai.callmcp由 callmcp.ai 发布v0.1.2更新于 Oct 24, 2026

One MCP tool contract for telephony — any call provider, hosted, local, or BYOK.

已验证STDIO仅桌面沟通与协作商业与电商

概览

AI 生成的概览

为助手提供统一的电话通信工具契约:通话、短信、录音、转写以及电话号码开通。

可以做什么
CallMCP 以一套 14 个工具、相同 schema 的契约覆盖呼出与呼入电话业务:发起和结束通话、发送短信、获取录音与转写,以及搜索、购买、配置和列出电话号码。同一契约可由不同后端提供(托管、本地或自带密钥),因此更换服务商只是配置变更,无需重写代码。工具按驱动能力开放:要么存在且可用,要么不出现在工具列表中。联系外部号码的呼出操作需要审批标识或匹配白名单。
适用场景
适合希望助手通过稳定工具接口拨打电话、发送短信或管理电话号码的场景,也适合需要在不改动代理代码的前提下更换通话后端的情况。需要助手处理通话录音、转写或号码开通的工作流同样适用。
运行要求
作为本地 Node.js 进程运行,通过 npx 从 npm 包 @callmcp/server 启动。配置来自 callmcp.config.json 文件,其路径由 CALLMCP_CONFIG 指定;若省略则完全通过环境变量配置。CALLMCP_DEFAULT_DRIVER 指定工具调用未指明驱动时使用的驱动。必须配置驱动,否则服务器会拒绝启动,模拟驱动仅在显式沙箱配置下可用。根据所选驱动,需要相应的服务商账号或密钥。
安装前请注意
号码开通类工具(搜索、购买、配置、列出)没有审批门槛,可自主花费真实资金,包括在驱动要求预付款时通过 x402 机器支付结算费用。呼出通话和短信需要审批标识或白名单匹配,备用审批路径使用一次性带外链接。通话录音与转写通过该服务器获取,需考虑同意与数据处理问题。服务商凭据通过配置或环境变量提供。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Callmcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

One MCP server. Any call provider. Fully local, fully hosted, or bring your own frontier model.

[License: MIT] [GitHub stars]

CallMCP is a single Model Context Protocol server that defines one tool contract — 14 tools, identical schemas, identical error shapes — for outbound/inbound telephony: calls, SMS, recordings, transcripts, and phone-number lifecycle. Point it at a hosted backend, a fully local backend, or a bring-your-own-key composed backend, and your agent code doesn't change. What changes is which tools are present (via capability-gated dynamic discovery), never the shape of a tool that's there.

The normative reference is SPEC.md. This README is the pitch; the spec is the contract.

npx -y @callmcp/server

Before connecting a real provider, run npx -y @callmcp/server doctor. For a safe local walkthrough, run npx -y @callmcp/server --sandbox. The server fails closed when no driver is configured; the mock driver is only available through explicit sandbox configuration.

See examples/ for ready-to-paste Claude Desktop / Claude Code configs for each of the three legs below.


Three structural claims

This isn't "a Twilio wrapper with a marketing page." Three things are actually built into the contract, not bolted on:

1. Provider-neutral, multi-backend contract

Every driver — hosted, local, or BYOK — implements the same 14 tools defined in SPEC.md. Driver-specific behavior lives exclusively inside a namespaced options.<driver_id> passthrough object. There is no make_call_twilio or make_call_kaicalls. A tool either exists for your configured driver (and works, fully, per spec) or it's absent from tools/list — never present-but-broken. Swapping your call backend is a config change, not a rewrite.

2. x402-funded autonomous provisioning to production

search_numbers, buy_number, configure_number, and list_numbers are never human-approval-gated — they don't contact a third party, they contact your own provider account. That includes settling cost via x402 machine payments when a driver requires prepayment (INSUFFICIENT_FUNDS embeds a full x402 challenge an agent can settle and retry). An agent can search for a number, pay for it, configure it, and go live — autonomously, in production, with real money — without a human clicking anything. This is a deliberate contrast with vendor MCPs whose autonomous/self-serve paths are trial- or sandbox-scoped only.

3. Human-in-the-loop outbound approval as designed consent architecture

make_call and send_sms — anything that contacts a phone number that isn't the calling agent's own infrastructure — structurally require a valid approval_id or a standing allowlist match before they act. This isn't a policy suggestion layered on top; it's enforced in the server core, so no driver implementation can bypass it. Primary path is MCP elicitation; the fallback for non-elicitation clients is a single-use out-of-band approval URL — the gate is designed to never silently block forever and never silently open. Read as a TCPA-consent posture: the contract makes "who approved contacting this number, and when" a first-class, auditable object (request_call_approval / list_approvals), not an assumption baked into application code you have to get right yourself.


CallMCP vs. single-vendor MCPs vs. DIY

CapabilityCallMCPVapi MCPTelnyx MCPAgentPhone MCPDIY (Twilio + your own glue)
Tool contractOne schema, 14 tools, portable across backendsSingle-vendor, Vapi onlySingle-vendor, Telnyx onlySingle-vendor, AgentPhone onlyNo contract — you write and maintain it
Swap call backend without rewriting agent codeYes — driver swap onlyNoNoNoNo
Self-hostable / fully local optionYes (Dograh driver)(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)Yes, but you own the entire stack
Bring your own frontier model as the call's "brain"Yes (BYOK driver: any transport + any LLM)(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)Yes, fully manual integration
Autonomous, funded, production-scoped number provisioning (x402)Yes — search_numbers/buy_number/configure_number ungated, x402-payable(unverified, recheck before publishing)Public self-serve docs read as trial-scoped autonomy, not funded production autonomy (unverified, recheck before publishing)(unverified, recheck before publishing)No — manual console purchase, manual compliance
Outbound approval / consent gate structural in the schemaYes — make_call/send_sms require approval_id or allowlist match, enforced server-side(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)No — you build and maintain your own gate
Standalone SMS (not agent-mediated only)Capability-gated per driver, honestly reported — never claimed where it's actually agent-mediated(unverified, recheck before publishing)Yes, native(unverified, recheck before publishing)Yes, native Twilio API
Call recordingCapability-gated per driver, honestly reported(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)Yes, native Twilio API
Real-time transcript streamingCapability-gated per driver, subscribable resource when supported(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)DIY — you build the capture/assembly layer
Source availabilityMIT-licensed server + Apache-2.0 spec, public monorepo(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)N/A — it's your own code
Markup over underlying carrier costZero in the OSS server — it routes at cost; KaiCalls hosted tier is an optional convenience layer, not a requirement(unverified, recheck before publishing)(unverified, recheck before publishing)(unverified, recheck before publishing)Zero markup, 100% of integration cost is yours

Every "(unverified, recheck before publishing)" cell is a placeholder, not a claim — we do not put a number or a fact about a competitor's product in this table without a citation behind it. If you're reading this before that recheck has happened, treat those cells as unknown, not as "no."


Who builds this, and what's actually free

CallMCP is built and maintained by CallMCP / KaiCalls. Full transparency, because hiding this costs more credibility than stating it:

  • This OSS server is not a loss-leader funnel with the real functionality locked behind a paywall. It routes to any configured driver — hosted, local, or BYOK — with no markup and no artificial capability gating. A self-hosted Dograh driver or a BYOK Twilio+LLM driver gets the exact same 14-tool contract as the KaiCalls driver.
  • KaiCalls is the hosted default — the path of least resistance if you want a call backend running in minutes with nothing to self-host. It is not the only supported path, and the spec and conformance suite exist precisely so that claim stays true as the driver ecosystem grows.
  • The driver interface is public and the conformance suite runs in CI. Any driver — including ones we didn't write — can claim conformance, and community PRs are held to the same bar KaiCalls' own driver is held to (see SPEC.md §6).

If any of the above stops being true, that's a bug in this README, not a hidden asterisk — open an issue.


Driver capability matrix

Capability is expressed by presence, not by runtime errors (see SPEC.md §2.2). This table mirrors the spec's degradation appendix (SPEC.md §7) — the honest state of the wider backend landscape at spec-writing time (2026-07-09), not a ceiling on what CallMCP itself can do.

Launch drivers (this repo)

Capabilitykaicalls (hosted)dograh (local)twilio_openai (BYOK)
make_call / end_call (hangup)Yes — hangup via Vapi controlUrl, treated as call-scoped statemake_call yes; no external hangup endpoint (supports_hangup: false)Yes, native Twilio call control
search_numbers / buy_number / configure_numberYesNo purchase flow — BYO carrier account (supports_number_purchase: false)Yes, native Twilio number API
send_smsCapability-gated on the underlying Vapi-class backend; not claimed unless a real standalone send path existsNo SMS capabilityYes, native Twilio SMS
get_recordingYes, once wiredCapability-dependent on the local stackYes, native Twilio recording
get_transcript / realtime streamingYesYes, baseline (Dograh's GET /{workflow_id}/runs/{run_id} returns transcript_url — the one fully source-verified transcript path in the wider landscape)DIY assembly from realtime session events; supports_realtime_transcription only claimed once that assembly is genuinely live

Known gaps across the wider backend landscape (context for driver authors)

Tool / capabilityKnown gaps at spec-writing time
buy_numberAbsent on Synthflow (UI-only, no API), ElevenLabs (BYO-number only), Dograh (BYO carrier), Phonely (not independently drivable)
end_callAbsent on Retell and Synthflow (no hangup endpoint); Dograh has no external hangup endpoint; Vapi supports it only via a per-call ephemeral controlUrl, not a stable REST endpoint
send_smsThe most degraded tool in the whole contract. Only Telnyx, Bland, Autocalls, and Thoughtly expose real standalone SMS. Vapi/Retell/Synthflow are agent-mediated only (not a stable API surface, never claimed as supports_sms: true). Millis, Vogent, and Dograh have no SMS capability at all. AgentLine's own public materials contradict themselves on this (SKILL.md forbids SMS while its API spec defines POST /v1/messages) — cited as unresolved upstream, not resolved on AgentLine's behalf
get_recordingAbsent on AgentLine entirely; LiveKit-based backends require standing up a separate Egress service before it's real
get_transcript (realtime)LiveKit/Pipecat-local stacks require DIY event capture; Bolna's transcript endpoint is unconfirmed; Telnyx's exact transcript route is unverified

A driver claiming a capability it can't demonstrate against the conformance suite fails CI (see SPEC.md §6.2) — this table is a snapshot, not a promise about backends CallMCP doesn't control, and any driver author whose backend's real capability differs from this snapshot updates their own manifest, not this README.


Repo shape

callmcp/callmcp├── SPEC.md                   canonical tool contract (start here)├── packages/│   ├── server/                @callmcp/server — MCP core: transports, driver│   │                          registry, config resolution, approval state│   │                          machine, elicitation + fallback-URL flow,│   │                          dynamic tools/list│   ├── driver-interface/      @callmcp/driver-interface — TS interface,│   │                          capability manifest types, conformance test harness│   ├── driver-kaicalls/       hosted default driver│   ├── driver-dograh/         local/self-hosted driver│   └── driver-byok/           bring-your-own transport + bring-your-own LLM├── examples/                  Claude Desktop / Claude Code config blocks per leg├── server.json                official MCP Registry manifest — published as│                              ai.callmcp/server (registry.modelcontextprotocol.io)├── smithery.yaml               Smithery container deployment config└── Dockerfile                  self-host / Smithery container build

Packages

PackagenpmWhat it is
@callmcp/servernpmThe MCP server core — start here if you're running CallMCP.
@callmcp/driver-interfacenpmThe Driver contract, capability manifest types, conformance harness. Start here if you're writing a new driver.
@callmcp/driver-kaicallsnpmHosted default — KaiCalls' production telephony backend.
@callmcp/driver-dograhnpmFully local — wraps a self-hosted Dograh instance.
@callmcp/driver-byoknpmBring-your-own-key — Twilio transport + OpenAI Realtime (or wire-compatible) brain.

Contributing a driver

Implement the interface in @callmcp/driver-interface, ship a callmcp.manifest.json per SPEC.md §6.1, and run the conformance suite. A capability your manifest doesn't claim true simply results in that tool being absent from tools/list — that's the whole mechanism, not a workaround.

License

MIT for this repository's code. SPEC.md is released under Apache-2.0 as documented in its own header, specifically so anyone can implement a conformant driver without asking permission.

来源:README.md,提交 613339b

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分