Skip to main content
Glama
README.md
# Antigravity Voice MCP

Local MCP (Model Context Protocol) server untuk menghubungkan Google Antigravity IDE dengan Windows Text-to-Speech.

Project ini menyediakan tool suara yang bisa dipanggil melalui MCP, sehingga Antigravity dapat membacakan teks, ringkasan, atau status pekerjaan melalui speaker Windows.

## Status

Version: **1.1.0**

Fitur saat ini:

- `speak` — membacakan teks menggunakan Windows Text-to-Speech.
- `list_voices` — menampilkan voice Windows yang tersedia.
- Dukungan pengaturan:
  - voice
  - rate
  - volume
- MCP transport melalui stdio.
- Windows PowerShell + `System.Speech`.
- Sudah diuji pada Windows 11 dengan Node.js 24.

## Requirements

Pastikan device memiliki:

- Windows 10 atau Windows 11
- Node.js
- npm
- Google Antigravity IDE
- Windows Text-to-Speech voice yang aktif

Cek Node.js dan npm:

```powershell
node -v
npm -v
```

## Installation

Clone repository:

```powershell
git clone https://github.com/sirbramantyo/antigravity-voice-mcp.git
```

Masuk ke folder project:

```powershell
cd antigravity-voice-mcp
```

Install dependency:

```powershell
npm install
```

## Project Structure

```text
antigravity-voice-mcp
├── src
│   ├── index.js
│   ├── test-client.js
│   └── test-tts.js
├── .gitignore
├── package.json
├── package-lock.json
└── README.md
```

## Test Windows Text-to-Speech

Untuk memastikan Node.js dapat menjalankan Windows TTS:

```powershell
node src/test-tts.js
```

Jika berhasil, speaker akan membacakan kalimat test.

## Test MCP Server

Jalankan:

```powershell
node src/test-client.js
```

Expected result:

```text
Available MCP tools:
- speak
- list_voices
```

Tool `list_voices` akan menampilkan voice Windows yang terpasang, lalu tool `speak` akan menjalankan Text-to-Speech.

Contoh voice yang pernah terdeteksi:

```text
Microsoft Hazel Desktop
Microsoft Zira Desktop
```

## Antigravity MCP Configuration

Antigravity membaca custom MCP server melalui file:

```text
~/.gemini/config/mcp_config.json
```

Pada Windows, lokasi tersebut biasanya berada di folder user.

Tambahkan konfigurasi berikut ke object `mcpServers`:

```json
{
  "mcpServers": {
    "antigravity-voice": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": [
        "D:\\PATH\\TO\\antigravity-voice-mcp\\src\\index.js"
      ],
      "cwd": "D:\\PATH\\TO\\antigravity-voice-mcp"
    }
  }
}
```

Ganti:

```text
D:\PATH\TO\antigravity-voice-mcp
```

dengan lokasi repository pada device Anda.

Contoh:

```text
E:\Documents\Web_Development\Tools\antigravity-voice-mcp
```

Penting: absolute path berbeda pada setiap device. Jangan menyalin path dari laptop lain tanpa menyesuaikannya.

## Node.js Path

Untuk mengetahui path Node.js pada Windows:

```powershell
where.exe node
```

Contoh hasil:

```text
C:\Program Files\nodejs\node.exe
```

Gunakan path tersebut pada field `command` di `mcp_config.json`.

## Enable MCP di Antigravity

Di Antigravity IDE:

1. Buka Agent panel.
2. Buka menu MCP Servers.
3. Pilih Manage MCP Servers.
4. Pastikan `antigravity-voice` muncul.
5. Enable atau refresh server setelah mengubah `index.js` atau konfigurasi MCP.

## Tool: speak

Tool `speak` menerima parameter:

```text
text
voice
rate
volume
```

Default configuration:

```text
voice  = Microsoft Zira Desktop
rate   = 2
volume = 100
```

Range:

```text
rate   = -10 sampai 10
volume = 0 sampai 100
```

Contoh pemanggilan:

```javascript
{
  text: "Build completed successfully.",
  voice: "Microsoft Zira Desktop",
  rate: 2,
  volume: 100
}
```

Jika `voice`, `rate`, dan `volume` tidak dikirim, server menggunakan nilai default.

## Tool: list_voices

Tool ini membaca voice yang tersedia melalui Windows `System.Speech`.

Gunakan tool ini sebelum memilih voice custom pada device baru, karena daftar voice dapat berbeda antar komputer.

## Important Notes

Jangan commit folder berikut:

```text
node_modules/
```

Repository sudah menggunakan `.gitignore`.

File global Antigravity:

```text
~/.gemini/config/mcp_config.json
```

juga tidak perlu dimasukkan ke repository karena berisi absolute path yang spesifik untuk masing-masing device.

## Updating the Project

Setelah melakukan perubahan source code:

```powershell
git add .
git commit -m "Describe your change"
git push
```

Pada device lain, update repository dengan:

```powershell
git pull
npm install
```

`npm install` diperlukan jika dependency pada `package.json` berubah.

## Troubleshooting

### MCP server tidak muncul di Antigravity

Periksa:

- path Node.js pada `command`
- path `src/index.js`
- nilai `cwd`
- JSON syntax pada `mcp_config.json`

Setelah memperbaiki konfigurasi, refresh MCP server.

### MCP terhubung tetapi suara tidak terdengar

Test langsung:

```powershell
node src/test-tts.js
```

Jika direct TTS gagal, masalah berada pada Windows TTS atau PowerShell, bukan MCP.

Jika direct TTS berhasil tetapi MCP gagal, jalankan:

```powershell
node src/test-client.js
```

untuk mengisolasi masalah antara MCP client dan server.

### Voice tidak ditemukan

Jalankan `list_voices` atau test client untuk melihat nama voice yang benar-benar tersedia pada device tersebut.

Nama voice harus sama persis dengan nama yang dilaporkan Windows.

## Recommended Workflow

Gunakan voice terutama untuk notifikasi singkat seperti:

```text
Build completed successfully.
Tests passed.
Three tests failed.
Deployment finished.
```

Membacakan seluruh response coding yang panjang biasanya kurang efisien.

## License

Private/internal utility project unless changed by repository owner.

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

speak and list_voices target entirely distinct actions (produce audio vs. enumerate available voices), with no overlap in purpose. An agent can trivially pick the right tool.

Naming Consistency5/5

Both names follow a clean verb_noun convention (speak, list_voices) with consistent snake_case where multi-word. No mixing of styles.

Tool Count4/5

Two tools is on the thin side, but for a narrow text-to-speech server each tool clearly earns its place. It borders on under-scoped rather than bloated.

Completeness3/5

Core capability (speaking) is present, but list_voices is a partial dead end since there is no way to select a voice, stop/pause playback, or adjust rate/pitch. These are notable gaps for a TTS surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues