{"id":44091657,"url":"https://github.com/kearril/rimsearcher","last_synced_at":"2026-03-05T08:11:47.937Z","repository":{"id":337049138,"uuid":"1152155305","full_name":"kearril/RimSearcher","owner":"kearril","description":"A Model Context Protocol (MCP) server for fast searching and retrieval of RimWorld source code.","archived":false,"fork":false,"pushed_at":"2026-02-12T17:13:46.000Z","size":212,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-12T21:52:01.819Z","etag":null,"topics":["csharp","dotnet","mcp","mcp-server","rimworld","rimworld-modding"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kearril.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-07T12:57:18.000Z","updated_at":"2026-02-12T16:20:49.000Z","dependencies_parsed_at":"2026-02-12T15:01:22.605Z","dependency_job_id":null,"html_url":"https://github.com/kearril/RimSearcher","commit_stats":null,"previous_names":["kearril/rimsearcher"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/kearril/RimSearcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kearril%2FRimSearcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kearril%2FRimSearcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kearril%2FRimSearcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kearril%2FRimSearcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kearril","download_url":"https://codeload.github.com/kearril/RimSearcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kearril%2FRimSearcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29411845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","mcp","mcp-server","rimworld","rimworld-modding"],"created_at":"2026-02-08T11:10:37.348Z","updated_at":"2026-02-13T16:01:25.622Z","avatar_url":"https://github.com/kearril.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RimSearcher: RimWorld 源码搜索 MCP 服务器\n\nRimSearcher 是 一个 基于 Model Context Protocol (MCP) 构建的高性能服务器，旨在为 AI 助手（如 Gemini, Claude 等）提供对 RimWorld 游戏源码（C#）和配置文件（XML）的高效检索与深度分析能力。\n\n本项目专门针对 RimWorld 模组开发和源码研究而设计，利用 C# 14 和 .NET 10 的先进特性，结合 Roslyn 编译器平台，彻底解决了 AI 因无法直接访问本地源码而导致的“知识盲区”和“幻觉”问题。\n\n本项目借助 Gemini 完成。\n\n---\n\n## 1. 核心优势\n\n*   **深度集成 Roslyn**：不同于普通的文本搜索，RimSearcher 能够理解 C# 语法树，支持**精准提取方法体**、生成**类成员大纲**以及构建**继承链图谱**。\n*   **智能 XML 继承解析**：针对 RimWorld 复杂的 `ParentName` 继承系统，自动进行递归合并，返回 AI 能够直接理解的**最终生效 XML**。\n*   **极速响应**：采用多线程内存预扫描机制，即使面对数万个文件的源码库，也能在毫秒级完成检索。\n*   **低 Token 损耗**：\n    *   **按需提取**：支持仅提取特定的 C# 方法或 XML 节点，避免将数千行的无关代码塞进 AI 的上下文。\n    *   **智能分页**：对于超长文件，支持按行读取和分页查看，保护 AI 的上下文窗口。\n*   **协议标准**：完全遵循 Anthropic 发布的 MCP 标准，无缝接入 Claude Desktop、Gemini CLI、Cursor 等支持 MCP 的 AI 工具。\n\n---\n\n## 2. 工具矩阵：强大的功能详解\n\nRimSearcher 暴露了 6 个互补的工具，AI 会根据任务需求灵活调用：\n\n### ️ `rimworld-searcher__locate` (全域快速定位)\n*   **功能**：搜索入口。支持对 C# 类型名、XML DefName 或文件名进行模糊搜索。\n*   **价值**：当 AI 知道一个术语（如 `Hediff_Injury`）但不知道它在哪个文件时，此工具能瞬间提供准确的物理路径，为后续分析打下基础。\n\n###  `rimworld-searcher__inspect` (深度资源解析)\n这是本项目最核心的工具，包含两种模式：\n*   **XML 模式**：自动处理 `Abstract` 模板和 `ParentName` 继承，展示**解析后的最终 XML 属性**。同时自动识别关联的 `thingClass`、`workerClass` 等 C# 类，并提供其代码路径。\n*   **C# 模式**：自动生成类的 **Mermaid 继承关系图** 和**成员大纲**（方法、字段、属性列表）。让 AI 瞬间掌握类的结构，无需通读几千行代码。\n\n###  `rimworld-searcher__read_code` (智能源码提取)\n*   **功能**：支持通过 `methodName` 直接提取特定的 C# 方法实现（利用 Roslyn 解析）。若方法名不存在，会自动返回可用方法列表供 AI **自我修正**。\n*   **价值**：AI 往往只需要理解一个 `Tick()` 方法的逻辑。此工具直接返回该方法的闭合代码块，极大节省了 Token 并提高了逻辑理解的准确度。\n\n###  `rimworld-searcher__trace` (引用与继承追踪)\n*   **功能**：\n    *   `inheritors` 模式：查找所有继承自该类的子类（例如：查找所有的 `HediffComp` 实现）。\n    *   `usages` 模式：在全库范围内查找特定符号（变量名、方法名）的所有引用位置。\n*   **价值**：用于分析代码的影响范围，寻找 Hook 点，或学习某种机制在游戏中的所有应用实例。\n\n###  `rimworld-searcher__search_regex` (全域正则搜索)\n*   **功能**：在全库范围内进行高级模式匹配。\n*   **价值**：适合寻找特定的硬编码字符串、特定的 XML 标签值，或复杂的代码模式。\n\n###  `rimworld-searcher__list_directory` (目录导航)\n*   **功能**：浏览项目文件层级。\n*   **价值**：帮助 AI 理解源码的组织结构或 Data 目录的分层。\n\n---\n\n## 3. AI 调用执行流程 (Execution Workflow)\n\n为了让 AI 像人类专家一样思考，RimSearcher 设计了一套协同工作流。以下以 AI 分析 **“护盾腰带（Shield Belt）是如何工作的”** 为例：\n\n1.  **第一步：全域定位 (Locate)**  \n    AI 调用 `locate(query: \"Apparel_ShieldBelt\")`。  \n    *结果：返回 `Defs/ThingDefs_Misc/Apparel_Belts.xml` 路径。*\n\n2.  **第二步：数据解析 (Inspect XML)**  \n    AI 调用 `inspect(name: \"Apparel_ShieldBelt\")`。  \n    *结果：RimSearcher 解析继承关系，展示合并后的 XML。AI 在 `comps` 列表中发现了 `\u003cli Class=\"CompProperties_Shield\" /\u003e`。*\n\n3.  **第三步：逻辑类锁定 (Inspect Comp)**  \n    AI 调用 `inspect(name: \"CompProperties_Shield\")`。  \n    *结果：AI 确认该属性类对应的逻辑实现类是 `RimWorld.CompShield`。*\n\n4.  **第四步：结构分析 (Inspect Code)**  \n    AI 调用 `inspect(name: \"RimWorld.CompShield\")`。  \n    *结果：返回 `CompShield` 的继承图和成员大纲。AI 发现了 `CompTick`（能量回复）和 `PostPreApplyDamage`（伤害吸收）等核心方法。*\n\n5.  **第五步：逻辑解析 (Read Code)**  \n    AI 分别调用 `read_code(methodName: \"PostPreApplyDamage\")`。  \n    *结果：AI 获取了护盾如何判断伤害来源、扣除能量、并在能量耗尽时触发 `Break()` 的具体 C# 实现。*\n\n**最终产出**：AI 结合数据和逻辑，为您生成一份基于真实源码、逻辑严谨的技术报告，彻底告别“一本正经的胡说八道”。\n\n---\n\n## 4. 技术栈\n\n*   **开发语言**: C# 14\n*   **运行时**: .NET 10.0\n*   **核心引擎**:\n    *   **Roslyn (Microsoft.CodeAnalysis)**: 微软官方 C# 解析库，支持深度静态分析。\n    *   **Custom XML Resolver**: 深度模拟 RimWorld 游戏引擎的 XML 加载与继承逻辑。\n\n---\n\n## 5. 快速开始\n\n### 前置要求\n*   安装 [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)\n\n### 安装步骤\n1.  从 **[Releases](https://github.com/kearril/RimSearcher/releases)** 下载最新的 `RimSearcher.Server.exe`。\n2.  在同目录下创建 `config.json`：\n    ```json\n    {\n      \"CsharpSourcePaths\": [\"C:/Path/To/Your/RimWorld/Source\"],\n    \n      \"XmlSourcePaths\": [\"C:/SteamLibrary/steamapps/common/RimWorld/Data\"]\n    }\n    ```\n\u003e  *CsharpSourcePaths* 应指向你本地的 RimWorld 的 C# 源码目录\n\u003e  *XmlSourcePaths* 应指向 RimWorld 的 Data 目录（包含所有 XML 定义）\n\n3.  在 AI 助手配置中添加：（可能需要创建mcp.json文件）（copilot的配置文件似乎需要把mcpServers改为servers）\n    ```json\n    {\n         \"mcpServers\": {\n          \"RimSearcher\": {\n           \"args\": [],\n           \"command\": \"Folder path to RimSearcher.Server.exe\",\n           \"cwd\": \"Folder path to RimSearcher\"\n         }\n      }\n    }\n    ```\n\u003e *command*需要指向RimSearcher.Server.exe的完整路径，*cwd*需要指向RimSearcher所在的文件夹路径\n\n### 验证服务器\n首先我们必须确保RimSearcher.Server.exe和config.json在同一目录下，以及config.json中的路径设置正确。\n![配置示例](Image/Snipaste_2026-02-07_23-20-57.png)\n然后运行RimSearcher.Server.exe，您应该会看到类似以下的输出，表示服务器已成功启动并加载了数据源：\n![启动成功示例](Image/Snipaste_2026-02-08_17-05-19.png)\n到此，RimSearcher 服务器已经成功运行，您可以在支持 MCP 的 AI 助手中调用相关工具进行源码查询和分析了！\n\n---\n\n### 开源协议\n本项目采用 MIT 协议\n### 如果这个项目对你有帮助，欢迎在 GitHub 上给我点个 Star ⭐，这将是对我最大的支持！\n*Powered by .NET 10 \u0026 Gemini CLI.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkearril%2Frimsearcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkearril%2Frimsearcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkearril%2Frimsearcher/lists"}