ktalk-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KTALK_LOG_LEVEL | No | Уровень логов (в stderr) | INFO |
| KTALK_SPACE_URL | Yes | Адрес пространства Толка, например https://<your-space>.ktalk.ru | |
| KTALK_TOKEN_FILE | No | Файл токена (0600); папка и файл создаются при старте | ~/.config/ktalk-mcp/token |
| KTALK_VERIFY_SSL | No | Проверка TLS-сертификата; true — требовать валидный сертификат | false |
| KTALK_RECEIVER_PORT | No | Локальный порт, на который букмарклет отправляет токен | 8765 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_roomA | Create (or overwrite) a Talk room; returns {url, room_name, conference_id, title, room}. |
| create_meetingA | Schedule a calendar meeting; returns {url, event}. |
| list_meetingsA | Past meetings, newest first — deep paginated archive. Default row: conference_key, room_name, title, start, end, participants_count, participants (≤6; full list via get_meeting), has_chat, recording_ids. Times are ISO-8601 in the machine's own zone, to the second. Meetings still in progress may also appear (the request asks for them the way the web client does; not verified against a live meeting). Returns {meetings, count, has_more, next_offset} — the API gives no grand total, so has_more is the only end signal. A requested field the API did not send is simply missing from the row: that means "not in this payload", not "no data at all". |
| get_meetingA | One meeting with its full participant list. Returns everything the payload has by default — detail is asked for by key, and for the detail: conference_key, room_name, title, start, end (ISO-8601, local zone, to the second), participants_count, participants and invited_participants (full; a guest without an account → {name, is_anonymous: true} — anonymousName is all the identification they have), has_chat, recording_ids, session_halls_artifacts. A field the API did not send is simply missing, which means "not in this payload", not "no data at all". |
| list_recordingsA | Recordings, newest first. Default row: recording_id, title, created_date (ISO-8601, local zone, to the second), created_by, duration, participants_count, participants (≤6; full list via get_recording), status, has_audio. There is no date window here — the recordings endpoint has no date filter, so narrow with query and limit instead. Returns {recordings, count, has_more, next_offset} — the API gives no grand total, so has_more is the only end signal. A requested field the API did not send is simply missing from the row: that means "not in this payload", not "no data at all". |
| get_recordingA | Recording detail with its full participant list. Returns everything the payload has by default — detail is asked for by id, and for the detail. Surfaces conference_key (link to the meeting/chat; only on this endpoint), download_url (best-quality file for download_recording) and has_chat, alongside title, description, created_date (ISO-8601, local zone, to the second), created_by, duration, status, participants_count, participants, has_audio, comments_count, frame_size, preview_image, qualities. The last four are bulky — pass fields to leave them out. A field the API did not send is simply missing, i.e. "not in this payload". |
| download_recordingA | Download a recording's video file to disk (best available quality). An existing file at target_path is overwritten. |
| get_chat_messagesA | Meeting chat across all channels, merged and time-ordered. The chat lives on the meeting, not the recording — pass conference_key, or a recording_id whose conference_key is resolved. With save_path, writes .json + .txt and returns a compact summary instead of the messages. Returns {conference_key, channels, count, truncated_channels, messages:[{id, channel, created, author, authorLogin, isAnonymous, text, files, reactions}]}; a non-empty truncated_channels means those channels hit limit and the chat may be incomplete. |
| auth_statusA | Token status: authenticated/expired, expiry, the token-file path, and the README link. No parameters. To (re)authenticate, put a Session token in the token_file. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/mainpart/ktalk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server