naninovel-mcp
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
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues