Skip to main content
Glama
shar0
by shar0
README.md
# Naninovel MCP Server

Unity C# plugin that exposes Naninovel script authoring and playback controls via the Model Context Protocol (MCP), enabling AI assistants to write, edit, and test visual novel scripts.

## Features

- **Independent of Play Mode** - Server runs in Editor at all times
- **NaniScript CRUD** - Create, read, update, delete script files
- **Direct Playback** - Skip title screen and jump to any script/label
- **Input Simulation** - Advance dialogue, simulate key presses
- **Visual Verification** - Screenshot capture for scene validation

## Quick Start

1. Open Unity Editor
2. Server auto-starts (or open **Window > Nani MCP > Server Status**)
3. Connect your MCP client to `http://localhost:6274`

For Antigravity, add to your `mcp_config.json`:
```json
{
  "mcpServers": {
    "nani-mcp": {
      "serverUrl": "http://localhost:6274"
    }
  }
}
```

## Available Tools

### Script File Operations (Editor Mode)
| Tool | Description |
|------|-------------|
| `list_scripts` | Lists all .nani files in Scenarios folder |
| `read_script` | Reads content of a script file |
| `write_script` | Creates or overwrites a script file |
| `edit_script` | Insert, replace, or delete lines in a script |
| `delete_script` | Deletes a script file (with backup) |

### Playback Controls (Play Mode)
| Tool | Description |
|------|-------------|
| `quick_play` | Play a script directly, bypassing title screen |
| `execute_command` | Execute a single Nani command |
| `play_script` | Load and play a script |
| `stop_player` | Stop current playback |
| `goto_label` | Jump to a specific label |
| `get_playback_status` | Get current playback state |

### Scene & State (Play Mode)
| Tool | Description |
|------|-------------|
| `capture_screenshot` | Capture current Game View as PNG |
| `get_scene_state` | Get visible actors and positions |
| `get_variables` | List all custom variables |
| `set_variable` | Set a variable value |

### Input Simulation (Play Mode)
| Tool | Description |
|------|-------------|
| `continue_dialogue` | Advance to next dialogue line |
| `simulate_key` | Simulate keyboard key press |
| `simulate_click` | Simulate mouse click |

### Unity Editor Controls
| Tool | Description |
|------|-------------|
| `enter_play_mode` | Start Unity Play Mode (from title screen) |
| `exit_play_mode` | Stop Unity Play Mode |
| `get_unity_status` | Get Unity Editor status and Play Mode state |
| `list_scenes` | List all Unity scenes in Build Settings |

## Example: Writing a Script

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_script",
    "arguments": {
      "path": "events/new_scene.nani",
      "content": "; New Scene\n@back Classroom\n@char NaniChan\nNaniChan: Bonjour!"
    }
  }
}
```

## Example: Quick Play

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "quick_play",
    "arguments": {
      "script": "events/new_scene",
      "resetState": true
    }
  }
}
```

## Configuration

Open **Window > Nani MCP > Server Status** to configure:
- **Port**: WebSocket server port (default: 6274)
- **Auto-start**: Start server automatically when Editor opens

## License

MIT License