# JuhongPark/mcp-server-pronunciation [Health: Active]

**Category:** 🎓 Education  
**Repository:** https://github.com/JuhongPark/mcp-server-pronunciation  
**GitHub Stars:** 2  
**Views:** 4  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/juhongpark-mcp-server-pronunciation

## Description
Local MCP voice coach with English pronunciation, grammar, fluency, phoneme-level feedback, practice drills, and learner-profile hints. Install via uvx mcp-server-pronunciation@0.3.0.

## Tools
Capabilities this server exposes over MCP:

- **converse** — 
    Record the user speaking, transcribe it, and return the transcript plus quick
    English feedback. This is the primary tool for voice conversations: call it,
    read the transcript + feedback, then respond conversationally in your own
    words — weaving the feedback in naturally or mentioning it only if it matters.

    Recording auto-stops when the user finishes speaking (silence detection).

    Use this tool when:
    - The user wants to chat with you by voice instead of typing
    - The user wants casual English feedback while talking with you
    - You want to hear what the user said rather than read a typed message

    For a focused drill where the user reads a specific sentence, use `practice`
    instead.

    Args:
        target_hint: Optional. Only set this if the user is explicitly trying
            to say a specific sentence (e.g. they asked "how do I say X?" and
            you told them X). Leave blank for free-form conversation.
        duration: Maximum recording duration in seconds (default 30, max 120).
            Auto-stops earlier on silence.

    Returns:
        Markdown report containing the user's transcript, brief English feedback
        (pronunciation + grammar + fluency), and a 'For Claude' section with
        guidance on how to respond.
    
- **practice** — 
    Drill mode: the user reads a specific sentence aloud and gets a detailed
    pronunciation assessment. Use this when the user explicitly wants to
    practice reading a particular sentence, not for free-form chat.

    For voice conversation with casual feedback, use `converse` instead.

    Recording auto-stops when the user finishes speaking.

    Args:
        reference_text: The sentence the user will read aloud.
        duration: Maximum recording duration in seconds (default 15, max 120).

    Returns:
        Detailed pronunciation assessment report.
    
- **retry** — 
    Retry the last sentence the user was practicing.

    Re-records and re-assesses using the same reference text from the previous
    `practice` or `converse` call. Use this to let the user try again after
    getting feedback.

    Args:
        duration: Maximum recording duration in seconds (default 15, max 120).

    Returns:
        Pronunciation assessment report for the new attempt.
    
- **quick_practice** — 
    Pick a random practice sentence and drill it immediately.

    Combines `suggest_sentence` + `practice` into one step: picks a sentence
    matching the criteria, then records and assesses.

    Args:
        focus: Phoneme focus area. Options: "th", "f_v", "r_l", "vowels", "general".
            If not specified, picks randomly.
        difficulty: Difficulty level. Options: "beginner", "intermediate", "advanced".
            If not specified, picks randomly.
        duration: Maximum recording duration in seconds (default 15, max 120).

    Returns:
        The sentence to read, followed by the pronunciation assessment.
    
- **suggest_sentence** — 
    Suggest a practice sentence the user can read aloud.

    Args:
        focus: Phoneme focus area. Options: "th", "f_v", "r_l", "vowels", "general".
            If not specified, picks randomly.
        difficulty: Difficulty level. Options: "beginner", "intermediate", "advanced".
            If not specified, picks randomly.

    Returns:
        A practice sentence with its focus area and difficulty.
    
- **record** — 
    Record audio from the microphone without assessing it.

    Recording auto-stops when the user finishes speaking (silence detection).
    The duration is the maximum time — you don't have to wait the full duration.

    Most of the time prefer `converse` or `practice`, which record AND analyze
    in one step. Only use `record` alone if you want the raw WAV file.

    Args:
        duration: Maximum recording duration in seconds (default 10, max 120).

    Returns:
        Path to the recorded WAV file.
    
- **assess** — 
    Assess the last recording (or a specific audio file) without re-recording.

    When `reference_text` is provided, the assessor:
      - Aligns the user's speech to the reference word-by-word (Needleman-Wunsch;
        single deletions/insertions no longer cascade into phantom substitutions).
      - Runs wav2vec2 CTC forced alignment to verify which reference words the
        user actually produced — mitigates Whisper-bias mistranscriptions on
        rare proper nouns and domain terms by checking acoustic evidence
        against the reference directly.
      - Surfaces per-word phoneme-level feedback (expected vs produced IPA,
        weak phonemes) from CMUdict.
      - Surfaces optional learner-profile pronunciation hints and drills when
        a rule pack matches. The bundled profile includes Korean-L1 patterns
        such as r/l, th→s, final cluster deletion, and intrusive onset vowel.
      - Adds prosody notes: word-stress placement, sentence-final rising
        intonation on declaratives, intra-clause hesitation pauses.

    Without a reference, only the transcript and prosody run.

    Args:
        reference_text: Expected text the user was trying to say (optional).
        audio_path: Path to a WAV file. Uses the last recording if not specified.

    Returns:
        Detailed pronunciation assessment report (markdown).
    
- **check_mic** — 
    List available audio input devices and verify microphone access.

    Use this if the user reports recording problems — it shows which devices
    are available and which one is the default.

    Returns:
        List of available microphone devices.
    

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "mcp-server-pronunciation": {
    "command": "uvx",
    "args": ["mcp-server-pronunciation"]
  }
}
```

## Documentation

## What JuhongPark/mcp-server-pronunciation MCP server does

JuhongPark/mcp-server-pronunciation MCP server turns microphone input into English-learning feedback for an MCP assistant. The `converse` tool is intended for open-ended voice chat: it records until silence or the duration limit, transcribes the speech, and returns brief pronunciation, grammar, and fluency notes along with guidance for the assistant. The `practice` tool is intended for reading a supplied sentence and produces a more detailed pronunciation assessment.

For targeted practice, `suggest_sentence` selects a sentence by phoneme focus and difficulty, while `quick_practice` selects one and immediately records the learner. `retry` repeats the most recent practice target. The available focus values are `th`, `f_v`, `r_l`, `vowels`, and `general`; difficulty values are beginner, intermediate, and advanced.

## How it works

Audio is captured from the local microphone and processed on the user’s machine. The default transcription model is faster-whisper, and the README states that recorded audio does not leave the machine. Recordings stop automatically after detected silence, although each recording tool also accepts a maximum duration.

When a reference sentence is supplied, the assessment aligns the spoken words with the expected text and can report expected versus produced IPA, weak phonemes, prosody observations, and learner-profile hints. The bundled profile includes Korean-L1 patterns such as r/l confusion, th-to-s substitutions, final cluster deletion, and an intrusive onset vowel. With the optional `[phoneme]` installation, wav2vec2 CTC forced alignment provides an additional acoustic check intended to reduce transcription-related errors for unusual names and domain terms. Without a reference sentence, `assess` reports the transcript and prosody information rather than a full word-level pronunciation comparison.

## Setup and configuration

The project requires Python 3.11 or newer and a working microphone. The documented launcher is `uvx mcp-server-pronunciation`; it can also be installed with pip or as a uv tool. Linux users may need to install PortAudio through their system package manager. The default Whisper model uses about 150 MB of disk space, and the optional phoneme extra requires additional model storage.

Run `uvx mcp-server-pronunciation doctor` to check the environment before connecting an MCP client. `pull-model base.en` can pre-download the default model. MCP client examples are provided for Claude Desktop, Cursor, Codex CLI, Claude Code, and VS Code. The JuhongPark/mcp-server-pronunciation MCP server runs over stdio in these configurations.

## Tools and capabilities

- `converse`: record, transcribe, and provide quick conversational feedback.
- `practice`: assess reading of a specified sentence.
- `quick_practice`: choose a sentence and start a drill.
- `retry`: record the previous practice sentence again.
- `suggest_sentence`: return a sentence with its focus and difficulty.
- `record`: save an unassessed microphone recording as a WAV file.
- `assess`: analyze the latest recording or a specified WAV file.
- `check_mic`: list available input devices and identify the default microphone.

Assessment results include rendered reports and structured values such as transcript, clarity percentage, speaking rate, top issue, next action, and retry comparison. The project also supports macOS, Linux, Windows, and WSL2 according to the README.

## Limitations and notes

Feedback is a coaching signal, not a standardized-test, clinical, employment, or other high-stakes assessment. The README warns that transcripts, pronunciation results, recording behavior, and runtime stability may be inaccurate or platform-dependent. A microphone is required for recording features, and the optional forced-alignment functionality adds dependencies and model storage. The JuhongPark/mcp-server-pronunciation MCP server currently documents a Korean-L1 learner profile; additional learner profiles are not described as built in.

_Full upstream README: https://allmcps.com/mcp/juhongpark-mcp-server-pronunciation/readme_

