MCP Novel Game Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Novel Game Serverlist my available scenarios"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Novel Game Server

English
Overview
This repository is a novel game server that supports multi-branch scenario stories (visual novels) in both English and Japanese.
This repository is designed as a resource to help you better understand MCP (Model Context Protocol) Resources.
You can run, edit, and add new scenarios easily. The server supports scenario files written in YAML and can be extended with your own stories.
Note: On Cline, everything works out-of-the-box. On other environments like Claude Desktop and Cursor, please use
server_tool.pyto launch and manage the server properly.
How to Use
1. Install dependencies
uv sync2. Run the server
{
"novel-game-server": {
"command": "uv",
"args": [
"--directory",
"/Users/username/Documents/projects/mcp-novel-game-server", ## Replace with your project root
"run",
"src/server.py"
]
}
}3. Play or test a scenario
Place your scenario files in
src/stories/<your_story>/You can select scenarios via the server's interface or by specifying scenario IDs in your client.
4. Add a new scenario
Create a new directory under
src/stories/(e.g.villainess_roseorvillainess_rose_ja)Add scenario YAML files (see existing examples)
Add a
meta.yamldescribing the scenario
5. File structure
project-root/
├── src/
│ ├── server.py
│ └── stories/
│ ├── villainess_rose/
│ ├── villainess_rose_ja/
│ └── ...
├── mcp_example.json
├── pyproject.toml
└── README.mdNotes
Use
uvas the package manager and runner.Scenarios can be written in English or Japanese.
See
src/stories/README.mdfor scenario tree and details.
Related MCP server: Learn MCP Server
日本語
概要
このリポジトリは、分岐型ノベルゲーム(ビジュアルノベル)サーバーです。英語・日本語両対応。
MCP(Model Context Protocol)のリソースを理解するためのリソースとして設計されています。
YAML形式でシナリオを追加・編集できます。
注意: Cline環境ではそのまま動作しますが、それ以外の環境(例えばClaude DesktopやCursor)では
server_tool.pyを使ってサーバーの起動・管理を行ってください。
使い方
1. 依存パッケージのインストール
uv sync2. サーバーの起動
{
"novel-game-server": {
"command": "uv",
"args": [
"--directory",
"/Users/username/Documents/projects/mcp-novel-game-server", ## ご自身のプロジェクトルートに変更してください
"run",
"src/server.py"
]
}
}3. シナリオのプレイ・テスト
src/stories/<your_story>/にシナリオファイルを配置サーバーのUIまたはクライアントからシナリオIDを指定して選択可能
4. 新しいシナリオの追加
src/stories/配下に新しいディレクトリを作成(例:villainess_roseやvillainess_rose_ja)YAMLファイルでシナリオを作成
シナリオ説明用の
meta.yamlも追加
5. ファイル構成例
project-root/
├── src/
│ ├── server.py
│ └── stories/
│ ├── villainess_rose/
│ ├── villainess_rose_ja/
│ └── ...
├── mcp_example.json
├── pyproject.toml
└── README.md注意
パッケージ管理・実行は
uvを利用してください。シナリオは英語・日本語どちらでも作成可能です。
シナリオの詳細やツリーは
src/stories/README.mdを参照してください。
Available Tools
3 toolschooseC
Record player's choice within their selected story.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes | ||
| current_scene_id | Yes | ||
| choice_id | Yes | ||
| free_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior, but it only says 'record'. It fails to mention if the action is idempotent, if it can be overwritten, or any side effects. This is insufficient for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise, but it sacrifices necessary detail. Every word is needed, but additional context would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description is severely incomplete. It does not explain return values, error conditions, or prerequisites like having an active story.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description adds no parameter details. It does not explain the role of player_id, current_scene_id, choice_id, or free_text beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records a player's choice within a selected story, distinguishing it from siblings like load_scene_image and select_story. However, it lacks explicit mention that the choice is tied to a specific scene, which is evident from the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as selecting a story or loading an image. The agent is left to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_scene_imageC
Return the image for the player's current story and scene. Resize and compress until data size <= 1MB.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes | ||
| scene_id | Yes | ||
| max_width | No | ||
| max_height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds one behavioral trait: resizing/compressing until data size <= 1MB. However, no annotations exist, so the description carries the full burden. It does not disclose authentication needs, rate limits, error handling, or behavior when compression fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action is front-loaded. Every sentence adds value: purpose and behavioral constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet description does not specify return format (e.g., base64, URL) or error cases. For a tool with 4 parameters and no annotations, the description is incomplete. It covers basic purpose but omits many usage details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no explanation of parameters. It mentions resizing/compression but does not link to max_width or max_height. The description fails to compensate for the lack of parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an image for the player's current story and scene, with resizing/compression. The verb 'Return' and resource 'image for the player's current story and scene' are specific. While siblings are different actions, it doesn't explicitly differentiate or highlight its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of context, prerequisites, or exclusions. The description implies it should be used when an image is needed for a scene, but lacks explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_storyC
Bind a story to the player and return its opening scene.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes | ||
| story_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description only states the action and return value but does not elaborate on side effects, failure modes, or required permissions (e.g., whether binding is permanent, what happens if the story is already bound, or if the player exists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that earns its place by stating the core purpose and return value. However, it leans toward under-specification, lacking necessary details for a tool with no annotations or output schema. It is concise but not sufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and parameter descriptions, the description is incomplete. It does not cover parameter semantics, usage context, or behavioral details, leaving significant gaps for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for its two parameters, and the description adds no additional meaning beyond the parameter names 'player_id' and 'story_id'. While the names are self-explanatory, the description fails to explain expected formats, constraints, or relationships between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Bind a story to the player' and the return 'its opening scene', using specific verbs and resources. It distinguishes itself from siblings 'choose' (likely for making choices) and 'load_scene_image' (loading an image) by focusing on binding a story and returning the opening scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the siblings 'choose' or 'load_scene_image'. There is no context about prerequisites, typical use cases, or scenarios where alternative tools should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
choose - First observed
load_scene_image - First observed
select_story
TDQS
Each tool has a distinct purpose: selecting a story, recording a choice, and loading a scene image. No overlap in functionality.
All tool names use lowercase with underscores, but the structure varies: 'choose' is a single verb while others follow verb_noun pattern. The inconsistency is minor.
With 3 tools, the server is well-scoped for a simple novel game interface. Each tool serves a clear purpose without unnecessary bloat.
The basic interaction flow is covered, but missing tools like fetching story list, scene text, or saving progress leave notable gaps that agents may need to work around.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for understanding Javascript internals from ECMAScript specification.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for developer documentation, generated by doc2mcp.
Related MCP Servers
- AlicenseBqualityDmaintenanceA beginner-friendly Model Context Protocol (MCP) server that helps users understand MCP concepts, provides interactive examples, and lists available MCP servers. This server is designed to be a helpful companion for developers working with MCP. Also comes with a huge list of servers you can install.31466Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server designed for learning and experimentation. It provides a foundational setup for developers to build, run, and debug MCP server implementations using Node.js.-
- FlicenseNot gradedqualityCmaintenanceMCP server that automates WebGAL game development tasks such as resource management, script editing, documentation lookup, and AI-powered voice generation using LLMs.171-
- FlicenseAqualityBmaintenanceAn MCP server that provides a visual novel world engine, enabling AI clients to drive interactive galgame experiences with narrative consistency.31-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gotalab/mcp-novel-game-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server