Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
One MCP tool contract for telephony — any call provider, hosted, local, or BYOK.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
CALLMCP_CONFIG, CALLMCP_DEFAULT_DRIVER你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"server": {
"command": "npx",
"args": [
"-y",
"@callmcp/server"
],
"env": {
"CALLMCP_CONFIG": "your-value",
"CALLMCP_DEFAULT_DRIVER": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add server --env CALLMCP_CONFIG=your-value --env CALLMCP_DEFAULT_DRIVER=your-value -- npx -y @callmcp/server运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"server": {
"command": "npx",
"args": [
"-y",
"@callmcp/server"
],
"env": {
"CALLMCP_CONFIG": "your-value",
"CALLMCP_DEFAULT_DRIVER": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@callmcp/server"
],
"env": {
"CALLMCP_CONFIG": "your-value",
"CALLMCP_DEFAULT_DRIVER": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
CALLMCP_CONFIG envCALLMCP_DEFAULT_DRIVER env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 callmcp.ai 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.1.2)于4个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, debuff
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Let coding agents play, test and tune your 2D web game: live state, explained errors, replays, fuzz.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
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.
This isn't "a Twilio wrapper with a marketing page." Three things are actually built into the contract, not bolted on:
Every driver — hosted, local, or BYOK — implements the same 14 tools defined in SPEC.md. Driver-specific behavior lives exclusively inside a namespaced options. 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.
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.
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.
| Capability | CallMCP | Vapi MCP | Telnyx MCP | AgentPhone MCP | DIY (Twilio + your own glue) |
|---|---|---|---|---|---|
| Tool contract | One schema, 14 tools, portable across backends | Single-vendor, Vapi only | Single-vendor, Telnyx only | Single-vendor, AgentPhone only | No contract — you write and maintain it |
| Swap call backend without rewriting agent code | Yes — driver swap only | No | No | No | No |
| Self-hostable / fully local option | Yes (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 schema | Yes — 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 recording | Capability-gated per driver, honestly reported | (unverified, recheck before publishing) | (unverified, recheck before publishing) | (unverified, recheck before publishing) | Yes, native Twilio API |
| Real-time transcript streaming | Capability-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 availability | MIT-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 cost | Zero 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."
CallMCP is built and maintained by CallMCP / KaiCalls. Full transparency, because hiding this costs more credibility than stating it:
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.
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.
| Capability | kaicalls (hosted) | dograh (local) | twilio_openai (BYOK) |
|---|---|---|---|
make_call / end_call (hangup) | Yes — hangup via Vapi controlUrl, treated as call-scoped state | make_call yes; no external hangup endpoint (supports_hangup: false) | Yes, native Twilio call control |
search_numbers / buy_number / configure_number | Yes | No purchase flow — BYO carrier account (supports_number_purchase: false) | Yes, native Twilio number API |
send_sms | Capability-gated on the underlying Vapi-class backend; not claimed unless a real standalone send path exists | No SMS capability | Yes, native Twilio SMS |
get_recording | Yes, once wired | Capability-dependent on the local stack | Yes, native Twilio recording |
get_transcript / realtime streaming | Yes | Yes, 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 |
| Tool / capability | Known gaps at spec-writing time |
|---|---|
buy_number | Absent on Synthflow (UI-only, no API), ElevenLabs (BYO-number only), Dograh (BYO carrier), Phonely (not independently drivable) |
end_call | Absent 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_sms | The 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_recording | Absent 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.
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 dr
只显示了开头部分;其余内容请在仓库中阅读