# fish-speech-mcp

An MCP server for text-to-speech synthesis (TTS) for LLMs.

## Features

* **Text-to-Speech**: Convert text to speech using FishSpeech
* **Saving a Voice Reference**: Saving a Voice Reference
* **MCP Integration**: Works with Dive and other MCP-compatible LLMs

## Installation

not available

### With [Dive Desktop](https://github.com/OpenAgentPlatform/Dive)

1. Click "+ Add MCP Server" in Dive Desktop
2. Copy and paste this configuration:

```json
{
  "mcpServers": {
    "fish-speech": {
      "command": "npx",
      "args": [
        "-y",
        "@demon24ru/fish-speech-mcp"
      ]
    }
  }
}
```
3. Click "Save" to install the MCP server

## Configuration

The MCP server can be configured using environment variables:

* `MCP_FISH_SPEECH_SERVER_URL`: URL of the Optivus server (default: `http://localhost:5000`)

## Tool Documentation

* **text_to_speech**
  * Convert text to speech using FishSpeech
  * Inputs:
    * `text` (string, required): Text to convert to speech
    * `reference_id` (string, optional): Identifier of a saved voice

* **save_voice_reference**
  * Save a voice reference for future voice cloning
  * Inputs:
    * `reference_audio` (string, required): Path to an audio file for voice cloning
    * `reference_text` (string, required): Text corresponding to the audio file for voice cloning

## Technical Details

### Communication with Optivus Server

The MCP server communicates with the Optivus server using Socket.IO. The communication flow is as follows:

1. The MCP server connects to the Optivus server using Socket.IO client
2. Requests are sent to the server using the `message` event
3. Responses are received from the server using the `message` event
4. The MCP server handles connection, reconnection, and error scenarios automatically

### Voice References

Voice references are stored in directory from optivus. Each reference is stored in a subdirectory named with a unique ID.

## Usage Examples

Ask your LLM to:
```
"Convert this text to speech: Text to convert, Reference ID"
"Save a voice reference: Path to audio file, Text corresponding to the audio file"
```

## Manual Start

If needed, start the server manually:
```bash
npx @demon24ru/fish-speech-mcp
```

## Debug

If needed, start the server in debug mode:
```bash
npm run prepare
npx @modelcontextprotocol/inspector node ./lib/index.mjs -y
```

## Requirements

* Node.js 20+
* MCP-compatible LLM service

## License

MIT

## Author

@demon24ru
