Skip to main content
Glama
ryoooo

NijiVoice-MCP

by ryoooo
README.md
# NijiVoice MCP

FastMCPを使用した[にじボイスAPI](https://nijivoice.com/api)のMCPサーバー実装です。

## 概要

このMCPサーバーは、にじボイスAPIを利用して音声合成を行うための機能を提供します。主な機能は以下の通りです:

- 利用可能な声優(Voice Actor)の一覧取得
- テキストから音声ファイルを生成
- クレジット残高の確認

## 前提条件

- Python 3.12以上
- [uv](https://github.com/astral-sh/uv) - 高速なPythonパッケージマネージャーとインストーラー
- [fastmcp](https://github.com/jlowin/fastmcp) v2.2.8以上
- にじボイスAPIのAPIキー

## インストール方法

1. リポジトリをクローンします:
   ```bash
   git clone https://github.com/ryoooo/nijivoice-mcp-beta.git
   cd nijivoice-mcp-beta
   ```

2. [uv](https://github.com/astral-sh/uv) を使用して仮想環境を作成して依存関係をインストールします:
   ```bash
   uv venv
   source .venv/bin/activate  # Linux/Mac
   # または
   .venv\Scripts\activate  # Windows
   
   uv pip install -e .
   ```

3. `.env`ファイルを作成し、にじボイスAPIのキーを設定します:
   ```
   NIJIVOICE_API_KEY=your_api_key_here
   ```

## 使い方

### MCPサーバーの起動

開発モードでサーバーを起動するには:

```bash
uv run fastmcp dev server.py
```

本番モードでサーバーを起動するには:

```bash
uv run fastmcp run server.py
```

### インストールして使用

MCPサーバーをインストールして使用するには:

```bash
uv run fastmcp install server.py
```

### 機能

以下の機能が利用可能です:

#### ツール(Tools)

- `get_voice_actors()`: 利用可能な声優の一覧を取得
- `generate_voice(script, actor_id, speed, emotional_level, sound_duration, format)`: 音声を生成
- `get_credit_balance()`: クレジット残高を取得

#### リソース(Resources)

- `voice-actors://list`: 声優一覧リソース
- `voice-actors://{actor_id}`: 特定の声優の情報を取得
- `credit://balance`: クレジット残高リソース

#### プロンプト(Prompt)

- `voice_generation_prompt()`: 音声生成に関するプロンプトを提供

## 音声生成パラメータ

音声生成時に以下のパラメータを指定できます:

- `script`: 読み上げるテキスト(最大3,000文字)(必須)
- `actor_id`: 使用する声優のID(省略時は最初の声優を使用)
- `speed`: 読み上げスピード(0.4~3.0、デフォルト: 1.0)
- `emotional_level`: 感情レベル(0.0~1.5、デフォルト: -1.0 = 声優のデフォルト設定を使用)
- `sound_duration`: 音素発音の長さ(0.0~1.7、デフォルト: -1.0 = 声優のデフォルト設定を使用)
- `format`: 音声フォーマット("mp3"または"wav"、デフォルト: "mp3")

## レスポンス形式

音声生成時のレスポンス形式は以下の通りです:

```json
{
  "generatedVoice": {
    "audioFileUrl": "音声再生用のURL",
    "audioFileDownloadUrl": "音声ダウンロード用のURL",
    "duration": 1312, // 音声の長さ(ミリ秒)
    "remainingCredits": 3613 // 生成後の残りクレジット
  }
}
```

## テスト

テストを実行するには:

```bash
uv run pytest
```

詳細なテスト結果を表示するには:

```bash
uv run pytest -v
```

カバレッジレポートを生成するには:

```bash
uv run pytest --cov=nijivoice
```

## ライセンス

[MIT](LICENSE)

## 謝辞

- [fastmcp](https://github.com/jlowin/fastmcp) - MCP (Model Context Protocol) サーバーを構築するためのPythonフレームワーク
- [にじボイスAPI](https://nijivoice.com/api) - 高品質な音声合成を提供するAPI

TDQS

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: generate_voice creates audio, get_credit_balance checks account status, and get_voice_actors lists available resources. An agent can easily distinguish between content generation, account management, and resource listing functions.

Naming Consistency4/5

The tools follow a consistent verb_noun pattern (generate_voice, get_credit_balance, get_voice_actors) with clear, descriptive names. The minor deviation is that two tools use 'get_' prefix while one uses 'generate_', but this reflects their distinct actions appropriately.

Tool Count4/5

Three tools is reasonable for a voice generation service, covering the core workflow: listing actors, generating voice, and checking credits. While slightly minimal, each tool earns its place without redundancy, though additional utilities like voice preview or actor filtering could enhance completeness.

Completeness4/5

The toolset covers essential operations for voice generation: resource discovery (get_voice_actors), content creation (generate_voice), and account management (get_credit_balance). Minor gaps include lack of update/delete operations for generated content or advanced actor filtering, but core workflows are fully supported.

Maintenance

ActivityInactive
ResponsivenessNo issues