mcpField
C
callmcp

callmcp

本地服务
github.com/CallMCP通信协作116 周前更新

关于 callmcp

callmcp 是面向呼入和呼出的 MCP 服务,为托管、本地及自带密钥后端定义统一的 14 个工具契约。它按后端能力动态发现工具,并在服务端要求呼叫和短信获得批准。

主要功能

  1. 01统一的 14 个电话工具契约
  2. 02支持托管、本地和 BYOK 后端
  3. 03按能力动态发现工具
  4. 04呼出电话和短信需经批准
  5. 05通过 x402 付款配置电话号码
  6. 06按后端支持提供录音和转录工具

适用场景

  1. 01切换电话后端而无需修改 Agent 代码
  2. 02通过托管或自托管系统发起通话
  3. 03联系电话号码前要求获得批准
  4. 04由 Agent 申请并配置电话号码

MCP 相关

该服务向 MCP 客户端提供与供应商无关的电话工具。可用工具会根据已配置驱动程序的能力动态发现。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ai-callmcp-server": {
"command": "npx",
"args": [
"-y",
"@callmcp/server"
],
"env": {
"CALLMCP_CONFIG": "<CALLMCP_CONFIG>",
"CALLMCP_DEFAULT_DRIVER": "<CALLMCP_DEFAULT_DRIVER>"
}
}
}
}
启动命令npx -y @callmcp/server
需要配置的环境变量
CALLMCP_CONFIGPath to a callmcp.config.json file. Omit to configure entirely via env vars.
CALLMCP_DEFAULT_DRIVERdriver_id routed to when a tool call omits `driver` (e.g. kaicalls, dograh, twilio_openai).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@callmcp/server0.1.2

工具

14

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

一个 MCP 服务。支持任意通话提供商。完全本地、完全托管,或接入你自己的前沿模型。

许可证:MIT GitHub 星标数

CallMCP 是一个 Model Context Protocol 服务,为外呼/来电电话服务定义了一套工具契约——共 14 个工具,拥有相同的架构和错误格式,涵盖通话、短信、录音、转录文本和电话号码生命周期。将它连接到托管后端、完全本地的后端,或由你自带密钥的组合式后端,你的 Agent 代码无需更改。变化的只是可用的工具(通过基于能力的动态发现),而非已提供工具的形式。

规范性参考文档是 SPEC.md。本 README 介绍项目;规范才是契约。

npx -y @callmcp/server

连接真实提供商之前,请运行 npx -y @callmcp/server doctor。 如需安全的本地演示,请运行 npx -y @callmcp/server --sandbox。 未配置驱动程序时,服务会采取故障关闭机制;模拟驱动程序仅在显式配置沙盒后才可用。

参见 examples/,其中提供了适用于下文三种模式的 Claude Desktop / Claude Code 配置,可直接粘贴使用。


三项结构性主张

这不是“带营销页面的 Twilio 封装”。以下三项特性都内置于契约中,而非事后拼装:

1. 提供商中立的多后端契约

每个驱动程序——托管、本地或 BYOK——都实现 SPEC.md 中定义的同一套 14 个工具。驱动程序特有的行为仅通过命名空间 options.<driver_id> 透传对象实现。不存在 make_call_twilio 或 make_call_kaicalls。对于你配置的驱动程序,某个工具要么存在且完全符合规范地正常工作,要么就不会出现在 tools/list 中——绝不会出现存在却无法工作的情况。切换通话后端只需更改配置,无需重写代码。

2. 通过 x402 资助自主开通并投入生产

search_numbers、buy_number、configure_number 和 list_numbers 从不要求人工审批——它们联系的不是第三方,而是你自己的提供商账户。这也包括在驱动程序要求预付款时通过 x402 机器支付结算费用(INSUFFICIENT_FUNDS 会附带完整的 x402 挑战,Agent 可完成结算后重试)。Agent 可以自主搜索号码、付款、配置号码并上线——在生产环境中使用真实资金,全程无需人工点击。与某些厂商的 MCP 不同,这里有意提供了这一能力;那些 MCP 的自主/自助服务路径仅限试用或沙盒环境。

3. 将人工参与的外呼审批设计为同意架构

make_call 和 send_sms——任何会联系非通话 Agent 自有基础设施上的电话号码的操作——在执行前都必须具备有效的 approval_id,或匹配常设允许列表。这不是叠加在上层的策略建议,而是由服务核心强制执行,因此任何驱动程序实现都无法绕过。首选路径是 MCP 询问;对于不支持询问的客户端,备用方案是一次性带外审批 URL——该机制旨在既不会悄无声息地永久阻塞,也不会悄无声息地放行。可将其视为一种符合 TCPA 同意要求的设计:契约将“谁在何时批准联系此号码”设为一等、可审计的对象(request_call_approval / list_approvals),而不是假定应用代码会自行正确处理。


CallMCP 与单一供应商 MCP 和 DIY 方案的比较

能力CallMCPVapi MCPTelnyx MCPAgentPhone MCPDIY(Twilio + 自己编写的胶水代码)
工具契约一个架构、14 个工具,可跨后端移植单一供应商,仅支持 Vapi单一供应商,仅支持 Telnyx单一供应商,仅支持 AgentPhone没有契约——由你编写并维护
无需重写 Agent 代码即可更换通话后端可以——只需更换驱动不可以不可以不可以不可以
可自托管/完全本地运行选项可以(Dograh 驱动)(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)可以,但整个技术栈都由你负责
使用你自己的前沿模型作为通话的“核心”可以(BYOK 驱动:任意传输方式 + 任意大模型)(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)可以,但需要完全手动集成
自主、已注资、面向生产环境的号码配置(x402)可以——search_numbers/buy_number/configure_number 无门槛,支持 x402 付款(未核实,发布前重新检查)公开的自助服务文档显示的是试用范围内的自主配置,而非已注资的生产环境自主配置(未核实,发布前重新检查)(未核实,发布前重新检查)不可以——需手动在控制台购买、手动完成合规流程
架构中是否内置外呼审批/同意门槛是——make_call/send_sms 要求提供 approval_id 或匹配允许列表,由服务端强制执行(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)不可以——需自行构建并维护门槛
独立短信(不局限于由 Agent 代发)按驱动提供的能力设门槛,如实报告——实际由 Agent 代发时绝不声称支持独立短信(未核实,发布前重新检查)支持,原生功能(未核实,发布前重新检查)支持,Twilio 原生 API
通话录音按驱动提供的能力设门槛,如实报告(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)支持,Twilio 原生 API
实时转录流按驱动提供的能力设门槛;支持时可订阅资源(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)DIY——需自行构建采集/组装层
源码可用性MIT 许可的服务 + Apache-2.0 规范,公开的单体仓库(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)不适用——这是你自己的代码
在底层运营商成本上的加价开源服务不加价——按成本路由;KaiCalls 托管层是可选的便利服务,并非必需(未核实,发布前重新检查)(未核实,发布前重新检查)(未核实,发布前重新检查)不加价,集成成本全部由你承担

每个“(未核实,发布前重新检查)”单元格都是占位内容,并非断言——没有可靠引文支持时,我们不会在此表中填写关于竞品产品的数字或事实。如果你在重新检查完成前阅读本文,请将这些单元格视为未知,而不是“否”。


谁在构建它,哪些功能真正免费

CallMCP 由 CallMCP / KaiCalls 构建并维护。我们完全透明地说明这一点,因为隐瞒这件事比直接说明更损害信誉:

  • 这个开源服务器不是用来引流的诱饵,真正的功能也没有被锁在付费墙后。 它会路由到任何已配置的驱动程序——托管、本地或 BYOK——不加价,也不会人为限制功能。自托管的 Dograh 驱动程序或 BYOK Twilio+LLM 驱动程序,获得的 14-tool 契约与 KaiCalls 驱动程序完全相同。
  • KaiCalls 是默认托管选项——如果你想在几分钟内运行通话后端,且无需自托管任何内容,这是阻力最小的路径。它并非唯一受支持的路径;我们制定规范和一致性测试套件,正是为了确保随着驱动程序生态的发展,这一说法始终成立。
  • 驱动程序接口是公开的,一致性测试套件会在 CI 中运行。 任何驱动程序——包括并非由我们编写的驱动程序——都可以声明符合规范;社区 PR 也必须达到与 KaiCalls 自有驱动程序相同的标准(参见 SPEC.md §6)。

如果上述任何一点不再成立,那就是这份 README 的问题,而不是隐藏的附加条件——请提交 issue。


驱动程序功能矩阵

功能通过是否存在来表示,而不是通过运行时错误来表示(参见 SPEC.md §2.2)。此表与规范中的降级附录一致(SPEC.md §7)——它反映的是编写规范时(2026-07-09)更广泛的后端生态的实际情况,并非 CallMCP 自身能力的上限。

首发驱动程序(本仓库)
功能kaicalls(托管)dograh(本地)twilio_openai(BYOK)
make_call / end_call(挂断)是——通过 Vapi controlUrl 挂断,并作为通话范围内的状态处理make_call 支持;没有外部挂断端点(supports_hangup: false)是,使用 Twilio 原生通话控制
search_numbers / buy_number / configure_number是不支持号码购买流程——需自带运营商账户(supports_number_purchase: false)是,使用 Twilio 原生号码 API
send_sms取决于底层 Vapi 类后端的能力;只有在存在真正独立的发送路径时才会声明支持不支持 SMS 功能是,使用 Twilio 原生 SMS
get_recording是,接入后即可使用取决于本地技术栈的能力是,使用 Twilio 原生录音
get_transcript / 实时流式传输是是,基础支持(Dograh 的 GET /{workflow_id}/runs/{run_id} 会返回 transcript_url——这是更广泛生态中唯一经过完整源码验证的转录路径)通过实时会话事件自行组装;只有在该组装流程确实已运行时,才会声明支持 supports_realtime_transcription
更广泛后端生态中的已知差距(供驱动作者参考)
工具 / 能力编写规范时已知的差距
buy_numberSynthflow(仅提供 UI,没有 API)、ElevenLabs(仅支持自带号码)和 Dograh(需自带运营商)不提供;Phonely 无法独立驱动
end_callRetell 和 Synthflow 不提供(没有挂断端点);Dograh 没有外部挂断端点;Vapi 仅通过每次通话临时生成的 controlUrl 支持,不提供稳定的 REST 端点
send_sms整个契约中退化最严重的工具。只有 Telnyx、Bland、Autocalls 和 Thoughtly 提供真正独立的 SMS。Vapi、Retell 和 Synthflow 只能通过 Agent 发送(不是稳定的 API 接口,绝不会声称 supports_sms: true)。Millis、Vogent 和 Dograh 完全不具备 SMS 能力。AgentLine 自己的公开资料对此说法相互矛盾(SKILL.md 禁止发送 SMS,但其 API 规范定义了 POST /v1/messages)——此问题被列为上游尚未解决的问题,不代表已替 AgentLine 作出结论
get_recordingAgentLine 完全不提供;基于 LiveKit 的后端需要先部署独立的 Egress 服务才能真正提供此能力
get_transcript(实时)LiveKit / Pipecat 本地栈需要自行捕获事件;Bolna 的转录文本端点尚未确认;Telnyx 的确切转录文本路由尚未验证

若驱动声称具备某项能力,却无法通过一致性测试套件验证,将无法通过 CI(参见 SPEC.md §6.2)——此表只是当前快照,并非对 CallMCP 无法控制的后端作出的承诺。任何后端实际能力与此快照不符的驱动作者,都应更新自己的清单,而不是本 README。


仓库结构

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

包

包npm说明
@callmcp/servernpmMCP 服务核心——运行 CallMCP 时从这里开始。
@callmcp/driver-interfacenpmDriver 契约、能力清单类型、一致性测试框架。编写新驱动时从这里开始。
@callmcp/driver-kaicallsnpm托管默认选项——KaiCalls 的生产级电话后端。
@callmcp/driver-dograhnpm完全本地化——封装自托管的 Dograh 实例。
@callmcp/driver-byoknpm自带密钥——Twilio 传输层 + OpenAI Realtime(或兼容线路的)大脑。

贡献驱动

实现 @callmcp/driver-interface 中的接口,按照 SPEC.md §6.1 提供 callmcp.manifest.json,并运行一致性测试套件。若清单未将某项能力声明为 true,对应工具就不会出现在 tools/list 中——这就是整套机制,而不是变通方案。

许可证

本仓库代码采用 MIT 许可证。SPEC.md 按其文件头中的说明采用 Apache-2.0 许可证发布,特别是为了让任何人都能在无需许可的情况下实现符合规范的驱动。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。