MCP Server Voice Status Reports with OpenAI TTS
Receive real-time voice status updates from an MCP server using OpenAI TTS to monitor agent progress and confirm task completion.
npx -y @tomekkorbak/voice-status-report-mcp-serverOverview
This MCP (Model Context Protocol) server converts short textual status updates from an agent into spoken audio using OpenAI’s text-to-speech API. It exposes a simple tool that MCP-enabled agents (for example, Claude or Cursor agents) can call to read progress notifications aloud — think “started cloning repo”, “running tests”, or “task complete”. The goal is to let you hand off a long-running job to an agent and receive audible progress reports without switching back to the UI constantly.
The server is “batteries included”: it provides a single, well-documented tool (summarize) and sensible defaults for voice, speed, and a preconfigured instruction prompt that many MCP clients automatically inject into the system message. It works with local MCP clients (like Claude Desktop) or any MCP-supporting environment, and requires an OpenAI API key for TTS synthesis.
Features
- Real-time conversion of short status messages to speech via OpenAI TTS
- Single MCP tool: summarize(text: str) — designed to be called from model code
- Configurable voice selection, playback speed, optional “ding” sound before each message
- Command-line interface for easy local deployment and integration with MCP clients
- Default calm, friendly speaking style with optional custom instructions
- Cross-platform playback (relies on local audio playback on the host machine)
Installation / Configuration
Install from PyPI:
Run the server (requires OPENAI_API_KEY in environment):
Example: integrate with Claude for Desktop (macOS or Windows). Update your claude_desktop_config.json:
If you want to pass non-default CLI flags, include them in args:
"args":
Command-line Options
| Option | Purpose | Example |
|---|---|---|
| –ding | Play a short ding before each spoken message | –ding |
| –voice [VOICE] | Select voice (alloy, ash, coral, echo, fable, onyx, nova, sage, shimmer) | –voice nova |
| –speed SPEED | Speech speed (0.5–4.0) — higher is faster | –speed 2.5 |
| –instructions TEXT | Override default voice instructions for TTS model | –instructions “calm and clear” |
Available Tools
- summarize(text: str)
Description: Take a string and synthesize spoken audio with OpenAI TTS, then play it locally. Designed for brief status updates and confirmations. Typical usage pattern for an agent is to call summarize intermittently to report progress.
Example tool signature (conceptual)
"""Synthesize and play text as audio via OpenAI TTS."""
Use Cases
- Background monitoring: Tell an agent to run a multi-step task (e.g., run tests, deploy), then continue working while the agent announces milestones: “Tests passed — 12 tests successful”, “Deployment started — creating containers”.
- Immediate confirmations: After a code edit or CLI change, the agent can confirm actions: “Committed changes to feature/login”, “Pushed branch to remote”.
- Hands-free workflows: While performing manual tasks, receive verbal updates when the agent needs your attention (e.g., “Conflict detected during merge — user intervention required”).
- Accessibility: Provide audio feedback for users who prefer auditory notifications over visual messages.
Concrete example (agent instructs tool):
- Agent calls summarize(“Starting repository clone…”) when cloning begins.
- Later calls summarize(“Clone complete. Running unit tests.”) and then summarize(“All tests green — ready for review.”) when finished.
Notes & Requirements
- Requires an OpenAI API key with TTS access. Set via OPENAI_API_KEY environment variable or through your MCP environment.
- Costs and rate limits follow OpenAI TTS policies — monitor usage.
- The server plays audio locally; ensure the host machine has audio output available.
- Licensed under MIT (see repository for details).
Repository and source: https://github.com/tomekkorbak/voice-status-report-mcp-server
Common Issues & Solutions
I noticed that our project is listed on Spark but we haven't claimed it yet. This could lead to missed opportunities for visibility and analytics.
I ran into this too! Claiming the listing on Spark is important as it allows us to verify our project and gain access to valuable features like download analytics and badges. It helps establish credibility for our project in the community. Just follow the steps provided in the issue to claim it. If you haven't already, make sure to install `@ChromeDevTools/chrome-devtools-mcp` to help manage and monitor your project effectively. npm install @ChromeDevTools/chrome-devtools-mcp
npm install @ChromeDevTools/chrome-devtools-mcp