DialMCP Connector
Дайте вашему AI‑агенту телефон.
Open-source коннектор для [DialMCP] — размещённого MCP-сервера, который позволяет AI‑агентам осуществлять реальные телефонные звонки с вашего собственного подтверждённого номера.
Что это такое
DialMCP — удалённый MCP-сервер по адресу https://mcp.dialmcp.com/mcp. Любой клиент, который поддерживает Streamable HTTP с OAuth, может подключиться напрямую — никаких установок и API-ключей. Этот пакет не нужен таким клиентам.
У этого репозитория две цели:
-
Стандартный сквозной мост для клиентов, поддерживающих только локальные серверы. Некоторые MCP‑клиенты всё ещё не могут общаться с удалёнными серверами.
dialmcp-connectorзапускает локальный stdio‑сервер, который проксирует к размещённой точке доступа и сам обрабатывает OAuth‑браузерный поток для вас. -
Открытая, каноническая документация по интеграции 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
Settings → Connectors → Add custom connector → paste https://mcp.dialmcp.com/mcp.
Gamut
Settings → Connectors → Add MCP server → paste the URL (HTTP / OAuth) → complete SMS verification.
При первом подключении откроется окно браузера для входа. Подтвердите ваш номер телефона с помощью SMS‑кода — этот номер станет вашим caller ID.
Через этот коннектор (клиенты, работающие только через stdio)
npx dialmcp-connector
Или в конфигурации MCP‑клиента:
{
"mcpServers": {
"dialmcp": {
"command": "npx",
"args": ["-y", "dialmcp-connector"]
}
}
}
См. examples/ для готовых конфигураций, которые можно вставлять.
Инструменты
| Инструмент | Описание |
|---|---|
| place_call | Запуск исходящего звонка на номер в США или Канаде с заданной целью. Возвращает немедленно идентификатор звонка — звонок выполняется асинхронно. |
| get_call | Получение текущего состояния звонка: статус, ход выполнения в реальном времени, а по завершении — расшифровка, ссылка на запись и структурированное решение. Осуществляйте опрос после place_call. |
| end_call | Немедленно завершить выполняющийся звонок. |
| list_calls | Список недавних звонков для аутентифицированного пользователя с их статусами и результатами. |
API задумано как асинхронное: place_call возвращает моментально идентификатор звонка, и ваш агент опрашивает get_call, поэтому длительный звонок в несколько минут не приводит к превышению тайм‑аутов клиента.
По завершении звонка get_call возвращает структурированное решение — achieved, partially_achieved, или not_achieved — с резюме, любыми обязательствами со стороны оппонента, предложениями по следующим шагам, покадровой расшифровкой и подписанной ссылкой на аудиозапись.
Во время звонка сервис нажимает клавиши через автоматизированные телефонные деревья, молча ожидает на удержании и обнаруживает голосовую почту — звонок завершается, а не записывается сообщение.
Модель безопасности
Каждая защита реализуется на стороне сервера, а не в инструкциях модели, которыми агент мог бы обойти.
-
Раскрытие. Каждый звонок начинается с заявления о том, что это AI‑помощник, для кого звонок и что линия записывается — до выполнения задачи. Соответствие независимым аудитом проверяется по каждому транскрипту и регистрируется. Агент никогда не отрицает, что он AI, и завершает звонок, если абонент возражает.
-
Ваш реальный номер. Звонки отображают ваш собственный SMS‑проверенный caller ID. Подмены не применяются, и получатели могут перезвонить вам.
-
Ограничения по скорости. 1 одновременный звонок · 3/час · 10/сутки · максимум 2/сутки на один и тот же получатель · 6‑минут по умолчанию и твёрдый лимит 10 минут, контролируемый системой. Массовые вызовы невозможны по конструкции.
-
Время и место. 8:00–21:00 по местному времени получателя (соответствует TCPA), только США и Канада. Неизвестные временные зоны рассматриваются консервативно.
-
Необходимый чёрный список. Экстренные службы (911), платные линии (900/976) и диапазоны с высоким уровнем мошенничества — набираются нельзя.
-
Постоянные отказы. Запросы не звонить сохраняются, проходят повторную независимую проверку транскрипции, сохраняются навсегда и распространяются на всех пользователей. Публичная самосервисная отписка по адресу https://mcp.dialmcp.com/opt-out — учётной записи не требуется.
-
Объективность. Независимый проверяющий оценивает цель каждого звонка на предмет harassment, обмана или мошенничества до набора номера. Агент сообщает только факты, данные в задаче.
-
Запретные использования. Телемаркетинг, холодные обращения, робоклики, опросы, лидогенерация, взыскание долгов и политические обращения запрещены условиями использования — Terms.
Полная детальная информация: https://dialmcp.com/safety.html
Требования
-
Node.js 18 и выше (только если вы используете stdio‑мост)
-
Номер мобильного американского или канадского оператора для SMS‑верификации
-
Пользователям должно быть 18 лет или старше
Ссылки
-
Веб‑сайт — https://dialmcp.com
-
Безопасность и анти-спам — https://dialmcp.com/safety.html
-
Конфиденциальность — https://dialmcp.com/privacy
-
Условия — https://dialmcp.com/terms
-
Опт-аут do-not-call — https://mcp.dialmcp.com/opt-out
-
Поддержка — support@dialmcp.com
Выпуски
Каждый релиз публикуется в двух местах: в npm (dialmcp-connector) и в официальном MCP Registry (com.dialmcp/dialmcp). Оба процессами автоматически управляются через .github/workflows/release.yml.
Cutting a release
-
Обновите
versionв обоихpackage.jsonиserver.json—npm run validate:manifestвыдаёт ошибку, если версии расходятся, и CI запускается при каждом пуше. -
Слияние в ветку
main. -
Запустите workflow релиза вручную (Actions → Release → Run workflow,
dry_runоставьте включённым) и доведите до зелёного. Это упакует tarball и валидируетserver.jsonпо схеме живого реестра без публикации. -
Опубликуйте GitHub Release с тегом
vX.Y.Z. Тег должен совпадать сpackage.json, иначе workflow остановит публикацию.
Шаг 3 стоит двух минут: версии реестра неизменны и не подлежат отмене публикации. Неправильная версия может быть заменена только более новой или помечена как устаревшая.
Что делает workflow
| Задача | Работает на | Шаги |
|---|---|---|
| publish | релизы и ручные прогоны | typecheck → validate manifest → build → smoke test → tag/version match → npm publish --provenance → mcp-publisher validate |
| registry | только релизы | ожидание распространения npm → mcp-publisher login dns → mcp-publisher publish |
--provenance прикрепляет подписанное подтверждение, связывающее tarball с коммитом и шагом workflow, который его собрал, что и объясняет необходимость id-token: write.
Публикация реестра — отдельная задача по двум причинам. Нужно подождать распространения npm: регистр проверяет право собственности, получив недавно опубликованную версию и прочитав её поле mcpName, которое возвращает 404 до распространения npm (задача делает повторные попытки примерно ~2,5 минуты). И она держит ключ подписи, который относится ко всему пространству com.dialmcp, а не к этому пакету — поэтому он находится в защищённой среде. Разделение этого окружения от задачи публикации целеназначено: политика веток допускает только теги вида v*, и применение его ко всем задачам сразу могло бы блокировать ручные прогоны из main.
Одноразовая настройка
| Что | Где | Зачем |
|---|---|---|
| NPM_TOKEN | секрет репозитория | автоматизационный токен с правами публикации на dialmcp-connector |
| MCP_REGISTRY_PRIVATE_KEY | секрет в окружении выпуска | ключ Ed25519 в base64; аутентифицирует публикацию реестра |
| окружение выпуска | политика ветки → теги → v* | хранит ключ пространства имён вне незаметных прогонов |
| v=MCPv1; k=ed25519; p= | TXT-запись на вершине dialmcp.com | как реестр подтверждает владение доменом |
TXT‑запись размещается на bare-домене, по стилю SPF — селектор _mcp. не читается и вызывает ошибку подписи. Подписи имеют временной интервал около ±15 секунд, поэтому часы раннера должны быть точны.
Внесение изменений
Ошибки и пулреквесты приветствуются для коннектора, документации и конфигураций клиентов. Ошибки в размещённой службе лучше отправлять на support@dialmcp.com. Пожалуйста, прочитайте SECURITY.md перед тем, как сообщать о каких-либо вопросах, связанных с безопасностью.
Лицензия
MIT © Datawizz Inc. См. LICENSE.