______________________________________________________________________
许可证:mit 标签:
- 主控程序
- 克劳德
- 文件系统
- 窗户
- Dotnet
语言:
- 英语
______________________________________________________________________
手术文件系统MCP服务器(C#)
一个C#MCP服务器,提供容忍空白的文件编辑工具。
ClipMicro战斗测试代码的直接移植,包括:
- 6策略匹配级联
UpdateFindReplaceWithResult - ACID备份/回滚
BackupManager
相同的代码。同样的行为。没有翻译错误。
快速入门(预构建二进制文件)
从下载 release/ 文件夹:
surgical-fs-mcp.exe-独立可执行文件surgical-fs-mcp.dll-用于dotnetModelContextProtocol.dll-所需依赖关系
无需构建-只需配置Claude Desktop(见下文)。
特性
6-策略容错匹配
直接从ClipMicro移植 UpdateFindReplaceWithResult:
| 战略 | 它处理什么 |
|---|---|
| 1.精确匹配 | 完美输入 |
| 2.行尾归一化 | CRLF vs LF vs CR |
| 3.修剪空白 | 前导/尾随空白 |
| 4.选项卡规范化 | 选项卡→ 4 空间 |
| 5.模糊空白 | 折叠 \s+ → 单行空格 |
| 6.部分行匹配 | 单行子字符串匹配 |
ACID事务支持
直接从ClipMicro移植 BackupManager:
- 操作前备份:文件已备份到
.surgicalfs_backup_YYYYMMDD_HHMMSS/ - 自动回滚:在任何故障时,原始文件都会恢复
- 新文件跟踪:在失败的交易中创建的文件将被删除
- 新目录跟踪:删除失败事务期间创建的空目录
- 批处理事务:将多个编辑作为一个原子操作
工具
| 工具 | 说明 |
|---|---|
SurgicalEdit | 查找/替换为6策略匹配+ACID |
EditLines | 用数字+ACID替换行 |
InsertLines | 在行插入,不替换+ACID |
DeleteLines | 删除行范围+ACID |
PreviewEdit | 显示差异而不应用(只读) |
ReadFileLines | 读取带有行号的文件(只读) |
BatchEdit | 作为单个ACID事务进行多次编辑 |
安装
先决条件
- .NET 8.0 SDK
- 克劳德桌面版
构建
cd C:\Users\bradc\Documents\ClaudeWorkspace\Projects\surgical-fs-mcp
dotnet restore
dotnet build --configuration Release配置允许的目录
编辑 SurgicalFsMcp.cs 并修改 AllowedDirectories 在 PathValidator 类别:
private static readonly List AllowedDirectories = new()
{
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Projects"),
@"C:\Your\Custom\Path",
};更改后重建。
配置Claude桌面
编辑 %APPDATA%\Claude\claude_desktop_config.json:
选项1:使用dotnetrun(更易于开发)
{
"mcpServers": {
"surgical_fs": {
"command": "dotnet",
"args": ["run", "--project", "C:\\Users\\bradc\\Documents\\ClaudeWorkspace\\Projects\\surgical-fs-mcp\\SurgicalFsMcp.csproj"]
}
}
}选项2:使用编译的exe(更快启动)
{
"mcpServers": {
"surgical_fs": {
"command": "C:\\Users\\bradc\\Documents\\ClaudeWorkspace\\Projects\\surgical-fs-mcp\\bin\\Release\\net8.0\\surgical-fs-mcp.exe"
}
}
}配置后重新启动Claude Desktop。
使用示例
单次手术编辑
SurgicalEdit(
path: "config.json",
find: '"debug": false',
replace: '"debug": true'
)退货: ✅ Success: Edit applied using 'exact_match' matching
编辑前预览
PreviewEdit(
path: "config.json",
find: '"debug": false',
replace: '"debug": true'
)返回一个差异,显示会发生什么变化。
批量编辑(ACID事务)
BatchEdit(edits_json: '[
{"path": "file1.cs", "find": "oldMethod", "replace": "newMethod"},
{"path": "file2.cs", "find": "oldMethod", "replace": "newMethod"},
{"path": "file3.cs", "find": "oldMethod", "replace": "newMethod"}
]')如果任何编辑失败,所有更改都会自动回滚。
基于行的编辑
ReadFileLines(path: "code.cs", start_line: 50, end_line: 60)
EditLines(path: "code.cs", start_line: 52, end_line: 55, new_content: "// new code here")ACID回滚的工作原理
- 在任何修改之前:将原始文件内容复制到备份目录
- 运行期间:更改将应用于原始文件
- 关于成功:备份目录已删除
- 出现故障时:
- 从备份中恢复原始内容 - 任何新创建的文件都将被删除 - 任何新创建的空目录都将被删除 - 错误消息包括“回滚”确认
安全
- 根据允许的目录进行路径验证
- 目录遍历(
..)封锁了 - 强制UTF-8编码
- 备份目录已自动清理
学分
- 6种策略匹配:ClipMicro的直接端口
UpdateFindReplaceWithResult - ACID备份系统:来自ClipMicro的直接端口
BackupManager - 原始ClipMicro: ClipMicro.com
