mcpField
D
DialMCP

DialMCP

远程服务
dialmcp.com通信协作113 周前更新

关于 DialMCP

DialMCP 是面向需要拨打电话的 Agent 的托管 MCP 服务,可使用经过验证的美国或加拿大号码外呼。它提供通话进度、文字记录、录音和结构化结果;不支持远程连接的客户端可使用本地 stdio 连接器。

主要功能

  1. 01异步发起外呼
  2. 02查询状态、文字记录和录音
  3. 03列出并结束通话
  4. 04处理电话菜单和语音信箱
  5. 05执行身份披露与呼叫限制

适用场景

  1. 01按指定目标拨打美国或加拿大号码
  2. 02查看通话结果和对方承诺
  3. 03通过桥接器连接仅支持 stdio 的 MCP 客户端

MCP 相关

通过 `https://mcp.dialmcp.com/mcp` 上的托管 MCP 服务提供呼叫工具,使用 Streamable HTTP 和 OAuth。可选连接器将本地 stdio 客户端桥接至该端点。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.dialmcp.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmdialmcp-connector0.1.0

工具

详细介绍

DialMCP

DialMCP Connector

为你的 AI Agent 配备一部电话。
DialMCP 的开源连接器——这是一款托管式 MCP 服务,可让 AI Agent 使用你自己的已验证号码拨打真实电话。

CI MIT License MCP


这是什么

DialMCP 是部署在 https://mcp.dialmcp.com/mcp 的远程 MCP 服务。任何支持带 OAuth 的 Streamable HTTP 的客户端都可以直接连接——无需安装,也无需 API 密钥。这些客户端不需要此软件包。

此仓库的存在有两个原因:

  1. 为仅支持本地服务的客户端提供 stdio 桥接。 一些 MCP 客户端仍无法与 远程服务通信。dialmcp-connector 会启动一个本地 stdio 服务,将请求代理到托管端点,并为你处理 OAuth 浏览器授权流程。
  2. 以开放、规范的方式集中记录 DialMCP 集成文档——工具架构、客户端配置、 server.json 注册清单和安全模型都在一个可审计的位置。

托管电话服务本身为闭源。本连接器采用 MIT 许可证,不包含专有逻辑:它只是一个用于连接公共端点的轻量传输适配层。

快速开始

直接连接(首选)

如果你的客户端支持远程 MCP 服务,请跳过此软件包:

URL:        https://mcp.dialmcp.com/mcp
Transport:  Streamable HTTP
Auth:       OAuth 2.1 (sign in with your phone number)
Claude Code
claude mcp add --transport http dialmcp https://mcp.dialmcp.com/mcp
# add --scope user to enable it in every project
Codex — ~/.codex/config.toml
[mcp_servers.dialmcp]
url = "https://mcp.dialmcp.com/mcp"
claude.ai / Claude Desktop

设置 → 连接器 → 添加自定义连接器 → 粘贴 https://mcp.dialmcp.com/mcp。

Gamut

设置 → 连接器 → 添加 MCP 服务 → 粘贴 URL(HTTP / OAuth)→ 完成 SMS 验证。

首次连接时会打开浏览器窗口供你登录。使用 SMS 验证码验证你的电话号码——该号码将成为你的来电显示号码。

通过此连接器使用(仅支持 stdio 的客户端)
npx dialmcp-connector

或者在 MCP 客户端配置中使用:

{
  "mcpServers": {
    "dialmcp": {
      "command": "npx",
      "args": ["-y", "dialmcp-connector"]
    }
  }
}

可在 examples/ 中查看可直接粘贴使用的配置。

工具

工具描述
place_call使用明确说明的目标,向美国或加拿大号码拨打电话。立即返回通话 ID——通话以异步方式运行。
get_call获取通话的当前状态:状态、实时进度,以及通话结束后的转录文本、录音链接和结构化结果。在调用 place_call 后轮询此工具。
end_call立即挂断正在进行的通话。
list_calls列出已认证用户的近期通话及其状态和结果。

该 API 从设计上采用异步模式:place_call 会立即返回通话 ID,随后由 Agent 轮询 get_call,因此持续数分钟的通话不会触发客户端的工具超时。

通话结束后,get_call 会返回结构化结果——achieved、partially_achieved 或 not_achieved——其中包含摘要、对方作出的承诺、建议的后续操作、逐轮对话转录文本,以及指向音频录音的签名链接。

通话期间,服务会通过自动化电话菜单按键操作,在等待音乐播放时静默等待,并检测语音信箱——检测到后会挂断,而不会留言。

安全模型

所有防护措施都在服务端执行,而不是作为 Agent 可能自行说服自己不遵守的模型指令。

  • 披露身份。 每次通话开始时,都会先说明自己是 AI 助手、代表谁致电,以及通话会被录音,然后才提出请求。系统会独立核验每段通话记录是否合规,并记录结果。Agent 绝不会否认自己是 AI;如果接听者提出异议,通话便会结束。
  • 你的真实号码。 通话会显示你本人通过 SMS 验证的来电显示号码。不会伪造号码,接听者也可以回拨给你。
  • 速率限制。 同时最多 1 通 · 每小时 3 通 · 每天 10 通 · 同一目标每天最多 2 通 · 默认上限 6 分钟,硬性上限 10 分钟,由看门狗强制执行。系统从设计上杜绝了批量拨号。
  • 时间与地点。 仅允许在接听者当地时间 8:00–21:00 拨打(符合 TCPA 要求),且仅限美国和加拿大。对于未知时区,将采取保守处理。
  • 不可绕过的屏蔽列表。 绝不会拨打紧急服务号码(911)、高费率号码(900/976)和高欺诈风险号段。
  • 永久退订。 通话中会确认对方的谢绝来电请求;第二次独立的通话记录审核也会核实该请求。退订记录将永久保存,并在整个平台的所有用户之间统一生效。用户可通过 https://mcp.dialmcp.com/opt-out 自助退订,无需账户。
  • 客观审核。 独立审核员会在拨号前审核每通电话所述的目标,排查骚扰、欺骗或欺诈行为。Agent 只会陈述任务中提供的事实。
  • 禁止用途。 禁止用于电话营销、陌生拜访、自动拨号、调查、潜在客户开发、债务催收和政治宣传,详见条款。

完整详情:https://dialmcp.com/safety.html

要求

  • Node.js 18 或更高版本(仅在使用 stdio bridge 时需要)
  • 用于 SMS 验证的美国或加拿大手机号码
  • 用户必须年满 18 岁

链接

发布

每次发布都会同步到两个平台:npm(dialmcp-connector)和官方 MCP Registry(com.dialmcp/dialmcp)。两处发布均由 .github/workflows/release.yml 自动完成。

发布新版本
  1. 更新 package.json 和 server.json 两处的 version。如果版本不一致,npm run validate:manifest 会失败;CI 会在每次推送时运行此命令。
  2. 合并到 main。
  3. 手动运行 Release 工作流(Actions → Release → Run workflow,保持勾选 dry_run),并等待工作流成功完成。此步骤会打包 tarball,并根据实时注册表架构验证 server.json,但不会发布任何内容。
  4. 发布一个标记为 vX.Y.Z 的 GitHub Release。标签必须与 package.json 中的版本一致,否则工作流会在发布前停止。

第 3 步花两分钟就能完成,值得一做:注册表中的版本不可修改,也不能撤回发布。 有问题的版本只能由更高版本取代,或标记为弃用。

工作流的作用
Job运行条件步骤
publish发布 和 手动试运行类型检查 → 验证清单 → 构建 → 冒烟测试 → 检查标签与版本是否匹配 → npm publish --provenance → mcp-publisher validate
registry仅发布等待 npm 同步 → mcp-publisher login dns → mcp-publisher publish

--provenance 会附加一份签名证明,将 tarball 与构建它的提交和工作流运行关联起来,因此该 Job 需要 id-token: write。

注册表发布是一个独立 Job,原因有二。首先,它必须等待 npm:注册表会通过获取刚发布的版本并读取其 mcpName 字段来验证所有权;在 npm 完成同步之前,该请求会返回 404(此 Job 会重试约 2.5 分钟)。其次,它持有签名密钥;该密钥的作用范围是整个 com.dialmcp 命名空间,而非仅限此软件包,因此需要放在受保护的环境中。刻意不将该环境应用于 publish Job:其分支策略只允许 v* 标签,如果应用于整个 Job,就会直接阻止从 main 手动试运行。

一次性设置
项目位置用途
NPM_TOKEN仓库机密拥有 dialmcp-connector 发布权限的自动化令牌
MCP_REGISTRY_PRIVATE_KEYrelease 环境机密Ed25519 密钥,采用 base64 编码;用于验证注册表发布
release 环境部署分支策略 → 标签 → v*防止命名空间密钥用于未打标签的运行
v=MCPv1; k=ed25519; p=<public key>dialmcp.com 根域名上的 TXT 记录注册表据此验证域名所有权

TXT 记录应添加在裸域名上,类似 SPF 的设置方式——不会读取 _mcp. 选择器,且会导致难以诊断的签名错误。签名的时间戳窗口为 ±15 秒,因此运行器的时钟必须准确。

参与贡献

欢迎为连接器、文档和客户端配置提交问题和拉取请求。托管服务本身的 Bug 最好发送至 [email protected]。报告任何安全相关问题前,请先阅读 SECURITY.md。

许可证

MIT © Datawizz Inc. 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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