whisper-telegram-mcp
whisper-telegram-mcp
전사하고 말하기 — 텔레그램을 통한 Claude용 양방향 음성 기능

텔레그램을 통해 Claude에게 양방향 음성 기능을 제공하는 MCP 서버입니다: Whisper로 수신된 음성 메시지를 전사하고, 합성된 음성으로 답장합니다. Claude Desktop, Claude Code 및 모든 MCP 호환 클라이언트와 작동합니다.
주요 기능
로컬 오디오 파일 전사 -- OGG, WAV, MP3, FLAC 등 지원
텔레그램 음성 메시지 전사 --
file_id를 전달하여 텍스트로 변환텍스트를 음성 메모로 말하기 -- 음성을 합성하여 OGG로 전송 (텔레그램에서 음성 메모로 재생)
두 가지 전사 백엔드 -- 로컬 faster-whisper (무료, 비공개) 또는 OpenAI Whisper API (클라우드)
자동 모드 -- 로컬을 먼저 시도하고 실패 시 OpenAI로 전환
언어 감지 -- 자동 또는 ISO-639-1 코드 지정 가능
단어 단위 타임스탬프 -- 선택적 정밀 타이밍
Related MCP server: MCP Video & Audio Text Extraction Server
사전 요구 사항
기능 | 요구 사항 |
전사 (로컬) | 없음 — |
전사 (클라우드) |
|
음성 답장 — Kokoro (최고 품질) | Docker — |
음성 답장 — OpenAI TTS (대체) |
|
음성 답장 — macOS say (최후의 수단) | Mac 전용, 설정 불필요 |
Kokoro는 Docker가 필요합니다. Docker가 실행 중이지 않으면 음성 답장은 자동으로 OpenAI TTS 또는 macOS
say로 대체됩니다.
빠른 시작
Claude Code로 30초 만에 설정하기
가장 빠른 시작 방법 — Claude Code에게 설정을 요청하세요:
.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"
}
}
}
}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텔레그램 봇 설정
텔레그램을 열고 @BotFather에게 메시지를 보냅니다.
/newbot을 보내고 안내에 따라 봇을 생성합니다.토큰을 복사합니다 (예:
1234567890:ABCdef...).MCP 설정 환경 변수에
TELEGRAM_BOT_TOKEN을 추가합니다 (아래 참조).봇에게 메시지를 보내 시작하세요 — 승인된 사용자에게만 응답합니다.
Claude 텔레그램 플러그인이 액세스 제어를 처리합니다. 페어링/허용 목록 설정은 해당 문서를 참조하세요.
통합
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"
}
}
}
}도구
도구 | 설명 |
| 로컬 오디오 파일(OGG, WAV, MP3 등)을 텍스트로 전사 |
|
|
| 텍스트를 음성으로 변환 → OGG/Opus 파일 (텔레그램에서 음성 메모로 재생) |
| 속도/정확도 정보와 함께 사용 가능한 Whisper 모델 크기 나열 |
| 사용 가능하고 설정된 백엔드(로컬/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 fileTTS 백엔드 (우선순위 순):
백엔드 | 비용 | 품질 | 설정 |
Kokoro (로컬) | 무료 | 자연스러움, 고품질 | 수동 시작 (아래 참조) |
OpenAI TTS (클라우드) | ~$0.015/1k 문자 | 고품질 |
|
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 음성 (기본):
음성 | 억양 | 스타일 |
| 미국 | 여성 (기본값) |
| 미국 | 여성 |
| 미국 | 여성 |
| 미국 | 여성 |
| 미국 | 남성 |
| 미국 | 남성 |
| 영국 | 여성 |
| 영국 | 여성 |
| 영국 | 남성 |
| 영국 | 남성 |
OpenAI 음성 (대체):
음성 | 스타일 |
| 중립 |
| 남성 |
| 내레이션 |
| 낮은 남성 |
| 여성 |
| 부드러운 여성 |
Kokoro 음성 이름은 대체 시 가장 가까운 OpenAI 또는 macOS 음성으로 자동 매핑됩니다.
반환값:
{
"file_path": "/tmp/tmpXXX.ogg",
"size_bytes": 16555,
"backend": "kokoro",
"voice": "af_sky",
"success": true,
"error": null
}반환된 file_path를 텔레그램 첨부 파일로 보내면 기본 음성 메모로 나타납니다.
전사 응답 형식
모든 전사 도구는 다음을 반환합니다:
{
"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 모델 크기 (아래 참조) |
| -- |
|
| -- |
|
| 자동 감지 | ISO-639-1 언어 코드 |
|
|
|
|
|
|
|
| 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)Claude가 MCP(stdio 전송)를 통해 도구 호출을 보냅니다.
텔레그램 음성 메시지의 경우, Bot API를 통해 파일이 다운로드됩니다.
auto_transcribe()가 사용 가능한 최상의 전사 백엔드를 선택합니다.auto_tts()가 사용 가능한 최상의 TTS 백엔드를 선택합니다 (Kokoro -> OpenAI -> macOS).결과가 구조화된 JSON으로 반환됩니다.
로컬 vs OpenAI
로컬 (faster-whisper) | OpenAI API | |
비용 | 무료 | $0.006/분 |
개인정보 | 모든 데이터가 기기에 유지됨 | 오디오가 OpenAI로 전송됨 |
속도 | 모델에 따라 약 1-10초 | 약 1-3초 |
설정 | 자동 (첫 사용 시 모델 다운로드) |
|
정확도 |
| 우수 |
오프라인 | 예 | 아니오 |
모델 크기
모델 | 파라미터 | 속도 | 정확도 | VRAM |
| 39M | 가장 빠름 | 가장 낮음 | ~1GB |
| 74M | 빠름 | 좋음 | ~1GB |
| 244M | 보통 | 더 좋음 | ~2GB |
| 769M | 느림 | 높음 | ~5GB |
| 1550M | 가장 느림 | 가장 높음 | ~10GB |
| ~800M | 빠름 | 높음 | ~6GB |
영어 전용 변형(tiny.en, base.en, small.en, medium.en)은 영어에 대해 약간 더 정확합니다.
개인정보 및 데이터
로컬 백엔드 (faster-whisper): 오디오가 기기에 유지됩니다. 어떤 데이터도 외부로 나가지 않습니다.
OpenAI 백엔드: 오디오는 OpenAI의 데이터 보존 정책에 따라 OpenAI API로 전송됩니다.
임시 파일: 텔레그램에서 다운로드된 오디오는
/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-missingMCP Inspector
uvx mcp dev src/whisper_telegram_mcp/server.py기여
저장소를 포크합니다.
기능 브랜치를 생성합니다 (
git checkout -b feat/amazing-feature).테스트를 실행합니다 (
pytest tests/ -v -m "not integration").커밋 규칙을 준수하여 커밋합니다 (
feat:,fix:,docs:등).풀 리퀘스트를 엽니다.
라이선스
Available Tools
5 toolscheck_backendsA
Check which transcription backends are available and configured.
Call this first to verify your setup before transcribing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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):
Kokoro (local, free, natural-sounding) -- auto-starts via
uvx kokoro-fastapiOpenAI TTS (cloud, requires OPENAI_API_KEY, ~$0.015/1k chars)
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
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| voice | No | af_sky | |
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| language | No | ||
| word_timestamps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| bot_token | No | ||
| language | No | ||
| word_timestamps | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 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.
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.
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.
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.
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.
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.
5 tool updates
v0.1.0- First observed
check_backends - First observed
list_models - First observed
speak_text - First observed
transcribe_audio - First observed
transcribe_telegram_voice
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for Speech-to-Text
Related MCP Servers
- AlicenseBqualityDmaintenanceA MCP server that enables transcription of audio files using OpenAI's Speech-to-Text API, with support for multiple languages and file saving options.11 npm10MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that downloads videos/extracts audio from various platforms like YouTube, Bilibili, and TikTok, then transcribes them to text using OpenAI's Whisper model.11MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables searching YouTube and retrieving high-accuracy video transcripts using local Whisper AI transcription without requiring an API key. It supports single or batch processing and provides transcripts in multiple formats including text, JSON, and SRT.2Apache 2.0
- AlicenseAqualityBmaintenanceMCP server for audio transcription using local faster-whisper or OpenAI Whisper API, enabling multilingual transcription with optional GPT post-processing.358 PyPIMIT