让 AI 写你的视觉小说:renpy-mcp,让 Cursor 原生开发 Ren‘Py 的 MCP 服务器
让 AI 写你的视觉小说:renpy-mcp,一个让 Cursor 原生开发 Ren’Py 的 MCP 服务器
你还在手动贴报错给 AI?还在复制
.rpy代码片段问 ChatGPT?这篇文章介绍一个让 AI直接读懂、直接修改、直接编译验证你的 Ren’Py 项目的开源工具——renpy-mcp。
仓库地址:https://gitee.com/gdouage/renpy-mcp (欢迎 Star ⭐)
📌 目录
- 一、痛点:Ren’Py 开发者为什么需要这个工具
- 二、renpy-mcp 是什么
- 三、15 个工具,AI 能做什么
- 四、核心能力详解
- 五、5 分钟上手
- 六、真实工作流演示
- 七、技术架构
- 八、为什么不用 ChatGPT 直接问
- 九、项目信息与反馈
一、痛点:Ren’Py 开发者为什么需要这个工具
如果你写过 Ren’Py,大概率经历过这些场景:
- 报错看不懂:
Exception: Could not find return label、UnicodeDecodeError、SyntaxError……你只能把整段代码复制给 AI,AI 猜了半天还猜错。 - 改完不知道对不对:AI 给你改了代码,但你得自己点「启动项目」、自己跑 lint、自己看控制台报错、再复制回去问 AI——循环往复。
- 文档查不到:Ren’Py 中文文档分散在
doc.renpy.cn,AI 训练数据里未必有最新版,问它Movie(channel=...)怎么用,它可能给你编一个不存在的 API。 - 项目结构混乱:几百个 label、几十个 screen,谁调用了谁、哪个是死代码、哪个
jump指向了不存在的标签——人肉看代码看到眼花。
renpy-mcp 就是为了终结这个循环而生的。
二、renpy-mcp 是什么
renpy-mcp是一个 MCP(Model Context Protocol)服务器,让 Cursor、Claude Desktop 等 AI Agent 成为 Ren’Py 的原生开发助手。
一句话概括:它让 AI 长出眼睛和手,能直接读你的项目文件、查官方文档、改代码、跑编译、修 bug——全程不用你当传话筒。
| 特性 | 说明 |
|---|---|
| 🤖 AI 原生 | 基于 MCP 协议,Cursor / Claude 开箱即用 |
| 📚 内置官方文档 | 23 页 Ren’Py 中文文档打包在内,离线可搜 |
| 🔧 15 个工具 | 读代码 / 写代码 / 编译验证 / 自动修复 / 素材管理 / 文档搜索 |
| 🌐 跨平台 | Windows / macOS / Linux 全支持,SDK 路径自动探测 |
| 🛡️ BOM 安全 | 所有文件读写用utf-8-sig,不会漏掉第一行的 label |
仓库地址:https://gitee.com/gdouage/renpy-mcp
三、15 个工具,AI 能做什么
renpy-mcp 给 AI 装上了 15 个工具,分成 7 大类:
🔍 读代码(4 个)
| 工具 | 能力 |
|---|---|
list_labels | 列出全项目所有 label,rich 模式还能看参数、jump 目标、call 目标、是否 return 值 |
read_script | 读取指定 label 的完整代码块 |
find_references | 查找全项目中对某 label/screen 的所有 jump/call 引用 |
list_definitions | 盘点所有角色、立绘、transform、screen、default、define 声明 |
✏️ 写代码(1 个)
| 工具 | 能力 |
|---|---|
exec_rpy | 往任意 .rpy 文件注入代码,支持 8 种定位模式(end/top/inside/after/before/replace/replace_all/自动建文件) |
✅ 编译验证(3 个)
| 工具 | 能力 |
|---|---|
compile_project | 编译 .rpy → .rpyc,抓语法错误 |
lint_project | 跑 Ren’Py lint 静态分析 |
check_project | 一次跑完编译 + lint |
🩺 自动修复(2 个)
| 工具 | 能力 |
|---|---|
auto_fix | 自动检测并修复 5 类常见问题,修完重新编译验证 |
list_fixers | 列出所有可用修复器 |
💾 存档管理(1 个)
| 工具 | 能力 |
|---|---|
manage_saves | list / clear / clear_stale(清陈旧存档,修复崩溃报错) |
🖼️ 素材管理(2 个)
| 工具 | 能力 |
|---|---|
copy_asset | 拷贝图片/字体/音频到项目 |
get_image_size | 获取图片尺寸(算立绘定位用) |
📖 文档搜索(2 个)
| 工具 | 能力 |
|---|---|
search_docs | 搜索内置的 23 页 Ren’Py 中文官方文档 |
list_doc_pages | 列出所有可用文档页面 |
四、核心能力详解
1. 内置官方文档,AI 不再瞎编 API
这是 renpy-mcp 最硬核的能力之一。23 页 Ren’Py 中文官方文档(共 580KB)被打包在src/renpy_mcp/docs/里,包括:
quickstart.txt— 快速入门screens.txt— 界面语言(77KB)screen_actions.txt— 界面行为(60KB)transforms.txt— 变换和 ATL(43KB)gui.txt— GUI 定制化(44KB)movie.txt— 视频播放audio.txt— 音频- ……共 23 个页面
AI 调用search_docs("Movie")就能拿到官方文档里关于视频播放的真实段落,不再凭训练记忆瞎编。离线可用,不需要网络。
2. auto_fix:5 类常见 bug 一键修复
Ren’Py 开发里有几个反复出现的经典坑,renpy-mcp 能自动检测并修复:
| 修复器 | 解决什么问题 |
|---|---|
return_values | Ren’Py label 里写return True/False会崩,自动改成$ _label_result = True/False+return |
missing_from | call xxx缺from子句会导致动态脚本报错,自动补from _call_xxx_N |
bom_normalize | 有中文的文件没 BOM 会漏掉第一行 label,自动加 BOM |
missing_labels | 检测 jump/call 到不存在的标签(只报告) |
stale_saves | 检测_reload-*/_tracesave-*残留存档(只报告) |
那个著名的Could not find return label报错,很多时候就是return True+ 陈旧存档导致的,renpy-mcp 能一次性解决。
3. find_references:重构前必查
要改一个 label,但不知道有多少地方调用了它?find_references("arrow_round")一调用,全项目所有jump arrow_round和call arrow_round全列出来,还告诉你这个标签是否真的被定义了——没定义就是有 jump 指向了空气。
五、5 分钟上手
环境要求
- Python3.12+
- Ren’Py SDK8.0+
- Cursor 或 Claude Desktop
安装
gitclone https://gitee.com/gdouage/renpy-mcp.gitcdrenpy-mcp# 创建虚拟环境python-mvenv .venv# Windows.venv\Scripts\pipinstall-e.# macOS / Linux.venv/bin/pipinstall-e.配置 Cursor
编辑~/.cursor/mcp.json(不存在则创建):
{"mcpServers":{"renpy-mcp":{"command":"D:/absolute/path/to/renpy-mcp/.venv/Scripts/python.exe","args":["-m","renpy_mcp.server"],"env":{"PYTHONPATH":"D:/absolute/path/to/renpy-mcp/src","RENPY_SDK_PATH":"D:/absolute/path/to/renpy-sdk"}}}}配置 Claude Desktop
编辑claude_desktop_config.json:
{"mcpServers":{"renpy-mcp":{"command":"/absolute/path/to/renpy-mcp/.venv/bin/python","args":["-m","renpy_mcp.server"],"env":{"PYTHONPATH":"/absolute/path/to/renpy-mcp/src","RENPY_SDK_PATH":"/absolute/path/to/renpy-sdk"}}}}macOS / Linux 用
bin/python替代Scripts/python.exe。RENPY_SDK_PATH不设也会自动扫描常见路径。
重启客户端
重启 Cursor / Claude Desktop,MCP 服务自动启动。现在对 AI 说「帮我看看这个项目的结构」,它就会自己调用list_labels去读了。
六、真实工作流演示
场景 1:接手一个陌生项目
你:帮我看看这个 Ren'Py 项目的结构 AI:[调用 list_labels(rich=True)] [调用 list_definitions()] AI:这个项目有 47 个 label,入口是 start,跳转到 chapter_01。 定义了 3 个角色(ab、paopao、zhao),12 个 screen,5 个 transform……场景 2:写一个视频播放功能
你:帮我加一个循环播放的背景视频 AI:[调用 search_docs("Movie")] ← 查官方文档怎么用 Movie AI:[调用 exec_rpy(...)] ← 根据文档写正确的代码 AI:[调用 check_project()] ← 编译 + lint 验证 AI:编译通过,lint 无报错,视频已加到 fight_movie.rpy场景 3:项目跑不起来
你:报错 Could not find return label,怎么办 AI:[调用 auto_fix()] ← 自动检测 5 类问题 AI:发现 arrow_qte.rpy 里有 return True,已自动修复 AI:[调用 manage_saves("clear_stale")] ← 清掉陈旧存档 AI:[调用 check_project()] ← 重新编译验证 AI:修好了,现在能正常跑了全程不用你复制一行代码、不用你点一次启动按钮。
七、技术架构
┌──────────────────────────────────────────────┐ │ AI Agent (Cursor / Claude) │ │ via MCP Protocol calls │ └──────────────────────┬───────────────────────┘ ▼ ┌──────────────────────────────────────────────┐ │ renpy-mcp Server │ │ (FastMCP, 15 tools) │ ├──────────┬──────────┬──────────┬──────────────┤ │ 读代码 │ 写代码 │ 验证修复 │ 文档知识库 │ ├──────────┴──────────┴──────────┴──────────────┤ │ 正则解析 .rpy │ BOM安全文件读写 │ subprocess 调 SDK │ └──────────────────────────────────────────────┘ ▼ ┌──────────────────────────────────────────────┐ │ Ren'Py SDK (renpy.py) │ │ compile · lint · 项目文件 (.rpy/.rpyc) │ └──────────────────────────────────────────────┘技术栈:MCP 协议 / FastMCP / Python 3.12+ / Pillow / setuptools
八、为什么不用 ChatGPT 直接问
| 对比项 | 直接问 ChatGPT | 用 renpy-mcp + Cursor |
|---|---|---|
| 看项目结构 | 你手动复制粘贴 | AI 自己读,全项目视角 |
| 查 API | AI 凭记忆,可能编 | AI 搜内置官方文档,准 |
| 改代码 | AI 给你片段,你手动贴 | AI 直接写进文件 |
| 验证 | 你自己点启动看报错 | AI 自己跑编译 lint |
| 修 bug | 你描述报错,AI 猜 | AI 自己检测自己修 |
| 循环次数 | 来回十几轮 | 一句话搞定 |
一句话:renpy-mcp 把 AI 从「顾问」变成了「实习生」——能看、能写、能跑、能改。
九、项目信息与反馈
| 📦 仓库 | gitee.com/gdouage/renpy-mcp |
| 📄 协议 | MIT |
| 👤 作者 | abbuibuibui |
| ✉️ 联系 | 3244940576@qq.com |
| 📚 文档来源 | doc.renpy.cn |
如果这个项目对你有帮助:
- ⭐ 去 Gitee 仓库 点个 Star
- 🐛 遇到问题提 Issue
- 🔁 欢迎 Pull Request
你的一颗 Star,是个人开发者继续更新的最大动力 ❤️