Skip to main content
Glama
YuvrajSinghBhadoria2

OpenCode Voice MCP Server

🎀 OpenCode Voice MCP Server

Voice Input for AI Coding Assistants

License: MIT npm version GitHub stars GitHub issues MCP Compatible

Speak your prompts. No typing required.

Installation β€’ Quick Start β€’ Tools β€’ Configuration β€’ Architecture β€’ Contributing


✨ Features

Feature

Description

🎀 Voice Recording

Record audio from microphone with configurable duration

πŸ—£οΈ Speech-to-Text

Transcribe using local Whisper model (100% offline)

⌨️ Auto-Typing

Type transcribed text at cursor position

πŸ”’ Privacy First

No cloud API β€” audio never leaves your machine

🌍 Multi-Language

Support for 99+ languages via Whisper

πŸ”Œ MCP Standard

Works with OpenCode, Claude Code, Cursor, and more

Related MCP server: Claude Voice Commands

πŸ“¦ Installation

# Install globally
npm install -g @opencode-ai/voice-mcp

# Or use with npx (no install required)
npx @opencode-ai/voice-mcp

Prerequisites

# Install recording tool
brew install sox

# Install transcription engine
pip install faster-whisper
# Install recording tool
sudo apt install sox

# Install transcription engine
pip install faster-whisper
# Install FFmpeg (via scoop)
scoop install ffmpeg

# Install transcription engine
pip install faster-whisper

πŸš€ Quick Start

Step 1: Configure MCP Server

Add to your MCP config file:

Tool

Config Location

OpenCode

~/.config/opencode/config.json

Claude Code

~/.claude/claude_desktop_config.json

Cursor

~/.cursor/mcp.json

{
  "mcpServers": {
    "voice": {
      "command": "npx",
      "args": ["-y", "@opencode-ai/voice-mcp"]
    }
  }
}

Step 2: Restart Your Tool

Restart OpenCode, Claude Code, or Cursor to load the MCP server.

Step 3: Use Voice Input

@voice voice_transcribe
@voice voice_type
@voice voice_status

πŸ› οΈ Tools

voice_transcribe

Record audio from microphone and transcribe to text.

{
  "name": "voice_transcribe",
  "arguments": {
    "duration": 10,
    "language": "en"
  }
}

Parameter

Type

Default

Description

duration

number

10

Recording duration in seconds

language

string

auto

Language code (e.g., en, es, fr)

Returns: Transcribed text as string.


voice_type

Record audio, transcribe to text, and type it at the cursor position.

{
  "name": "voice_type",
  "arguments": {
    "duration": 10,
    "language": "en"
  }
}

Parameter

Type

Default

Description

duration

number

10

Recording duration in seconds

language

string

auto

Language code

Returns: Confirmation message with typed text.


voice_status

Check if voice recording and transcription are available.

{
  "name": "voice_status",
  "arguments": {}
}

Returns:

{
  "recording": "rec",
  "transcription": "faster-whisper (local)",
  "platform": "darwin",
  "ready": true
}

βš™οΈ Configuration

Environment Variables

Variable

Description

Default

WHISPER_MODEL

Whisper model size

base

WHISPER_DEVICE

Device to use (cpu, cuda, auto)

auto

WHISPER_COMPUTE

Compute type (int8, float16, float32)

int8

Model Sizes

Model

Size

Speed

Accuracy

VRAM

tiny

~75MB

⚑⚑⚑⚑

⭐⭐

~1GB

base

~150MB

⚑⚑⚑

⭐⭐⭐

~1GB

small

~500MB

⚑⚑

⭐⭐⭐⭐

~2GB

medium

~1.5GB

⚑

⭐⭐⭐⭐⭐

~5GB

large-v3

~3GB

🐌

⭐⭐⭐⭐⭐

~10GB

Recommendation: Use base for best balance of speed and accuracy.

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        MCP Client                               β”‚
β”‚                  (OpenCode / Claude Code / Cursor)              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚ JSON-RPC
                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Voice MCP Server                             β”‚
β”‚                     (Node.js)                                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚ voice_record β”‚  β”‚voice_transcribeβ”‚ β”‚  voice_type  β”‚         β”‚
β”‚  β”‚    Tool      β”‚  β”‚     Tool     β”‚  β”‚    Tool      β”‚         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚         β”‚                 β”‚                 β”‚                   β”‚
β”‚         β–Ό                 β–Ό                 β–Ό                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚              Audio Recording Layer                   β”‚       β”‚
β”‚  β”‚         (sox / ffmpeg / macOS rec)                  β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                            β”‚                                    β”‚
β”‚                            β–Ό                                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚           Transcription Engine                      β”‚       β”‚
β”‚  β”‚      (faster-whisper / OpenAI API)                  β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                            β”‚                                    β”‚
β”‚                            β–Ό                                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚              Output Layer                           β”‚       β”‚
β”‚  β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚       β”‚
β”‚  β”‚    β”‚ Return Text β”‚  β”‚ Type at Cursor      β”‚        β”‚       β”‚
β”‚  β”‚    β”‚   (MCP)     β”‚  β”‚ (osascript/xdotool) β”‚        β”‚       β”‚
β”‚  β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  User   │───▢│  Micro- │───▢│  Whisper    │───▢│  Text   β”‚
β”‚  Speaks β”‚    β”‚  phone  β”‚    β”‚  Transcribe β”‚    β”‚  Output β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚              β”‚               β”‚                β”‚
     β”‚              β”‚               β”‚                β”‚
     β–Ό              β–Ό               β–Ό                β–Ό
  "Hello      Records 16kHz    Processes with    Returns text
   world"     mono audio      base model        or types it

πŸ”§ Development

Setup

# Clone repository
git clone https://github.com/YuvrajSinghBhadoria2/opencode-voice-mcp.git
cd opencode-voice-mcp

# Install dependencies
npm install

# Build
npm run build

# Run in development
npm run dev

Project Structure

opencode-voice-mcp/
β”œβ”€β”€ src/
β”‚   └── index.ts          # MCP server implementation
β”œβ”€β”€ dist/
β”‚   └── index.js          # Compiled output
β”œβ”€β”€ package.json          # Package configuration
β”œβ”€β”€ tsconfig.json         # TypeScript config
β”œβ”€β”€ build.sh              # Build script
└── publish.sh            # npm publish script

Available Scripts

Command

Description

npm run build

Compile TypeScript to JavaScript

npm run dev

Run in development mode with tsx

npm run start

Run compiled server

./publish.sh

Build and publish to npm

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feat/amazing-feature)

  3. Commit your changes (git commit -m 'feat: add amazing feature')

  4. Push to the branch (git push origin feat/amazing-feature)

  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices

  • Add tests for new features

  • Update documentation as needed

  • Use conventional commit messages

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments


Built with ❀️ for the developer community

Report Bug β€’ Request Feature β€’ Discussions

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Voice-powered bug reporting with 13 MCP tools. Record bugs by talking; let AI find and fix them.

  • User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YuvrajSinghBhadoria2/opencode-voice-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server