Skip to main content
Glama
theYahia

salutespeech-mcp

by theYahia

SaluteSpeech MCP — распознавание и синтез русской речи для ИИ-ассистента

Если вы искали, как расшифровать созвон или голосовое сообщение в текст, озвучить текст голосом Сбера или подключить русский speech-to-text к Claude без собственного бэкенда — это оно. 5 инструментов поверх Sber SaluteSpeech API: распознавание речи (STT) и синтез речи (TTS).

npm License: MIT

Часть серии 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/health

Related MCP server: @theyahia/yandex-speechkit-mcp

Авторизация

Три варианта (проверяются по порядку):

Переменная

Формат

SALUTESPEECH_API_KEY

Base64 от строки client_id:client_secret

SALUTE_AUTH_KEY

То же самое (устаревший алиас)

SALUTE_SPEECH_CLIENT_ID + SALUTE_SPEECH_CLIENT_SECRET

Сырые учётные данные (кодируются автоматически)

OAuth-токены запрашиваются и обновляются автоматически. Scope по умолчанию — SALUTE_SPEECH_PERS (физлица); для корпоративных аккаунтов задайте SALUTE_SPEECH_SCOPE (SALUTE_SPEECH_CORP — постоплата, SALUTE_SPEECH_B2B — предоплата). Учётные данные выдаются на developers.sber.ru.

Инструменты (5)

Инструмент

Описание

recognize_speech

Распознавание речи из аудио в Base64

synthesize_speech

Синтез речи, возвращает аудио в Base64

list_models

Список моделей распознавания и голосов синтеза

get_task_status

Статус асинхронной задачи распознавания

recognize_file

Распознавание речи из локального файла по пути

Навыки (Skills)

  • skill-transcribe — пошаговый сценарий расшифровки аудио

  • skill-synthesize — пошаговый сценарий синтеза речи

Примеры

Расшифруй аудиофайл /tmp/meeting.wav
Озвучь «Привет, мир» голосом Bys_24000 в формате wav16
Покажи доступные голоса

Ограничения

recognize_speech и recognize_file работают через синхронный эндпоинт с лимитом 2 МБ / 1 минута аудио (файл больше — HTTP 413). Для многоканального аудио распознаётся только первый канал. Длинные записи требуют асинхронного сценария (data:uploadspeech:async_recognizetask:getdata: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


Часть WWmcp · Telegram: @vhodvai

Available Tools

5 tools
get_task_statusA

Check status of an async SaluteSpeech recognition task by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID returned from async recognition request

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by model type: recognition, synthesis, or allall

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoRecognition language (ru-RU, en-US, kk-KZ)ru-RU
file_pathYesAbsolute path to the audio file to recognize
sample_rateNoSample rate in Hz — required for headerless .pcm/.alaw/.ulaw files (e.g. 16000, 8000)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoRecognition language (ru-RU, en-US, kk-KZ)ru-RU
audio_base64YesAudio data in Base64 encoding
content_typeNoAudio 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

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to synthesize (max 4000 chars incl. spaces/markup)
voiceNoVoice 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
formatNoAudio container/codec: opus, wav16, pcm16, alaw (sample rate comes from the voice suffix)opus

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv1.2.0
    • Changedrecognize_file1 field changed
      • addedInput schema / properties / sample_rate
        Added value: +{
        +  "description": "Sample rate in Hz — required for headerless .pcm/.alaw/.ulaw files (e.g. 16000, 8000)",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
    • Changedrecognize_speech1 field changed
      • changedInput schema / properties / content_type / description
        Previous 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."
    • Changedsynthesize_speech5 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"Audio format: opus, wav16, pcm16"New value: +"Audio container/codec: opus, wav16, pcm16, alaw (sample rate comes from the voice suffix)"
      • changedInput schema / properties / text / description
        Previous value: -"Text to synthesize into speech"New value: +"Text to synthesize (max 4000 chars incl. spaces/markup)"
      • addedInput schema / properties / text / maxLength
        Added value: +4000
      • addedInput schema / properties / text / minLength
        Added value: +1
      • changedInput schema / properties / voice / description
        Previous 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."
  2. 5 tool updatesv1.1.0
    • First observedget_task_status
    • First observedlist_models
    • First observedrecognize_file
    • First observedrecognize_speech
    • First observedsynthesize_speech

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

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.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: recognize_*, get_*, list_*, synthesize_*. No mixed conventions or vague verbs.

Tool Count5/5

Five tools is well-scoped for a speech API covering recognition, synthesis, model listing, and async task management. Each tool earns its place.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers