Большинство MCP-серверов дают агенту доступ к чему-то удалённому — базе данных, API, трекеру задач. Голосовой MCP-сервер Vext делает обратное: он даёт агенту доступ к вашему микрофону, расшифровкам встреч и истории диктовок, причём ничего не покидает машину.

По умолчанию он выключен. Его включение позволяет любому процессу на вашем Mac, у которого есть токен, управлять приложением, — это осознанное решение, и мы не принимаем его за вас. В этой статье: что предоставляет сервер, как подключить основные клиенты и те несколько сценариев, ради которых всё это стоит настраивать.

Что это

Vext поднимает локальный HTTP-сервер, говорящий на Streamable HTTP MCP. Его модель безопасности определяют три факта:

  • Только loopback. Он слушает 127.0.0.1, поэтому никогда не выходит в сеть.
  • Bearer-токен. Каждый запрос несёт заголовок Authorization: Bearer. Токен создаётся при первом чтении, и его можно перевыпустить в настройках.
  • Выключен по умолчанию. Пока вы не включите, никто ничего не слушает.

Порт по умолчанию — 58398: высокий и незарезервированный, выбран так, чтобы не конфликтовать с дев-серверами и MCP-эндпоинтами других приложений Muvon. Путь — /mcp, полный адрес получается http://127.0.0.1:58398/mcp.

Это тот же сервер, с которым вышел живой транскрипт в Vext 1.4.0.

Как добавить MCP-сервер в Claude Code и другие клиенты

В настройках для каждого клиента показан готовый фрагмент с вашим настоящим токеном. Форматы такие.

Claude Code — одна команда claude mcp add:

claude mcp add --transport http vext http://127.0.0.1:58398/mcp --header "Authorization: Bearer YOUR_TOKEN"

Cursor, Windsurf, Claude Desktop — стандартный JSON mcpServers:

{
  "mcpServers": {
    "vext": {
      "url": "http://127.0.0.1:58398/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Codex — MCP-сервер для Codex прописывается в ~/.codex/config.toml:

[mcp_servers.vext]
url = "http://127.0.0.1:58398/mcp"
http_headers = { Authorization = "Bearer YOUR_TOKEN" }

OpenCode — opencode.json, в проекте или в ~/.config/opencode/:

{
  "mcp": {
    "vext": {
      "type": "remote",
      "url": "http://127.0.0.1:58398/mcp",
      "enabled": true,
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Octomind — единственное исключение. Его HTTP-серверы не умеют отправлять произвольные заголовки, поэтому токен едет в строке запроса. Здесь это безопасно именно потому, что эндпоинт доступен только по loopback. Настройки выдают этот вариант отдельно.

38 инструментов по группам

Вместо перечисления всех сигнатур — вот очертания того, что может делать агент.

Живая диктовка. start_dictation, stop_dictation, cancel_dictation. Агент начинает слушать, вы говорите, он затем забирает расшифровку — уже после очистки и с применением активного стиля. stop_dictation принимает paste=true и вставляет текст в позицию курсора точно так же, как обычная диктовка.

Печать за вас. paste_text вставляет текст в курсор активного приложения и затем восстанавливает ваш буфер обмена.

Расшифровка файлов. transcribe_file прогоняет локальную речевую модель по файлу wav, m4a, mp3 или aiff на диске и возвращает и сырой, и очищенный текст.

Встречи. start_meeting, stop_meeting, list_meetings, get_meeting, rename_meeting, delete_meeting, summarize_meeting, export_meeting. Встречи записывают микрофон и системный звук с метками спикеров. Расшифровка доступна сразу; уточнение спикеров и резюме доделываются в фоне, поэтому get_meeting — та точка, куда стоит обращаться повторно. Экспорт пишет markdown, txt, srt или vtt и возвращает путь.

Спикеры. list_speakers, rename_speaker, merge_speakers, delete_speaker, label_meeting_speaker. Голосовые профили сохраняются между встречами, так что достаточно назвать человека один раз.

Заметки и история. start_note, stop_note, list_notes, get_note, delete_note, а также list_dictations, get_dictation, delete_dictation, retry_dictation. Заметки записываются и сохраняются, а не вставляются.

Настройки. get_settings, set_settings, list_microphones, set_microphone, list_app_profiles, set_app_profile, remove_app_profile, list_vocabulary, add_vocabulary, remove_vocabulary, get_status.

Инструменты только для чтения помечены соответствующим образом, а удаляющие (delete_note, delete_dictation и им подобные) — как разрушительные, чтобы аккуратно написанный клиент мог спрашивать подтверждение.

Для чего это действительно полезно

Списки инструментов легко писать и трудно полюбить. Настройку оправдывают три сценария.

1. Разговор с агентом без плясок с горячими клавишами. Попросите Claude Code запустить диктовку, говорите две минуты о своих требованиях и дайте ему самому забрать расшифровку. Вы не трогаете клавиатуру, а моментом управляет агент: он может начать слушать сразу после того, как задал вам вопрос. Это естественное продолжение голосового ввода в Claude Code.

2. От встречи к коммиту. После планёрки: «прочитай мою последнюю встречу, вытащи задачи, назначенные на меня, и заведи по ним issues». get_meeting возвращает расшифровку с именами спикеров и метками времени плюс резюме. У агента есть реальный контекст о том, кто что пообещал, — и этот звук ни разу не покидал ваш Mac.

3. Обучение распознавателя по кодовой базе. add_vocabulary принимает пару «услышано как» → «заменить на». Направьте агента на репозиторий и попросите массово добавить в словарь имена модулей, необычные идентификаторы и названия зависимостей. Точность диктовки на жаргоне вашего проекта вырастает сразу, а вы не набрали руками ни одной записи.

Где это не поможет

Будем реалистами. Сервер не сделает агента лучшим программистом, а диктовать код символ за символом по-прежнему хуже, чем набирать его. Речь хороша для прозы, намерений и комментариев к ревью — ровно тот довод, что и в статье программирование голосом с ИИ-агентами.

Есть и настоящее соображение безопасности, которое стоит проговорить прямо: включение сервера означает, что любой локальный процесс с токеном может запустить ваш микрофон и вставить текст в активное приложение. Это серьёзная возможность. Именно поэтому функция поставляется выключенной, поэтому существует токен и поэтому его перевыпуск делается одним щелчком. Если вы делите машину с кем-то или запускаете локальные инструменты, которым не доверяете, подумайте, прежде чем включать.

С чего начать

Настройки MCP находятся в Vext: Настройки → General → MCP server for AI agents: переключатель, порт, токен и фрагменты для каждого клиента с уже подставленным токеном.

brew install muvon/tap/vext

Vext стоит 49 $ один раз, с пробным периодом на 100 диктовок, на macOS 14 и новее с Apple Silicon. Расшифровка и обработка текста выполняются локально, MCP-сервер тоже локальный. Весь цикл — микрофон, модель, расшифровка, агент — остаётся на вашей машине.