Teleprompter
Enables an optional OpenAI voice/streaming transcription provider: the server mints short-lived connection tokens, and the browser connects directly to OpenAI over WebRTC using gpt-live-transcribe with selected-language hints, minimal delay, and silence-based turn detection.
Click on "Deploy 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., "@TeleprompterOpen the Teleprompter with this script: Welcome everyone to our quarterly meeting."
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.
Teleprompter for ChatGPT and Codex
A small multilingual teleprompter implemented as an MCP App. An assistant can open your script in a centered reader, and you can also paste text directly into the embedded UI. Licensed under MIT.
Deutsche Anleitung · Privacy · Validation
Languages
The interface follows the macOS app language or the MCP host/browser locale. English, German, French and Spanish translations are included; other interface languages fall back to English. The Speech language setting is independent of the interface language and defaults to the system/host language.
The script is never translated. Select its language before starting to read. Available recognition languages depend on the selected provider. Chinese and Japanese use word segmentation; right-to-left scripts keep their text direction. See localization for supported behavior and contribution instructions.
Related MCP server: oto
Run locally
Requires Bun 1.4.2 or newer.
bun install --frozen-lockfile
bun run check
bun run startOpen http://127.0.0.1:4317 for the local iframe preview. The MCP endpoint is http://127.0.0.1:4317/mcp. On macOS, you can double-click start.command. The preview uses the official MCP Apps AppBridge with the same bundled UI served to real hosts. It is a development host, not ChatGPT itself.
What it does
Exact script transfer from the chat, or direct paste into the app.
Narrow centered text, adjustable font and column width.
Locale-aware word segmentation and alignment using interim transcription results.
Manual sentence navigation, word selection, pause and Auto-Scroll.
Audio level and script-match indicators.
Stage directions in square brackets remain visible and do not advance voice tracking.
Browser speech recognition, and optional OpenAI streaming transcription.
Microphone access is requested only when Start is clicked in voice mode. Pausing, editing, switching mode, hiding the page, or closing the app stops microphone capture. Arrow keys select sentences; Space pauses/resumes when focus is in the reading area; Escape pauses.
The meter indicates microphone level and recent script matches. It is not a pronunciation assessment, and script-match confidence is not an ASR confidence score. Accuracy and latency depend on the provider, microphone, network, text and host. No fixed latency or perfect recognition is promised.
Connect to Codex
Keep the server running. Add its URL to your MCP settings, or open this directory as a trusted project and use the included local plugin marketplace. The portable plugin consists of plugin.json, mcp.json and skills/teleprompter/SKILL.md.
The bundled MCP configuration targets loopback. An MCP Apps-capable host renders the reader when open_teleprompter is called. Text-only clients receive its text summary. UI rendering and microphone permissions must be verified in the particular desktop/web host.
Local plugin discovery can require restarting the desktop app. The source package does not modify your global Codex settings or restart your app. See connection and deployment.
Connect to ChatGPT
ChatGPT must be able to reach the MCP server through an HTTPS endpoint or Secure MCP Tunnel. Loopback alone is insufficient for the cloud connection. After connecting the server as a custom plugin, ask:
Open the Teleprompter with this script: …
For public plugin distribution, deploy a stable HTTPS endpoint, update mcp.json, configure a unique widget origin and public privacy information, then complete OpenAI's submission/review process. See connection and deployment.
Optional OpenAI voice
Copy .env.example to .env and configure OPENAI_API_KEY on your own server. Bun loads the local environment file. The app then enables OpenAI in its provider menu. No permanent key is entered in the widget.
The server mints a token with a 60-second connection window. The browser connects directly to OpenAI over WebRTC using gpt-live-transcribe, selected-language hints and the minimal delay setting. Client-side silence detection commits turns; continuous turns are bounded to eight seconds. Sessions stop after 30 minutes and may be restarted. Token creation is limited to 12 attempts per hour per server instance.
For remote paid voice, configure MCP_AUTH_TOKEN and authentication in your MCP client. The bundled bearer guard supports private/self-hosted use. A public multi-user release needs OAuth or another suitable authenticated gateway, per-user quotas, and the operator's budget and privacy configuration. Do not publish an unprotected token minting service.
Without an OpenAI key, supported browsers can use their own speech service. That service may send audio to the browser vendor. If microphone access or recognition is unavailable, use Auto-Scroll or the native macOS Teleprompter.
Development
bun run check
bun run archiveNo frontend framework, CDN, analytics, database, permanent audio recording, or script file storage is required. Generated bundles and local credentials are excluded from the source archive.
The native Swift version is a separate project. This app does not include private scripts, native preferences or Keychain credentials from that app.
See architecture, contributing and security.
This server cannot be deployed
Maintenance
Related MCP Connectors
Text to speech for your AI. Your AI can send text to Doc Player to read it aloud. You will see a reader window with the text and you can control the playback sentence by sentence. Find an example here: https://documentplayer.com/connect-ai/
Turn any article, document, or chat reply into a one-word-at-a-time RSVP reading session.
Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.
Create short-form scripts and paced audio, then hand clips to ScriptSeen's on-device video maker.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables text-to-speech conversion with smart language detection (using Google TTS for Chinese) and audio file playback with playback controls for Claude Desktop.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables text-to-speech conversion using OpenAI's TTS API, with inline audio playback and history within MCP hosts like Claude.4 npmBSD 2-Clause "Simplified"
- AlicenseAqualityDmaintenanceEnables AI agents to present interactive code walkthroughs with voice narration, opening files, highlighting code, and showing inline explanations with synchronized text-to-speech.516 npmMIT
- AlicenseNot gradedqualityBmaintenanceLets Claude convert its replies into natural spoken scripts and play them with pause, resume, and rewind controls, plus voice and engine selection.4 npmMIT