ktalk-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ktalk-mcplist my recent recordings"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ktalk-mcp
MCP сервер для доступа к записям Контур.Толк (KTalk) из Claude Code.
Предоставляет доступ к:
Списку записей конференций
Деталям записи
Транскриптам (распознанная речь по спикерам)
Саммари и протоколам встреч
Полному составу участников записи (обходит лимит в 6 участников в списковом ответе)
Скачиванию видеофайла записи
Архиву встреч и истории чата (доступно только с персональным API-ключом)
Конфигурации комнаты — политики аудио/видео/демонстрации, модераторы, SIP, чат, маскирование (доступно только в режиме session token)
Календарю запланированных встреч, видимых активной авторизации (доступно только в режиме session token)
Предпросмотру новой встречи без её создания — само создание сделано намеренно недоступным агенту, см. «Планирование встречи» ниже
Диагностике авторизации — какой ключ/токен активен и почему запрос не проходит
Установка
Требуется Python 3.12+ и uv.
uv tool install ktalk-mcpИли через pip:
pip install ktalk-mcpRelated MCP server: Speak AI MCP Server
Авторизация
Сервер поддерживает два способа авторизации: session token (кука браузера) и
персональный API-ключ. Способы исключают друг друга: если задать обе переменные,
побеждает KTALK_PERSONAL_API_KEY — KTALK_SESSION_TOKEN в этом случае вообще не
читается. Не задать ни одну — сервер завершится понятной ошибкой при старте.
Персональный API-ключ не привязан к браузерной сессии и не протухает без предупреждения, в отличие от session token. Берите его, если сервер должен работать стабильно, а не только для разового запроса.
Session token
Session token — значение из cookie браузерной сессии Толка. Передаётся как
query-параметр sessionToken. Быстрый способ начать, но токен живёт недолго и
протухает без предупреждения — при регулярном использовании удобнее персональный
API-ключ (ниже).
Откройте https://your-domain.ktalk.ru в браузере
Войдите в свой аккаунт
Откройте DevTools: нажмите
F12(илиCmd+Option+Iна Mac)Перейдите во вкладку Application → Cookies →
https://your-domain.ktalk.ruНайдите cookie с именем
sessionTokenСкопируйте его значение
Важно: session token имеет ограниченный срок жизни. Если MCP tool возвращает ошибку авторизации, получите новый токен по инструкции выше.
Персональный API-ключ
Персональный API-ключ выдаётся в админке Толка на конкретного пользователя на
настраиваемый срок и не зависит от того, открыт ли браузер. Передаётся заголовком
X-Auth-Token, а не в URL — секрет не попадает в query-параметры и логи веб-сервера.
Выпускается и ротируется в разделе Управление → API-ключи админки Толка (UI-шаг, CLI-эквивалента нет; экранные шаги здесь не расписываем — актуальный порядок действий смотрите в справке Контура: «Персональный API-ключ доступа в Толке»). Значение ключа показывается один раз в течение часа после создания — не скопировали вовремя, придётся выпускать новый.
Не путайте с ключом пространства. В Толке есть второй, отдельный ключ —
пространственный, с заголовком X-API-Key, выдаётся не на пользователя, а на всё
пространство целиком. ktalk-mcp работает только с персональным ключом
(X-Auth-Token); ключ пространства не поддерживается — переменная называется
KTALK_PERSONAL_API_KEY, а не KTALK_API_KEY, намеренно, чтобы их не перепутать.
При выпуске ключа в админке выбираются права (scope). Не хватает прав — запрос вернёт 403, и по виду это неотличимо от «ключ невалиден», хотя ключ рабочий (подробнее — «Диагностика авторизации» ниже).
Право (scope) | Даёт доступ к |
| Список записей, детали, транскрипт, саммари, скачивание файла, участники |
| Архив встреч, чат встречи, отчёты по участникам |
| Опционально. Без него |
Ротация: после перевыпуска ключа в админке обновите значение KTALK_PERSONAL_API_KEY в
конфигурации (.mcp.json или переменной окружения, см. ниже) и перезапустите MCP сервер.
Если реестр
ktalkуже накопил записи в session-режиме, перед первымktalk syncпосле переключения на персональный ключ обязательно выполнитеktalk sync --dry-run. Внутренний и официальный контуры API отдают идентификаторы записей по-разному, и без сверки первый боевой sync под ключом рискует задвоить весь реестр. Команда только сверяет id и ничего не пишет — см. таблицу команд CLI ниже.
Подключение к Claude Code
Добавьте в файл ~/.claude/.mcp.json (глобально) или .mcp.json (в проекте).
С персональным API-ключом:
{
"mcpServers": {
"ktalk": {
"command": "uvx",
"args": ["ktalk-mcp"],
"env": {
"KTALK_PERSONAL_API_KEY": "ваш_персональный_api_ключ",
"KTALK_BASE_URL": "https://your-domain.ktalk.ru"
}
}
}
}С session token:
{
"mcpServers": {
"ktalk": {
"command": "uvx",
"args": ["ktalk-mcp"],
"env": {
"KTALK_SESSION_TOKEN": "ваш_session_token",
"KTALK_BASE_URL": "https://your-domain.ktalk.ru"
}
}
}
}Альтернативная конфигурация
Переменные окружения можно задать отдельно (выберите одну из двух):
export KTALK_PERSONAL_API_KEY="ваш_персональный_api_ключ"
# или
export KTALK_SESSION_TOKEN="ваш_session_token"
export KTALK_BASE_URL="https://your-domain.ktalk.ru"Также поддерживается файл .env в рабочей директории:
KTALK_PERSONAL_API_KEY=ваш_персональный_api_ключ
KTALK_BASE_URL=https://your-domain.ktalk.ruДиагностика авторизации
Проверьте авторизацию без запроса записей — MCP tool ktalk_auth_status в Claude Code
или CLI-команда:
uv run ktalk auth-statusДиагностика различает два случая, которые снаружи выглядят одинаково — просто ошибка, — но чинятся по-разному:
401 — ключ или токен невалиден либо истёк. Перевыпустите его.
403 — ключ рабочий, но конкретному запросу не хватает прав (scope). Отредактируйте права ключа в админке Толка (см. таблицу в разделе «Персональный API-ключ» выше) — перевыпускать ключ не нужно.
У session token понятия scope нет — диагностика в этом режиме пробным запросом списка записей сообщает только «токен работает / не работает», без прав и срока действия.
Режим ключа не проверен полностью на боевом окружении — команда описывает задуманное поведение, а не гарантию для любого ключа.
Доступные MCP Tools
ktalk_list_recordings
Список записей конференций.
Параметр | Тип | Default | Описание |
| str | — | Поиск по названию, комнате, автору |
| str | — | Начало периода (ISO 8601) |
| str | — | Конец периода |
| int | 30 | Количество записей (1–1000) |
| str | byTimeNewFirst | Сортировка: |
| str | — | Токен пагинации |
| str | markdown | raw / markdown |
ktalk_get_recording
Детали одной записи — автор, дата, длительность, список участников.
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | markdown | raw / markdown |
ktalk_get_transcript
Транскрипт записи — распознанная речь по спикерам с таймкодами.
Поддерживает чанкинг для длинных транскриптов: при превышении chunk_size ответ автоматически разбивается на части по границам реплик (не в середине фразы). Каждый чанк содержит метаданные для постраничного чтения.
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | markdown | raw / markdown |
| int | 0 | Номер чанка. 0 = авто (целиком если маленький, первый чанк если большой). 1+ = конкретный чанк |
| int | 30000 | Макс. символов в чанке (~7500 токенов). Мягкий лимит — разрез по границам реплик |
ktalk_get_summary
Полное саммари записи (краткое резюме + протокол).
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | markdown | raw / markdown |
ktalk_get_summary_by_type
Саммари конкретного типа.
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | — |
|
| str | markdown | raw / markdown |
ktalk_get_participants
Полный состав участников записи. В отличие от списка/деталей записи (там результат
ограничен maxParticipantCount, по умолчанию не больше 6), дообогащает результат
отдельными запросами, включая анонимных участников.
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | markdown | raw / markdown |
ktalk_download_recording
Скачивает видеофайл записи на диск потоково, без буферизации целиком в памяти.
Параметр | Тип | Default | Описание |
| str | — | Ключ (ID) записи |
| str | — | Путь на диске для сохранения файла. Родительские директории создаются; существующий файл не перезаписывается |
| str | — | Качество видео, например |
| str | markdown | Формат возвращаемых метаданных о скачивании — raw / markdown |
ktalk_list_archive
Архив встреч за период. Доступен только в режиме персонального API-ключа (право
application.reporting.read). Читает всё окно дат на стороне клиента и возвращает
результат одним вызовом, без постраничного чтения.
Параметр | Тип | Default | Описание |
| str | — | Начало периода (ISO 8601) |
| str | — | Конец периода (ISO 8601) |
| list[str] | — | Фильтр по названиям комнат |
| str | markdown | raw / markdown |
ktalk_get_chat_messages
Сообщения чата встречи. Нужен recording_key или conference_key; если канал не
указан, клиент сам определяет доступный канал вместо ошибки «channel field is
required».
Параметр | Тип | Default | Описание |
| str | — | Ключ записи — используется, чтобы определить встречу |
| str | — | Ключ встречи — используется напрямую, если указан |
| str | — | Имя канала чата, например |
| str | markdown | raw / markdown |
Одно из recording_key / conference_key обязательно.
ktalk_get_room
Конфигурация комнаты по имени: политики аудио/видео/демонстрации экрана, модераторы, анонимный доступ, SIP, чат, маскирование, залы сессий. Доступно только в режиме session token — в режиме персонального ключа отказывает намеренно, так как этот путь на api-key ни разу не подтверждён.
Параметр | Тип | Default | Описание |
| str | — | Имя комнаты |
| str | markdown | raw / markdown |
ktalk_list_calendar
Запланированные встречи за окно дат, видимые активной авторизации. Доступно только в режиме session token.
Это не «ваш личный календарь» — выдача покрывает всё, что видит текущая авторизация, включая чужие встречи. Сервер ограничивает один запрос семью днями; инструмент сам режет произвольное окно на такие сегменты, от вас это не требует никаких действий. На один сегмент возвращается не больше 100 встреч, и добрать остаток нечем — если сегмент упёрся в этот потолок, ответ явно предупреждает, что выдача по нему может быть неполной.
Параметр | Тип | Default | Описание |
| str | — | Начало окна (ISO 8601), обязателен |
| str | — | Конец окна (ISO 8601), обязателен |
| str | — | Фильтр по названию комнаты |
| str | markdown | raw / markdown |
ktalk_preview_meeting
Предпросмотр встречи, которая могла бы быть создана — без единого сетевого запроса. Ничего не создаёт и не может создать: у MCP-сервера нет ни одного инструмента, который бы создавал встречу. Подробности и причина — раздел «Планирование встречи» ниже.
Параметр | Тип | Default | Описание |
| str | — | Тема встречи. Обязателен |
| str | — | Начало (ISO 8601). Обязателен |
| str | — | Конец (ISO 8601). Обязателен |
| str | — | Часовой пояс. Обязателен — без тихого умолчания |
| str | — | Комната. Обязателен |
| list[str] | — | Обязательные участники. Явный пустой список — валидное значение |
| str | "" | Описание. Единственное поле с тихим дефолтом |
| bool | — | Автозапись встречи. Обязателен |
| bool | — | SIP-подключение. Обязателен |
| str | — | PIN комнаты. Явная пустая строка — валидное «без PIN» |
| bool | — | Доступ неавторизованных участников. Обязателен |
| str | markdown | raw / markdown |
Любое из обязательных полей, переданное как отсутствующее, — отказ до сетевого вызова, с указанием, какого именно поля не хватает.
ktalk_auth_status
Диагностика активного механизма авторизации — какой режим активен, жив ли ключ/токен, какие права у ключа. Подробности — в разделе «Диагностика авторизации» выше.
Параметр | Тип | Default | Описание |
| str | markdown | raw / markdown |
Планирование встречи
Создание встречи — единственная операция пакета, которая что-то меняет вне вашего компьютера: она рассылает приглашения реальным людям. Удаление созданного события эти письма не отзывает. Из-за этого создание устроено умышленно неудобно:
MCP-агенту создание недоступно вовсе. Ни в Claude Code, ни в любом другом MCP-клиенте нет инструмента, который создаёт встречу — только предпросмотр,
ktalk_preview_meeting(см. выше).Само создание — команда CLI
ktalk create-meeting-confirm. Она работает только в интерактивном терминале (проверяет, что и ввод, и вывод — реальный TTY) и перед отправкой печатает предпросмотр и требует набрать словода.Предпросмотр без создания доступен и в CLI:
ktalk create-meeting-preview— не делает ни одного сетевого запроса.Обе команды работают только в режиме session token — в режиме персонального ключа создание встречи не подтверждено ни разу и потому отключено.
Ни одно поле не имеет значения по умолчанию (кроме описания встречи — пустая строка, если не задано). Тема, начало, конец, часовой пояс, комната, участники, анонимный доступ, PIN, SIP, автозапись — каждое нужно передать явно; иначе команда откажет и назовёт, какого поля не хватает. Так сделано намеренно: молчаливый часовой пояс сдвинет встречу в календаре участников на другое время, а молчаливый SIP или автозапись незаметно для организатора изменят, кто может подключиться и записывается ли встреча.
Из этого вытекают два практических следствия:
Булевы флаги (
--enable-sip,--enable-auto-recording,--allow-anonymous) принимают только явныеtrueилиfalse— «флаг просто не указан» не считается ответом.«Встреча без обязательных участников» — это отдельный флаг
--no-required-users, а не просто отсутствие--required-user-key. Отсутствие без флага трактуется как «вопрос не решён», а не как «участников нет».
Повторяющиеся встречи в этой версии не поддерживаются — можно создать только разовое событие.
При сетевом сбое во время создания команда не повторяет запрос сама: если сеть
оборвалась, неизвестно, ушло приглашение или нет, и автоматический повтор рискует
создать дубль. Решение о повторной попытке — за вами; перед ней стоит проверить
ktalk_list_calendar, не появилась ли встреча уже.
Создание встречи ещё ни разу не выполнялось на боевом окружении — команда реализует задуманное поведение, но не проверена живым вызовом.
# Предпросмотр — без сети, без побочных эффектов
uv run ktalk create-meeting-preview \
--subject "Синк по проекту" \
--start 2026-08-20T10:00:00 --end 2026-08-20T10:30:00 --timezone Europe/Moscow \
--room-name "Переговорная 1" \
--no-required-users \
--enable-sip false --enable-auto-recording false --allow-anonymous false \
--pin-code ""
# Создание — только в интерактивном терминале, требует ввода "да"
uv run ktalk create-meeting-confirm \
--subject "Синк по проекту" \
--start 2026-08-20T10:00:00 --end 2026-08-20T10:30:00 --timezone Europe/Moscow \
--room-name "Переговорная 1" \
--required-user-key user-123 --required-user-key user-456 \
--enable-sip false --enable-auto-recording false --allow-anonymous false \
--pin-code ""API
Сервер работает с KTalk Web API. Набор путей, которые вызывает клиент, зависит от активного режима авторизации (см. «Авторизация» выше):
Session-режим — авторизация query-параметром
sessionToken, используется внутренний контур API.Режим персонального ключа — авторизация заголовком
X-Auth-Token, используются официальные пути интеграторского API (talk.public.api-api-2.json).
Транскрипт и саммари используют один и тот же путь в обоих режимах:
Эндпоинт | Описание |
| Транскрипт |
| Полное саммари (v2) |
| Саммари по типу |
Список записей и детали записи используют разные пути в session- и api-key-режимах. Архив встреч, чат, полный состав участников, скачивание файла и диагностика ключа доступны только в режиме персонального ключа (нужные права — в таблице раздела «Персональный API-ключ» выше).
Комната, календарь и создание встречи работают только в режиме session token — в режиме персонального ключа эти операции отказывают осознанно, а не по случайному пробелу: путь на api-key либо не подтверждён вовсе, либо ведёт себя необъяснимо непоследовательно при проверке.
OpenAPI спецификация
talk.public.api-api-2.jsonвключена как справочник, но содержит расхождения с реальным API (пути, формат авторизации, структура ответов).
CLI реестра (ktalk)
Тот же пакет ставит вторую команду — ktalk, операционный реестр записей на
SQLite. Вся детерминированная механика (синхронизация списка записей, дедуп,
экспирация, смена статусов, рендер дашборда и markdown-зеркала, разовая
миграция) живёт в коде, а не в рассуждениях модели.
SQLite — операционный source of truth. Markdown-файл registry.md —
генерируемое read-only зеркало для git (ktalk export), руками не редактируется.
Путь к базе: флаг --db PATH > переменная KTALK_REGISTRY_DB > дефолт
95_TRANSCRIPTS/.registry.db (относительно текущего каталога). Бинарную БД
нужно добавить в .gitignore (.registry.db, .registry.db-wal, .registry.db-shm).
ktalk auth-status, ktalk create-meeting-preview и ktalk create-meeting-confirm
реестр не открывают вовсе — им он не нужен. В частности, auth-status теперь
работает даже если файла базы данных нет или он недоступен: раньше команда
падала с ошибкой открытия БД, хотя для диагностики авторизации она не требуется.
Планирование встречи — отдельный раздел «Планирование встречи» выше.
Команда | Назначение |
| Загрузить записи из KTalk, upsert новых ( |
| Диагностика активной авторизации — жив ли ключ/токен, какие права у ключа. См. «Диагностика авторизации». |
| Дашборд: новые записи, статистика по статусам. |
| Список записей с фильтром по статусу. |
| Детали записи: участники, статус, пути, длительность. |
| Перевести в |
| Завершить, проставить пути и |
| Частичная обработка. |
| Пропустить вручную. |
| Привязать профиль к участнику. |
| Сгенерировать markdown-зеркало. |
| Разовый импорт из markdown-реестров. |
Все команды поддерживают --json (валидный JSON в stdout; ошибки — в stderr с
ненулевым кодом возврата). Несколько фоновых агентов могут безопасно писать
параллельно (WAL + busy_timeout + транзакция на операцию).
Разработка
git clone https://github.com/mdemyanov/ktalk-mcp.git
cd ktalk-mcp
uv sync
# Запуск тестов
uv run pytest -v
# Линтинг
uv run ruff check .
# Локальный запуск сервера (session token или KTALK_PERSONAL_API_KEY — см. «Авторизация»)
KTALK_SESSION_TOKEN=... KTALK_BASE_URL=... uv run ktalk-mcpЛицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables Claude Code to search and retrieve documents from an Outline knowledge base.2

Speak AI MCP Serverofficial
AlicenseAqualityBmaintenanceConnects Speak AI transcription and insight data to Claude and ChatGPT, enabling natural language queries for summaries, action items, and quotes from recordings.100228MIT- AlicenseNot gradedqualityDmaintenanceConnects your Plaud voice recorder to Claude, giving access to recordings, transcripts, and AI summaries so you can query your notes via natural language.11MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to access your Fathom meetings, transcripts, and AI summaries.2016MIT
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Search and read your Laxis meeting transcripts, AI summaries, and participants from Claude.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mdemyanov/ktalk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server