Skip to main content
Glama

whisper-telegram-mcp

转录与语音 — 通过 Telegram 为 Claude 提供双向语音功能

CI PyPI Downloads Python License: MIT MCP Ko-fi

Demo: send a voice note, get a voice reply

一个 MCP 服务器,通过 Telegram 为 Claude 提供双向语音功能:使用 Whisper 转录收到的语音消息,并使用合成语音进行回复。适用于 Claude Desktop、Claude Code 以及任何兼容 MCP 的客户端。

功能特性

  • 转录本地音频文件 -- 支持 OGG、WAV、MP3、FLAC 等格式

  • 转录 Telegram 语音消息 -- 传入 file_id 即可获取文本

  • 将文本转为语音笔记 -- 合成语音并以 OGG 格式发送(在 Telegram 中显示为语音笔记)

  • 两种转录后端 -- 本地 faster-whisper(免费、私密)或 OpenAI Whisper API(云端)

  • 自动模式 -- 优先尝试本地转录,失败后自动回退到 OpenAI

  • 语言检测 -- 自动检测或指定 ISO-639-1 代码

  • 词级时间戳 -- 可选的精细时间戳

Related MCP server: MCP Video & Audio Text Extraction Server

前置要求

功能

要求

转录(本地)

无 — 通过 [local] 扩展包内置了 faster-whisper

转录(云端)

OPENAI_API_KEY 环境变量

语音回复 — Kokoro(最佳质量)

Docker — 运行 docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest

语音回复 — OpenAI TTS(回退)

OPENAI_API_KEY 环境变量

语音回复 — macOS say(最后手段)

仅限 Mac,无需设置

Kokoro 需要 Docker。 如果未运行 Docker,语音回复将自动回退到 OpenAI TTS 或 macOS 的 say 命令。

快速开始

使用 Claude Code 在 30 秒内完成设置

最快的入门方式 — 只需告诉 Claude Code 为你设置:

  1. 添加到你的 .mcp.json (Claude Code) 或 claude_desktop_config.json (Claude Desktop):

{
  "mcpServers": {
    "whisper-telegram-mcp": {
      "command": "uvx",
      "args": ["whisper-telegram-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here"
      }
    }
  }
}
  1. 重启 Claude 并说:"Set up my Telegram bot for voice transcription" — Claude 将引导你通过 BotFather 创建机器人并完成所有配置。

使用 uvx 一键运行

uvx whisper-telegram-mcp

无需安装 -- uvx 会处理一切。

或使用 pip 安装

pip install "whisper-telegram-mcp[all]"
whisper-telegram-mcp

Telegram 机器人设置

  1. 打开 Telegram 并给 @BotFather 发消息

  2. 发送 /newbot 并按照提示创建机器人

  3. 复制 Token(格式如 1234567890:ABCdef...)

  4. 将 TELEGRAM_BOT_TOKEN 添加到你的 MCP 配置环境变量中(见下文)

  5. 给你的机器人发消息以开始 — 它只会响应已批准的用户

Claude Telegram 插件处理访问控制。请参阅其文档了解配对/白名单设置。

集成

Claude Desktop

添加到你的 Claude Desktop 配置文件 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "whisper-telegram-mcp": {
      "command": "uvx",
      "args": ["whisper-telegram-mcp"],
      "env": {
        "WHISPER_MODEL": "base",
        "WHISPER_BACKEND": "auto",
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here"
      }
    }
  }
}

Claude Code

添加到你项目的 .mcp.json:

{
  "mcpServers": {
    "whisper-telegram-mcp": {
      "command": "uvx",
      "args": ["whisper-telegram-mcp"],
      "env": {
        "WHISPER_MODEL": "base",
        "WHISPER_BACKEND": "auto",
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here"
      }
    }
  }
}

工具

工具

描述

transcribe_audio

将本地音频文件(OGG、WAV、MP3 等)转录为文本

transcribe_telegram_voice

通过 file_id 下载并转录 Telegram 语音消息

speak_text

将文本转换为语音 → OGG/Opus 文件(在 Telegram 中作为语音笔记播放)

list_models

列出可用的 Whisper 模型大小及其速度/准确度信息

check_backends

检查哪些后端(本地/OpenAI)可用并已配置

transcribe_audio

file_path: str        # Absolute path to audio file
language: str | None  # ISO-639-1 code (e.g. "en"), None = auto-detect
word_timestamps: bool # Include word-level timestamps (default: false)

transcribe_telegram_voice

file_id: str          # Telegram voice message file_id
bot_token: str | None # Bot token (falls back to TELEGRAM_BOT_TOKEN env var)
language: str | None  # ISO-639-1 code, None = auto-detect
word_timestamps: bool # Include word-level timestamps (default: false)

speak_text

将文本转换为 OGG/Opus 音频文件。自动选择最佳的可用 TTS 后端。

text: str             # Text to synthesise
voice: str            # Voice name (default: "af_sky")
output_path: str|None # Optional path for output .ogg file

TTS 后端(按优先级排序):

后端

成本

质量

设置

Kokoro (本地)

免费

自然,高质量

手动启动(见下文)

OpenAI TTS (云端)

~$0.015/1k 字符

高质量

OPENAI_API_KEY 环境变量

macOS say (回退)

免费

机械感

仅限 Mac,无需设置

在 auto 模式(默认)下,服务器优先尝试 Kokoro,然后是 OpenAI,最后是 macOS say。可通过 TTS_BACKEND 环境变量进行配置。

在本地启动 Kokoro:

Kokoro FastAPI 不在 PyPI 上 — 请在运行 MCP 服务器之前启动它:

# Docker (simplest, recommended)
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest

# Apple Silicon (GPU-accelerated)
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu-mac:latest

# From source
git clone https://github.com/remsky/Kokoro-FastAPI && cd Kokoro-FastAPI && ./start-cpu.sh

运行后,MCP 服务器会自动在 http://127.0.0.1:8880/v1 检测到它。可通过 KOKORO_BASE_URL 环境变量覆盖。

Kokoro 语音(主要):

语音

口音

风格

af_sky

美式

女性(默认)

af_bella

美式

女性

af_sarah

美式

女性

af_nicole

美式

女性

am_adam

美式

男性

am_michael

美式

男性

bf_emma

英式

女性

bf_isabella

英式

女性

bm_george

英式

男性

bm_lewis

英式

男性

OpenAI 语音(回退):

语音

风格

alloy

中性

echo

男性

fable

叙述

onyx

深沉男性

nova

女性

shimmer

轻柔女性

当回退时,Kokoro 语音名称会自动映射到最接近的 OpenAI 或 macOS 等效项。

返回:

{
  "file_path": "/tmp/tmpXXX.ogg",
  "size_bytes": 16555,
  "backend": "kokoro",
  "voice": "af_sky",
  "success": true,
  "error": null
}

将返回的 file_path 作为 Telegram 附件发送,它将显示为原生语音笔记。

转录响应格式

所有转录工具返回:

{
  "text": "Hello, this is a voice message.",
  "language": "en",
  "language_probability": 0.98,
  "duration": 3.5,
  "segments": [
    {"start": 0.0, "end": 3.5, "text": "Hello, this is a voice message."}
  ],
  "backend": "local",
  "success": true,
  "error": null
}

配置

所有配置均通过环境变量进行:

变量

默认值

描述

WHISPER_BACKEND

auto

auto, local, 或 openai

WHISPER_MODEL

base

Whisper 模型大小(见下文)

OPENAI_API_KEY

--

openai 转录和 TTS 后端必需

TELEGRAM_BOT_TOKEN

--

transcribe_telegram_voice 必需

WHISPER_LANGUAGE

自动检测

ISO-639-1 语言代码

TTS_BACKEND

auto

auto, kokoro, openai, 或 macos

TTS_VOICE

af_sky

speak_text 的默认语音(Kokoro 语音名称)

KOKORO_BASE_URL

http://127.0.0.1:8880/v1

Kokoro FastAPI 基础 URL

工作原理

                         MCP Client (Claude)
                              |
                         [MCP stdio]
                              |
                    whisper-telegram-mcp
                    /         |         \
                   /          |          \
      transcribe_audio  transcribe_     speak_text
                        telegram_voice      |
              |               |          auto_tts()
              |         [Bot API DL]    /    |    \
              +--------+------+     Kokoro OpenAI macOS
                       |            (local) (cloud) (say)
                 auto_transcribe()      |
                  /           \      .ogg file
           LocalBackend    OpenAIBackend
           (faster-whisper)  (Whisper API)
  1. Claude 通过 MCP(stdio 传输)发送工具调用

  2. 对于 Telegram 语音消息,文件通过 Bot API 下载

  3. auto_transcribe() 选择最佳的可用转录后端

  4. auto_tts() 选择最佳的可用 TTS 后端(Kokoro -> OpenAI -> macOS)

  5. 结果以结构化 JSON 形式返回

本地 vs OpenAI

本地 (faster-whisper)

OpenAI API

成本

免费

$0.006/分钟

隐私

所有数据保留在设备上

音频发送至 OpenAI

速度

~1-10秒(取决于模型)

~1-3秒

设置

自动(首次使用时下载模型)

需要 OPENAI_API_KEY

准确度

base 或更大模型表现极佳

极佳

离线

是

否

模型大小

模型

参数

速度

准确度

显存 (VRAM)

tiny

39M

最快

最低

~1GB

base

74M

快

好

~1GB

small

244M

中等

更好

~2GB

medium

769M

慢

高

~5GB

large-v3

1550M

最慢

最高

~10GB

turbo

~800M

快

高

~6GB

仅英语变体(tiny.en, base.en, small.en, medium.en)在英语转录上略微更准确。

隐私与数据

  • 本地后端 (faster-whisper):音频保留在你的设备上。没有任何数据离开你的机器。

  • OpenAI 后端:音频根据其 数据保留政策 发送至 OpenAI API

  • 临时文件:从 Telegram 下载的音频写入 /tmp 并在转录后立即删除

  • 日志:仅输出到 stderr — 绝不会记录音频内容或凭据

开发

git clone https://github.com/abid-mahdi/whisper-telegram-mcp.git
cd whisper-telegram-mcp
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run unit tests
pytest tests/ -v -m "not integration"

# Run integration tests (downloads ~150MB model on first run)
pytest tests/ -m integration -v

# Run with coverage
pytest tests/ --cov=src/whisper_telegram_mcp --cov-report=term-missing

MCP Inspector

uvx mcp dev src/whisper_telegram_mcp/server.py

贡献

  1. Fork 本仓库

  2. 创建功能分支 (git checkout -b feat/amazing-feature)

  3. 运行测试 (pytest tests/ -v -m "not integration")

  4. 使用规范化提交 (feat:, fix:, docs: 等)

  5. 提交 Pull Request

许可证

MIT

Available Tools

5 tools
check_backendsA

Check which transcription backends are available and configured.

Call this first to verify your setup before transcribing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the tool's purpose (checking backend availability) and suggests it's a verification step, but doesn't disclose behavioral traits like whether it requires authentication, has rate limits, returns structured data, or what 'available and configured' entails. The description adds basic context but lacks operational details.

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 highly concise and well-structured: two sentences that front-load the purpose and follow with clear usage guidance. Every sentence earns its place by providing essential information without redundancy or filler.

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?

Given the tool's simplicity (0 parameters, output schema exists), the description is reasonably complete. It explains what the tool does and when to use it, which is sufficient for a no-parameter verification tool. However, it could be more complete by hinting at what the output contains (e.g., list of backends, status) despite the output schema existing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage. The description doesn't need to add parameter details, so it appropriately focuses on tool purpose and usage. A baseline of 4 is applied since no parameters exist, and the description doesn't attempt to explain nonexistent parameters.

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 tool's purpose with specific verbs ('check which transcription backends are available and configured') and distinguishes it from siblings like transcribe_audio or list_models by focusing on backend availability verification rather than transcription or model listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Call this first to verify your setup before transcribing.' This clearly indicates when to use this tool (as an initial setup check) versus when to use sibling tools like transcribe_audio (for actual transcription).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsB

List available Whisper model sizes with performance characteristics.

Configure the active model via the WHISPER_MODEL environment variable. Default is 'base' -- a good balance of speed and accuracy for voice messages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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. It discloses that the tool lists models with performance characteristics, which implies read-only behavior, and mentions environment variable configuration context. However, it doesn't detail behavioral traits like whether it requires authentication, rate limits, error conditions, or the format of returned data. It adds some context but lacks comprehensive behavioral disclosure.

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?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by two sentences providing useful context. There's minimal waste, though the second sentence about environment variable configuration could be more tightly integrated. Overall, it's efficient and well-structured.

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?

Given the tool's low complexity (0 parameters, no annotations, but has an output schema), the description is reasonably complete. It explains what the tool does and provides context about model configuration. With an output schema present, it doesn't need to detail return values. However, it could better address usage scenarios or integration with sibling tools to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and context. This meets the baseline of 4 for zero-parameter tools, as it adds value without redundant information.

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's purpose: 'List available Whisper model sizes with performance characteristics.' It specifies the verb ('List') and resource ('Whisper model sizes'), but doesn't explicitly differentiate from sibling tools like 'check_backends' or 'transcribe_audio'. The purpose is specific but lacks sibling comparison.

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?

The description provides no guidance on when to use this tool versus alternatives. It mentions configuring the active model via an environment variable and the default, but doesn't explain when an agent should call list_models (e.g., before transcription to choose a model, for system setup, etc.) or how it relates to sibling tools like transcribe_audio. No explicit when/when-not or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

speak_textA

Convert text to speech and return an OGG/Opus audio file path.

Plays as a native voice note in Telegram when sent as an attachment.

TTS backends (in priority order):

  1. Kokoro (local, free, natural-sounding) -- auto-starts via uvx kokoro-fastapi

  2. OpenAI TTS (cloud, requires OPENAI_API_KEY, ~$0.015/1k chars)

  3. macOS say (Mac only fallback, sounds robotic)

Configure via TTS_BACKEND env var: "auto" | "kokoro" | "openai" | "macos"

Args: text: Text to synthesise. voice: Voice name. Kokoro voices: af_sky, af_bella, af_sarah, am_adam, am_michael, bf_emma, bm_george, bm_lewis. OpenAI voices: alloy, echo, fable, onyx, nova, shimmer. Configure default via TTS_VOICE env var. output_path: Optional absolute path for the output .ogg file.

Returns: dict with: file_path (absolute .ogg path), backend, voice, success, error

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
voiceNoaf_sky
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels by detailing multiple behavioral aspects: it lists TTS backends with priority order, cost implications (OpenAI TTS pricing), platform dependencies (macOS fallback), configuration via environment variables, and return format specifics. This goes well beyond basic function description.

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?

The description is well-structured with clear sections (purpose, use case, backends, configuration, args, returns) and efficiently conveys essential information. It could be slightly more concise by integrating some details (e.g., backend priorities) more tightly, but overall it's front-loaded and wastes no sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, 0% schema coverage, but an output schema, the description is highly complete. It covers purpose, usage, behavioral details, parameter semantics, and return values, making the output schema redundant for understanding. No gaps remain given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description fully compensates by explaining all three parameters: 'text' (text to synthesise), 'voice' (with specific voice names for each backend and default configuration), and 'output_path' (optional absolute path). It adds crucial context like default values and backend-specific options not in the schema.

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 tool's purpose: 'Convert text to speech and return an OGG/Opus audio file path.' It specifies the exact action (convert text to speech), output format (OGG/Opus audio file), and distinguishes it from siblings like transcription tools by focusing on speech synthesis rather than recognition.

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 description provides clear context for when to use this tool (for text-to-speech conversion) and mentions a practical use case ('Plays as a native voice note in Telegram when sent as an attachment'). However, it does not explicitly contrast with sibling tools like 'check_backends' or 'list_models', nor does it specify when not to use it (e.g., vs. transcription tools).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_audioA

Transcribe an audio file to text using Whisper.

Supports OGG (Telegram voice), WAV, MP3, FLAC, and most common audio formats.

Args: file_path: Absolute path to the audio file to transcribe. language: Optional ISO-639-1 language code (e.g. 'en', 'fr'). None = auto-detect. word_timestamps: If True, include word-level timestamps in segments.

Returns: dict with: text, language, language_probability, duration, segments, backend, success, error

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
languageNo
word_timestampsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/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 behavioral disclosure. It effectively describes the tool's core functionality, supported formats, and return structure. It mentions the backend ('Whisper') and outlines the return dictionary fields, which adds valuable context beyond basic operation. However, it doesn't cover potential limitations like file size constraints, processing time, or error conditions beyond the 'error' field.

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 efficiently structured with a clear purpose statement, format support list, parameter explanations, and return value documentation—all in minimal sentences. Each section adds value without redundancy, and information is front-loaded with the core functionality stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, 0% schema coverage, no annotations, but an output schema, the description provides complete context. It explains what the tool does, parameter meanings, return structure, and supported formats. The presence of an output schema means the description doesn't need to detail return value types, and it adequately covers the tool's scope and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description fully compensates by providing detailed semantic explanations for all three parameters: 'file_path' (absolute path), 'language' (ISO-639-1 code with auto-detect default), and 'word_timestamps' (boolean for segment inclusion). Each parameter's purpose and format are clearly documented beyond what the bare schema provides.

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 specific action ('Transcribe an audio file to text') and technology used ('using Whisper'), distinguishing it from sibling tools like 'speak_text' (text-to-speech) and 'transcribe_telegram_voice' (specific format). The verb+resource combination is precise and unambiguous.

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 description provides clear context about supported audio formats (OGG, WAV, MP3, FLAC) and mentions 'most common audio formats,' which helps determine when this tool is appropriate. However, it doesn't explicitly contrast when to use this versus the sibling 'transcribe_telegram_voice' tool or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_telegram_voiceA

Download and transcribe a Telegram voice message.

Downloads the voice message from Telegram, transcribes it, then deletes the temp file.

Args: file_id: The file_id from a Telegram voice message (from the Message object). bot_token: Telegram bot token. Falls back to TELEGRAM_BOT_TOKEN env var. language: Optional ISO-639-1 language code. None = auto-detect. word_timestamps: Include word-level timestamps in segments.

Returns: Same dict structure as transcribe_audio.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
bot_tokenNo
languageNo
word_timestampsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/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 behavioral disclosure. It effectively describes key behaviors: downloading from Telegram, transcribing, and deleting temp files. However, it does not cover aspects like error handling, rate limits, or authentication needs beyond the bot token fallback.

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 well-structured and front-loaded with the core purpose. Each sentence adds value: the first states the action, the second details the process, and the parameter/return sections are clear and necessary. No wasted words.

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?

Given no annotations, 0% schema coverage, and an output schema present, the description is mostly complete. It covers the tool's purpose, process, parameters, and return reference. However, it lacks details on error cases or performance expectations, which could be useful for a tool involving external services.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all parameters: 'file_id' is explained as from a Telegram Message object, 'bot_token' has a fallback, 'language' specifies auto-detect behavior, and 'word_timestamps' clarifies its effect. This goes beyond the basic schema titles.

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 specific action: 'Download and transcribe a Telegram voice message.' It distinguishes from sibling tools like 'transcribe_audio' by specifying the Telegram source and mentions the cleanup step of deleting temp files, which adds unique context.

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 Telegram voice messages but does not explicitly state when to use this tool versus alternatives like 'transcribe_audio'. It mentions the fallback to an environment variable for the bot token, which provides some context, but lacks clear guidance on prerequisites or comparisons with siblings.

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. 5 tool updatesv0.1.0
    • First observedcheck_backends
    • First observedlist_models
    • First observedspeak_text
    • First observedtranscribe_audio
    • First observedtranscribe_telegram_voice

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: check_backends verifies setup, list_models shows model options, speak_text converts text to speech, transcribe_audio processes local audio files, and transcribe_telegram_voice handles Telegram-specific downloads. The descriptions reinforce these distinct roles, making misselection unlikely.

Naming Consistency4/5

Tools follow a consistent snake_case pattern throughout (e.g., check_backends, list_models, speak_text). However, there is a minor deviation in verb style: 'check' and 'list' are informational, while 'speak' and 'transcribe' are action-oriented, but this is reasonable given their distinct functions. The naming remains highly readable and predictable.

Tool Count5/5

With 5 tools, the set is well-scoped for a server focused on Whisper transcription and Telegram integration. Each tool earns its place by covering essential aspects: setup verification, model configuration, text-to-speech, audio transcription, and Telegram-specific handling. This count avoids bloat while providing complete functionality.

Completeness5/5

The tool surface offers complete coverage for the domain of audio transcription and synthesis with Telegram integration. It includes setup checks (check_backends), configuration (list_models), core operations (speak_text, transcribe_audio), and platform-specific handling (transcribe_telegram_voice). There are no obvious gaps; agents can perform end-to-end workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers