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는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
CALLMCP_CONFIG envCALLMCP_DEFAULT_DRIVER env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 도메인 callmcp.ai 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.2)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Parano1d node
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ 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.
Local Parano1d node over MCP. Read-only by default; sending needs the opt-in, capped wallet mode.
제작자의 저장소에서 쓰인 그대로 가져왔어요. 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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요