Skip to main content
Glama

🎮 renpy-mcp — Ren'Py AI 原生开发助手

语言 / Languages: 简体中文 | English

一个 MCP(Model Context Protocol)服务器,让 AI Agent(Cursor、Claude 等)成为 Ren'Py 视觉小说的原生开发助手——读代码、写代码、查官方文档、自动修复、编译验证,全流程闭环。

基于 FastMCP 构建,内置 Ren'Py 中文官方文档(23 页 / 580KB),跨平台支持 Windows / macOS / Linux。

⭐ 如果这个项目帮到你,欢迎去仓库点个 Star 支持一下~ 👉 https://gitee.com/gdouage/renpy-mcp 你的一颗星,是个人开发者继续更新的最大动力 ❤️

仓库

gitee.com/gdouage/renpy-mcp

协议

MIT

作者

abbuibuibui

联系

3244940576@qq.com

文档来源

doc.renpy.cn


📌 项目介绍

Ren'Py 没有内置编辑器,开发者手动写 .rpy 文本文件再点「启动项目」测试。这个 MCP 让 AI 直接理解 Ren'Py 项目结构——不用你手动贴报错,AI 自己就能读代码、查文档、改代码、编译验证、自动修 bug。

能力

说明

读代码

列出全部 label / 读取指定 label 脚本 / 盘点角色立绘 screen 声明 / 查找 jump-call 调用关系

查文档

内置 23 页 Ren'Py 中文官方文档,关键词搜索返回相关段落,离线可用

写代码

往任意 .rpy 文件注入代码(8 种定位模式),自动建文件,保留 BOM

编译验证

编译 + lint 一次跑完,返回结构化错误(文件名 + 行号 + 消息)

自动修复

检测并修复 5 类常见问题:return True/False、缺 from 子句、BOM 不一致、漏标签、陈旧存档

翻译检查

列出所有语言 / 深度检查翻译覆盖(抓"只有字符串翻译、缺块翻译"的静默 bug)/ 校验语言选择器配置

存档管理

列出 / 清除 / 清除陈旧存档(修复 Could not find return label 报错)

素材管理

拷贝图片 / 字体 / 音频到项目,获取图片尺寸算立绘定位

通用 CLI

直接跑任意 Ren'Py 子命令(compile/lint/translate 等),自定义超时

跨平台

Windows / macOS / Linux 全支持,SDK 路径自动探测

核心流程:

查文档(search_docs) → 读代码(list_labels) → 写代码(exec_rpy) → 编译验证(check_project) → 自动修复(auto_fix)

Related MCP server: mcdev-mcp

🏗️ 项目架构

┌──────────────────────────────────────────────┐
│              AI Agent (Cursor / Claude)        │
│                  通过 MCP 协议调用               │
└──────────────────────┬───────────────────────┘
                       │
                       ▼
┌──────────────────────────────────────────────┐
│              renpy-mcp Server                  │
│              (FastMCP, 19 个工具)               │
├──────────┬──────────┬──────────┬──────────────┤
│  读代码   │  写代码   │  验证修复  │   文档知识库   │
│ (4 tools)│ (1 tool) │ (5 tools)│  (2 tools)  │
├──────────┴──────────┴──────────┴──────────────┤
│   翻译检查(3)  通用CLI(1)  存档(1)  素材(2)      │
├───────────────────────────────────────────────┤
│                  底层能力                       │
│  ┌─────────┐  ┌──────────┐  ┌───────────────┐  │
│  │ 正则解析 │  │ 文件读写  │  │ subprocess    │  │
│  │ .rpy文件 │  │ BOM安全  │  │ 调用Ren'Py SDK │  │
│  └─────────┘  └──────────┘  └───────────────┘  │
└──────────────────────────────────────────────┘
                       │
                       ▼
┌──────────────────────────────────────────────┐
│           Ren'Py SDK (renpy.py)               │
│     compile · lint · 项目文件 (.rpy/.rpyc)     │
└──────────────────────────────────────────────┘

目录结构:

renpy-mcp/
├── src/renpy_mcp/
│   ├── server.py              # MCP 服务入口 + 工具注册
│   ├── project.py             # 标签解析:list_labels / read_script / find_references / list_definitions
│   ├── executor.py            # 代码注入:exec_rpy(8种定位 + CJK字体)
│   ├── build.py               # 编译验证:compile / lint / check_project / manage_saves / run_renpy_command
│   ├── fixer.py               # 自动修复:auto_fix(5类修复器)
│   ├── assets.py              # 素材管理:copy_asset / get_image_size
│   ├── translation.py         # 翻译检查:list_translations / check_translation / check_language_picker
│   ├── docs_search.py         # 文档搜索:search_docs / list_doc_pages
│   ├── config.py              # SDK 路径配置(跨平台自动探测)
│   └── docs/                  # 内置官方文档(23页,580KB)
│       ├── quickstart.txt     # 快速入门
│       ├── screens.txt        # 界面语言(77KB)
│       ├── screen_actions.txt # 界面行为(60KB)
│       ├── transforms.txt     # 变换和ATL(43KB)
│       ├── gui.txt            # GUI定制化(44KB)
│       └── ...                # 共23个文档页面
├── AI_GUIDE.md                # AI Agent 操作规范
├── CHANGELOG.md               # 变更日志
├── pyproject.toml             # 包配置
├── LICENSE                    # MIT 协议
├── README.md                  # 中文(默认,Gitee 首页展示)
└── README.en.md               # English

🛠️ 技术栈

层级

技术

协议

MCP (Model Context Protocol)

框架

FastMCP

语言

Python 3.12+

文档解析

Python 标准库 html.parser

图片处理

Pillow

构建系统

setuptools

SDK 调用

subprocess 调用 Ren'Py SDK


🚀 快速开始

1. 环境要求

  • Python 3.12+

  • Ren'Py SDK 8.0+(用于编译和 lint)

  • 支持 MCP 的 AI 客户端(Cursor、Claude Desktop 等)

2. 获取代码

git clone https://gitee.com/gdouage/renpy-mcp.git
cd renpy-mcp

3. 安装

# 创建虚拟环境
python -m venv .venv

# Windows
.venv\Scripts\pip install -e .

# macOS / Linux
.venv/bin/pip install -e .

4. 配置 MCP 客户端

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 指向你的 Ren'Py SDK 目录(如 renpy-8.5.3-sdk)。未设置时服务器会自动扫描常见路径。

5. 重启客户端 🎬

重启 Cursor / Claude Desktop,MCP 服务自动启动。AI 现在可以直接操作你的 Ren'Py 项目。


📡 19 个工具一览

读代码(4 个)

工具

功能

list_labels

列出全项目所有 label(可选 rich 模式:参数、jump 目标、call 目标、返回值)

read_script

读取指定 label 的完整代码块(BOM 安全)

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(编译不过则跳过 lint)

自动修复(2 个)

工具

功能

auto_fix

自动检测并修复 5 类问题,修复后重新编译验证

list_fixers

列出所有可用修复器

auto_fix 支持的 5 类修复:

修复器

类型

做什么

return_values

改代码

return True/False → $ _label_result = True/False + return

missing_from

改代码

call xxx → call xxx from _call_xxx_N

bom_normalize

改代码

有 CJK 内容的文件加 BOM,没 CJK 的去 BOM

missing_labels

只报告

检测 jump/call 到不存在的 label

stale_saves

只报告

检测 _reload-*/_tracesave-* 残留存档

存档管理(1 个)

工具

功能

manage_saves

list(列出存档)/ clear(全删)/ clear_stale(清陈旧存档)

素材管理(2 个)

工具

功能

copy_asset

拷贝图片/字体/音频到项目(自动补 game/ 前缀)

get_image_size

获取图片尺寸(算立绘定位 transform 用)

文档搜索(2 个)

工具

功能

search_docs

搜索内置 Ren'Py 中文官方文档(23 页),返回相关段落

list_doc_pages

列出所有可用文档页面

翻译检查(3 个)

工具

功能

list_translations

列出 game/tl/ 下所有语言,报告每个语言的文件数、对话块翻译数、字符串翻译条目数、GUI 文件齐全度,以及源语言(config.language)

check_translation

深度检查翻译覆盖。核心检测:某翻译文件只有 translate <lang> strings:(old/new)却没有 translate <lang> <hash>: 块翻译——Ren'Py 对话只认块翻译,字符串翻译不翻译对话,这种文件会让对话静默停留在源语言。还检测:重复 old 字符串(运行时报错)、未翻译的块、有对话却缺翻译文件的源文件

check_language_picker

校验 screens.rpy 语言选择器:检测"English"按钮误用 Language(None)(显示源文本)而非 Language("english")(应用翻译)、指向不存在 tl/ 文件夹的死按钮、已有翻译却缺按钮的情况

通用 CLI(1 个)

工具

功能

run_renpy

直接跑任意 Ren'Py CLI 子命令(compile / lint / translate / rtc 等),自定义超时。用于生成/刷新翻译文件(translate english)或编译超时时换一条路


📝 典型工作流

场景 1:接手陌生项目

list_labels(rich=True)    → 看全项目结构和跳转关系
list_definitions()         → 看有哪些角色/立绘/screen
read_script("start")      → 读入口标签代码
find_references("chapter_01") → 看谁调用了这个标签

场景 2:写新功能

search_docs("Movie")      → 查官方文档怎么播放视频
exec_rpy(...)              → 根据文档写正确的代码
check_project(force=True)  → 编译 + lint 验证

场景 3:遇到报错自动修复

auto_fix()                 → 自动检测并修复 5 类常见问题
manage_saves("clear_stale") → 清掉导致崩溃的陈旧存档

场景 4:重构前检查影响范围

find_references("arrow_round")  → 看谁调了它(12 处)
find_references("chapter_03")   → 没人调 = 死代码
find_references("typo_label")   → defined=False = 有 jump 指向不存在的标签

场景 5:多语言翻译排查("选了 English 还是中文")

list_translations()        → 看有哪些语言、每个语言翻译了多少
check_translation("english") → 抓"只有字符串翻译缺块翻译"的静默 bug
                             + 重复 old 字符串 + 缺翻译文件的源文件
check_language_picker()    → 校验"English"按钮是否误用 Language(None)
run_renpy("translate",["english"]) → 重新生成块翻译骨架

真实案例:一个章节的翻译文件被写成了字符串翻译格式(old/new),编译不报错, 但游戏里对话全是源语言——因为 Ren'Py 对话只认块翻译。check_translation 一眼就能抓到。


💡 设计说明

  • 文档离线可用:23 页官方文档打包在 src/renpy_mcp/docs/,不需要网络

  • BOM 安全:所有文件读写使用 utf-8-sig,不会漏掉第一行的 label

  • CJK 字体可选:exec_rpy 的 auto_cjk_font 默认关闭,不静默改 gui.rpy

  • SDK 自动探测:未设 RENPY_SDK_PATH 时自动扫描常见路径,按修改时间取最新

  • 修改类修复器保留 BOM:写入时检测原文件是否有 BOM,有则保留

  • 只读检查器不改代码:missing_labels 和 stale_saves 只报告不修改

  • 编译不卡死:subprocess 加 stdin=DEVNULL,超时可用 RENPY_SDK_PATH 环境变量旁的 RENPY_MCP_TIMEOUT 调整(默认 180s)

  • 翻译检查只读:check_translation / check_language_picker 只分析报告,绝不改你的翻译文件

  • 对话识别精准:统计源文件对话时只认已定义的 Character 变量名,不会把 color "#fff"、key "K_SPACE" 这类界面/样式属性行误判成对话


💬 反馈与贡献

如果这个项目对你有帮助,拜托:

  1. ⭐ 去仓库点个 Star:renpy-mcp

  2. 🐛 遇到问题提 Issue

  3. ✉️ 想交流可发邮件:3244940576@qq.com(作者:abbuibuibui)

也欢迎提交 Pull Request(请先说明改动目的与测试方式)~


📄 许可证

本项目基于 MIT License 开源。

Copyright (c) 2026 abbuibuibui

Related MCP Connectors

Related MCP Servers