salutespeech-mcp
This server integrates Sber's SaluteSpeech API, providing speech recognition (STT) and synthesis (TTS) capabilities via 5 tools:
recognize_speech: Transcribe audio from Base64-encoded data, supporting Russian (ru-RU), English (en-US), and Kazakh (kk-KZ), with a 2MB/1-minute audio limit and multiple formats (WAV, OGG/Opus, MP3).recognize_file: Transcribe audio from a local file path, with automatic format detection from the file extension, subject to the same 2MB/1-minute limit.synthesize_speech: Convert text (up to 4,000 characters) to speech, returning Base64-encoded audio. Supports multiple voices (e.g., Nec_24000, Bys_24000) and output formats (opus, wav16, pcm16).list_models: List available recognition models and synthesis voices, with optional filtering by type (recognition, synthesis, or all).get_task_status: Check the status of an asynchronous recognition task using its task ID.
Authentication is supported via SALUTESPEECH_API_KEY (base64-encoded client_id:client_secret), SALUTE_AUTH_KEY (legacy alias), or separate SALUTE_SPEECH_CLIENT_ID and SALUTE_SPEECH_CLIENT_SECRET environment variables.
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., "@salutespeech-mcpTranscribe the audio file recording.wav"
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.
SaluteSpeech MCP — распознавание и синтез русской речи для ИИ-ассистента
Если вы искали, как расшифровать созвон или голосовое сообщение в текст, озвучить текст голосом Сбера или подключить русский speech-to-text к Claude без собственного бэкенда — это оно. 5 инструментов поверх Sber SaluteSpeech API: распознавание речи (STT) и синтез речи (TTS).
Часть серии WWmcp (46 серверов) от @theYahia.
Установка
Claude Desktop
{
"mcpServers": {
"salutespeech": {
"command": "npx",
"args": ["-y", "@theyahia/salutespeech-mcp"],
"env": { "SALUTESPEECH_API_KEY": "your-base64-key" }
}
}
}Claude Code
claude mcp add salutespeech -e SALUTESPEECH_API_KEY=your-key -- npx -y @theyahia/salutespeech-mcpРежим Streamable HTTP
SALUTESPEECH_API_KEY=your-key npx @theyahia/salutespeech-mcp --http --port=3000
# POST http://localhost:3000/mcp
# GET http://localhost:3000/healthRelated MCP server: @theyahia/yandex-speechkit-mcp
Авторизация
Три варианта (проверяются по порядку):
Переменная | Формат |
| Base64 от строки |
| То же самое (устаревший алиас) |
| Сырые учётные данные (кодируются автоматически) |
OAuth-токены запрашиваются и обновляются автоматически. Scope по умолчанию —
SALUTE_SPEECH_PERS (физлица); для корпоративных аккаунтов задайте SALUTE_SPEECH_SCOPE
(SALUTE_SPEECH_CORP — постоплата, SALUTE_SPEECH_B2B — предоплата).
Учётные данные выдаются на developers.sber.ru.
Инструменты (5)
Инструмент | Описание |
| Распознавание речи из аудио в Base64 |
| Синтез речи, возвращает аудио в Base64 |
| Список моделей распознавания и голосов синтеза |
| Статус асинхронной задачи распознавания |
| Распознавание речи из локального файла по пути |
Навыки (Skills)
skill-transcribe— пошаговый сценарий расшифровки аудиоskill-synthesize— пошаговый сценарий синтеза речи
Примеры
Расшифруй аудиофайл /tmp/meeting.wav
Озвучь «Привет, мир» голосом Bys_24000 в формате wav16
Покажи доступные голосаОграничения
recognize_speech и recognize_file работают через синхронный эндпоинт с лимитом
2 МБ / 1 минута аудио (файл больше — HTTP 413). Для многоканального аудио распознаётся
только первый канал. Длинные записи требуют асинхронного сценария
(data:upload → speech:async_recognize → task:get → data:download) — он пока не вынесен
в инструменты; шаг опроса статуса покрывает get_task_status.
Текст для синтеза ограничен 4000 символами (включая пробелы и SSML-разметку).
Решение проблем
self-signed certificate in certificate chain / UNABLE_TO_VERIFY_LEAF_SIGNATURE
Эндпоинты Сбера используют Russian Trusted Root CA (НУЦ Минцифры), которого нет в дефолтном хранилище доверенных корневых сертификатов Node.js — поэтому самый первый OAuth-запрос падает, пока вы его не добавите.
Решение: скачайте корневой сертификат (russian_trusted_root_ca_pem.crt) с
gosuslugi.ru/crt и укажите его Node.js:
export NODE_EXTRA_CA_CERTS=/path/to/russian_trusted_root_ca_pem.crtВ MCP-клиенте добавьте эту переменную в блок env сервера. Не ставьте
NODE_TLS_REJECT_UNAUTHORIZED=0 в продакшене — это полностью отключает проверку TLS.
Официальная инструкция: сертификаты SaluteSpeech.
Лицензия
MIT
Available Tools
5 toolsget_task_statusA
Check status of an async SaluteSpeech recognition task by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID returned from async recognition request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It only states 'Check status' with no mention of side effects, error handling, idempotency, or rate limits. This is insufficient for a tool that queries an external async process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key verb and resource. Every word serves a purpose with no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description adequately conveys the tool's purpose. However, it could be enhanced by mentioning the possible statuses or expected response format to better inform the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a clear description for 'task_id'. The tool description adds no additional semantics beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check status', the specific resource 'async SaluteSpeech recognition task', and the method 'by ID'. It distinguishes itself from sibling tools like list_models, recognize_file, etc., which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use this tool (after obtaining a task ID from an async request), but lacks explicit guidance on when not to use it or alternatives. The usage context is implied but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List available SaluteSpeech models and voices for recognition and synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by model type: recognition, synthesis, or all | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description covers the basic behavior (listing models/voices, filtering by type) but, given no annotations, it lacks details on authorization, pagination, or output format, which would be helpful for an agent. It is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the key action and resource. Every word is necessary, and it is efficiently structured without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description is fairly complete. It explains the tool's purpose and filtering ability. Minor improvements could include mentioning that voices are for synthesis and models for recognition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing full info on the 'type' parameter. The description adds no extra meaning beyond the schema, meeting the baseline for a parameter with an enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource ('available SaluteSpeech models and voices') and purpose ('for recognition and synthesis'), clearly distinguishing it from siblings like 'recognize_file' which perform actual transcription.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing models and voices, but does not explicitly state when to use it versus alternatives like 'get_task_status' or when not to use it. The context is clear but lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recognize_fileA
Recognize speech from a local audio file. Auto-detects format from extension.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Recognition language (ru-RU, en-US, kk-KZ) | ru-RU |
| file_path | Yes | Absolute path to the audio file to recognize | |
| sample_rate | No | Sample rate in Hz — required for headerless .pcm/.alaw/.ulaw files (e.g. 16000, 8000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It reveals one key behavior—auto-detection of format from the extension—but does not mention side effects (none apparent, but not stated), error handling for missing files or unsupported formats, or the fact that it is a read-only operation. Some transparency is present, but significant behavioral details are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The primary purpose is stated first, and the key detail about auto-detection is injected naturally. It is succinct and well-structured, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main function and a key feature, but it does not mention the output format (e.g., recognized text, confidence scores) or any prerequisites like file existence or network access. Since there is no output schema to fill this gap, the description is only partially complete. An agent might be unclear about what to expect as a result, though the tool name and verb 'Recognize' offer some hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents all three parameters (file_path, language, sample_rate) with clear descriptions and defaults. The description adds little beyond the schema: it implies that file_path should have an extension (due to auto-detection) and that sample_rate is needed for headerless files, but these are already inferable from the schema's 'required for headerless' note. Since schema coverage is 100%, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Recognize' and clearly identifies the resource 'speech from a local audio file.' It also mentions auto-detection of format, which distinguishes it from a generic recognition tool and from sibling tools like recognize_speech that may handle other input sources. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'Auto-detects format from extension' provides implicit guidance on when to use this tool (when the file extension indicates the format) and when additional parameters like sample_rate may be needed (headerless files). However, it does not explicitly compare with sibling tools such as recognize_speech, leaving some ambiguity about when to prefer one over the other. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recognize_speechB
Speech recognition via SaluteSpeech. Accepts Base64 audio, returns text transcription.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Recognition language (ru-RU, en-US, kk-KZ) | ru-RU |
| audio_base64 | Yes | Audio data in Base64 encoding | |
| content_type | No | Audio MIME type. Valid SaluteSpeech values: audio/ogg;codecs=opus, audio/mpeg, audio/flac, audio/x-pcm;bit=16;rate=<Hz>. Pass audio/wav and the sample rate is auto-detected from the header. | audio/wav |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral transparency. It mentions input and output but omits any details on error handling, limitations, async behavior, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, comprising two short sentences that front-load the core function and then describe the input/output. There is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description states the return type (text transcription) and input format, it lacks broader context such as whether the operation is synchronous, any file size constraints, or integration with other SaluteSpeech features. Given the simple nature of the tool, this is acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have some description in the schema, achieving 100% coverage. The descriptions are brief but adequate for basic understanding, though they add little beyond the schema itself (e.g., no explanation of allowed language formats beyond examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs speech recognition via SaluteSpeech and accepts Base64 audio to return text. It does not explicitly differentiate from sibling tool 'recognize_file', but the mention of Base64 audio provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like recognize_file or synthesize_speech. The description lacks any decision criteria or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synthesize_speechA
Text-to-speech via SaluteSpeech. Accepts text, returns Base64-encoded audio.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to synthesize (max 4000 chars incl. spaces/markup) | |
| voice | No | Voice id <speaker>_<rate>. Speakers: Nec (Наталья), Bys (Борис), May (Марфа), Tur (Тарас), Ost (Александра), Pon (Сергей), Kin (Kira, English). Rate suffix 24000 or 8000 (telephony) sets the sample rate. Other languages are selected via SSML lang, not the voice id. | Nec_24000 |
| format | No | Audio container/codec: opus, wav16, pcm16, alaw (sample rate comes from the voice suffix) | opus |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden of behavioral disclosure. It adds one key fact beyond the schema: the output is Base64-encoded audio. However, it does not mention whether the call is synchronous, whether any authentication is needed, whether there are side effects, or the processing interface details. The basic output contract is present, but more depth would be expected for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that immediately states the primary behavior and output. It is brief and front-loaded with 'Text-to-speech via SaluteSpeech' before touching the operation. There is no superfluous structure or repetition, though it leaves some behavioral detail out.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with a fully documented input schema and no output schema, this description provides the key missing piece: the return envelope is Base64-encoded audio. It gives enough to make a correct call and understand the result, though it could mention potential limitations like the audio duration or output size. The sibling `get_task_status` raises a possible async concern, but the description's statement that it 'returns Base64-encoded audio' resolves that by implying a direct response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 3 parameters with detailed descriptions (text length, voice id syntax, format options). The description adds no additional parameter-specific meaning beyond the schema, such as the decision between opus and wav16 or when to set the telephony rate. Since schema coverage is 100%, the description's lack of parameter commentary is acceptable, but it doesn't exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Text-to-speech via SaluteSpeech'. It also clearly distinguishes the tool from the recognition siblings (recognize_speech, recognize_file) by specifying the direction of the operation (text-to-speech) and the output (Base64-encoded audio). An agent can immediately tell this is the generation-side protocol, not recognition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The phrase 'Text-to-speech' implies the scenario of converting text into audio, but the description never references the sibling tools or says when to choose this over recognition. The agent would have to infer the usage context from the message only, with no stated exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.2.0- Changed
recognize_file1 field changed- added
Input schema / properties / sample_rateAdded value: +{ + "description": "Sample rate in Hz — required for headerless .pcm/.alaw/.ulaw files (e.g. 16000, 8000)", + "exclusiveMinimum": 0, + "type": "integer" +}
- Changed
recognize_speech1 field changed- changed
Input schema / properties / content_type / descriptionPrevious value: -"Audio MIME type (audio/wav, audio/ogg;codecs=opus, audio/mpeg)"New value: +"Audio MIME type. Valid SaluteSpeech values: audio/ogg;codecs=opus, audio/mpeg, audio/flac, audio/x-pcm;bit=16;rate=<Hz>. Pass audio/wav and the sample rate is auto-detected from the header."
- Changed
synthesize_speech5 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Audio format: opus, wav16, pcm16"New value: +"Audio container/codec: opus, wav16, pcm16, alaw (sample rate comes from the voice suffix)" - changed
Input schema / properties / text / descriptionPrevious value: -"Text to synthesize into speech"New value: +"Text to synthesize (max 4000 chars incl. spaces/markup)" - added
Input schema / properties / text / maxLengthAdded value: +4000 - added
Input schema / properties / text / minLengthAdded value: +1 - changed
Input schema / properties / voice / descriptionPrevious value: -"Voice: Nec_24000, Bys_24000, May_24000, Tur_24000, Ost_24000, Pon_24000"New value: +"Voice id <speaker>_<rate>. Speakers: Nec (Наталья), Bys (Борис), May (Марфа), Tur (Тарас), Ost (Александра), Pon (Сергей), Kin (Kira, English). Rate suffix 24000 or 8000 (telephony) sets the sample rate. Other languages are selected via SSML lang, not the voice id."
5 tool updates
v1.1.0- First observed
get_task_status - First observed
list_models - First observed
recognize_file - First observed
recognize_speech - First observed
synthesize_speech
TDQS
Scored across 5 tools
recognize_speech and recognize_file both perform speech recognition but differ by input source (Base64 vs local file), which is distinguishable. The other tools (get_task_status, list_models, synthesize_speech) have clearly distinct purposes.
All tool names follow a consistent verb_noun snake_case pattern: recognize_*, get_*, list_*, synthesize_*. No mixed conventions or vague verbs.
Five tools is well-scoped for a speech API covering recognition, synthesis, model listing, and async task management. Each tool earns its place.
The core speech recognition and synthesis workflows are covered, including async task status. Minor gaps include no explicit cancel/delete task operation, but the essential lifecycle is present.
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 Connectors
Speech, transcription, voice agents, Trace, Recap, dubbing and narration with browser OAuth.
Pronunciation assessment, phoneme scoring, speaker voice ID, audio transcription, speech synthesis.
Pronunciation scoring, speech-to-text, and text-to-speech for language learning
Hosted speech-to-text + speech emotion/tone analysis for agents. No install; trial keys built in.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides speech recognition and synthesis tools via SaluteSpeech API, enabling AI assistants to handle voice input and output.4MIT
- AlicenseBqualityFmaintenanceEnables speech recognition, synthesis, and voice listing via Yandex SpeechKit API through 5 tools.546MIT
- AlicenseNot gradedqualityCmaintenanceEnables speech-to-text and text-to-speech conversion using OpenAI-compatible APIs. Supports customizable models, voices, and output directories.GPL 3.0

leanvox-mcpofficial
AlicenseNot gradedqualityDmaintenanceEnables text-to-speech generation, voice cloning, dialogue creation, and other TTS operations through natural language in MCP-compatible AI assistants.15MIT