内容
# Rider 原生重命名 MCP
将 JetBrains Rider 的原生重命名重构功能暴露给与 MCP 兼容的 AI 代理。
该项目将 MCP 客户端连接到 Rider 内置的重命名工作流,使代理可以请求真正的 IDE 重命名,而不仅仅是进行纯文本替换。结果更接近开发人员在 Rider 中手动执行的操作:符号感知更新、跨文件编辑以及 Rider 认为必要的文件重命名。
## 亮点
- 使用 Rider 的原生重命名管道,而不是自定义的基于文本的重命名流程
- 支持类、接口和方法
- 通过 Rider 更新跨文件的引用
- 当 Rider 认为必要时,可以重命名相应的 `.cs` 文件
- 同时支持 Windows 路径和 WSL 路径
- 通过 `127.0.0.1` 上的循环桥接保持所有操作本地化
## 工作原理
该系统有两个运行时组件:
1. Rider 插件,在 Rider/ReSharper 后端启动本地 HTTP 桥接。
2. stdio MCP 伴侣进程,由 MCP 主机启动。
当 Rider 打开启用插件的解决方案或项目时,插件会写入一个发现文件:
```text
.idea/rider-native-rename-mcp.json
```
该文件包含本地桥接地址和每个项目的身份验证令牌。MCP 伴侣读取该文件,连接到桥接,并将工具调用转发到 Rider。
## 仓库布局
- `src/rider`
Rider 前端插件打包
- `src/dotnet`
ReSharper/Rider 后端桥接实现
- `bridge-contract`
插件和 MCP 伴侣的共享 DTO 和路径帮助器
- `agent-mcp`
stdio MCP 服务器
## 要求
- Rider 2025.3 或更高版本
- JDK 21,用于构建 IntelliJ/Rider 插件和 MCP 伴侣
- .NET SDK,用于构建 Rider 后端插件项目
## 构建
```bash
cd /path/to/RiderNativeRenameMcp
./gradlew buildPlugin
./gradlew :agent-mcp:installDist
```
构建输出:
- Rider 插件 zip:
`output/ReSharperPlugin.RiderNativeRenameMcp-1.0.0.zip`
- Linux 或 WSL 上的 MCP 启动器:
`agent-mcp/build/install/rider-native-rename-mcp/bin/rider-native-rename-mcp`
- Windows 上的 MCP 启动器:
`agent-mcp/build/install/rider-native-rename-mcp/bin/rider-native-rename-mcp.bat`
## 下载
预构建的二进制文件可从 GitHub Releases 获取:
https://github.com/Tairitsua/rider-native-rename-mcp/releases
典型资产:
- `ReSharperPlugin.RiderNativeRenameMcp-1.0.0.zip`
直接在 Rider 中通过 `设置` -> `插件` -> `从磁盘安装插件...` 安装此 zip 文件
- `rider-native-rename-mcp-1.0.0-agent.tar.gz`
包含预构建的 MCP 伴侣、启动脚本和捆绑的库
## 安装 Rider 插件
1. 使用 `./gradlew buildPlugin` 构建插件 zip。
2. 在 Rider 中打开 `设置` -> `插件`。
3. 点击齿轮图标 -> `从磁盘安装插件...`。
4. 选择 `output/ReSharperPlugin.RiderNativeRenameMcp-1.0.0.zip`。
5. 重启 Rider。
6. 在 Rider 中打开目标解决方案或项目。
Rider 加载目标项目后,发现文件应出现在 `.idea/` 下。
## 配置 MCP 客户端
任何与 MCP 兼容的客户端都可以启动 stdio 伴侣。以下是 Codex 的示例命令,因为它是一个常见的 MCP 主机,但服务器本身与 Codex 无关。
### 选项 1:`codex mcp add`
WSL 或 Linux:
```bash
codex mcp add rider-native-rename -- \
/path/to/RiderNativeRenameMcp/agent-mcp/build/install/rider-native-rename-mcp/bin/rider-native-rename-mcp
```
Windows:
```powershell
codex mcp add rider-native-rename -- `
D:\path\to\RiderNativeRenameMcp\agent-mcp\build\install\rider-native-rename-mcp\bin\rider-native-rename-mcp.bat
```
### 选项 2:`config.toml`
WSL 或 Linux:
```toml
[mcp_servers.rider-native-rename]
command = "/path/to/RiderNativeRenameMcp/agent-mcp/build/install/rider-native-rename-mcp/bin/rider-native-rename-mcp"
```
Windows:
```toml
[mcp_servers.rider-native-rename]
command = "D:\\path\\to\\RiderNativeRenameMcp\\agent-mcp\\build\\install\\rider-native-rename-mcp\\bin\\rider-native-rename-mcp.bat"
```
有用的 Codex 命令:
```bash
codex mcp list
codex mcp get rider-native-rename
```
## MCP 工具
### `rider_native_status`
检查 Rider 桥接是否可用于给定项目。
参数:
- `project_path`
### `rider_native_rename`
在文件位置调用 Rider 的原生重命名重构。
必需参数:
- `project_path`
- `file_path`
- `line`
- `column`
- `new_name`
可选参数:
- `search_in_comments`
- `search_text_occurrences`
## 示例请求
MCP 主机的示例提示格式:
```text
使用 rider_native_rename,参数如下:
project_path=/path/to/YourSolution
file_path=/path/to/YourSolution/src/App/Services/IOrderService.cs
line=8
column=18
new_name=IOrderQueryService
```
## 安全模型
- 桥接仅监听 `127.0.0.1`
- 每个打开的项目都有自己的身份验证令牌
- 令牌存储在 `.idea/rider-native-rename-mcp.json` 中
- MCP 伴侣在每次桥接请求中使用该令牌
## 行为说明
- 重命名通过 Rider 运行,而不是通过单独的 Roslyn 实现
- 如果 Rider 决定需要预览或冲突对话框,Rider 仍可能显示 UI
- 路径输入可以是 Windows 样式或 WSL 样式
- 更新插件或 MCP 伴侣时,重启 Rider 以刷新桥接和发现文件是最安全的做法
## 故障排除
如果 `rider_native_status` 失败:
1. 确保 Rider 正在运行,并且目标解决方案已打开。
2. 确认 `.idea/rider-native-rename-mcp.json` 存在于目标项目中。
3. 在更新插件后重启 Rider。
4. 如果 Rider 仍在加载较旧的构建,请重新安装插件 zip。
如果重命名请求失败:
1. 验证 `file_path`、`line` 和 `column` 是否指向目标符号。
2. 检查 Rider 是否显示预览或冲突 UI。
3. 确认目标符号类型当前受支持。
## 当前范围
该项目目前专注于 Rider 原生重命名,适用于:
- 类
- 接口
- 方法
设计留有空间,以便稍后添加更多 Rider 原生重构。