Token导航 LogoToken导航TokenDH.com
C Sharp Refactor MCP logo
开发工具未说明官方级别未说明来源级核验

C Sharp Refactor MCP

MCP Server

一个通过模型上下文协议(MCP)提供安全、编译器感知的多语言代码重构服务的语义桥梁,支持C#、VB.NET、TypeScript、Python、Go、C++、Java和Rust等多种编程语言。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude开发工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Jonathangadeaharder

提供方

Jonathangadeaharder

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

多语言重构MCP服务器

AI代理和代码之间的语义桥梁,提供 安全、编译器感知的重构 通过模型上下文协议(MCP)跨多种编程语言。

概述

该服务器通过将语义分析引擎与人工智能代理相结合,改变了人工智能驱动的开发。这种架构允许代理生成重构代码,而不是让人工智能生成重构代码(这很容易出错) 请求 由特定语言的语义引擎执行的重构:

  • C:Roslyn(.NET编译器平台)
  • VB.NET语言:Roslyn(.NET编译器平台)
  • TypeScript:TypeScript语言服务器
  • python:Pyright(Python类型检查器和语言服务器)
  • :gopls
  • C: clangd
  • Java:Eclipse JDT语言服务器
  • :锈蚀分析仪

主要特点

  • 多语言支持:C#、VB.NET、TypeScript、Python、Go、C++、Java和Rust
  • 语义安全:所有重构都使用特定于语言的语义模型,而不是文本操作
  • 自动语言检测:从项目文件中检测语言
  • 统一API:相同的MCP工具适用于所有语言
  • 混合式结构:罗斯林。NET语言,其他语言的LSP
  • 项目范围内的运营:重构工作贯穿整个项目和所有引用
  • 路径安全:根据配置的允许目录验证所有文件访问权限
  • MCP协议:Claude、GitHub Copilot和其他AI工具支持的标准协议

建筑

核心组件

  1. 语言提供者抽象 (ILanguageProvider)

- 所有语言特定操作的统一界面 - 可扩展性插件架构 - 支持基于Roslyn和LSP的提供商

  1. 语言提供者

- CSharp语言提供商:使用Roslyn进行语义分析 - TypeScript语言提供程序:通过LSP使用打字语言服务器 - GoLanguageProvider:通过LSP使用gopls - Cpp语言提供程序:通过LSP使用cland - Java语言提供程序:通过LSP使用Eclipse JDT - RustLanguage提供商:通过LSP使用锈蚀分析仪

  1. 语言检测服务

- 自动检测项目文件中的语言 - 将文件扩展名映射到语言提供商 - 支持特征文件检测(go.mod、Cargo.toml等)

  1. LspClient

- 通用LSP(语言服务器协议)客户端 - 管理与语言服务器的通信 - 处理初始化、请求和通知

  1. 路径安全服务

- 根据允许的目录验证所有文件路径 - 防止路径遍历攻击 - 可通过以下方式配置 appsettings.json

  1. 统一的重构工具

- 与语言无关的MCP工具 - 自动委派给适当的语言提供者 - 所有语言的API一致

为什么是这种架构?

操作不安全(正则表达式/文本)安全(语义分析)
重命名符号不同作用域中同名符号的断点正确处理作用域、重载、跨文件引用
查找引用查找文本匹配项(包括注释、字符串)仅查找真正的语义引用
提取方法无法确定正确的签名使用数据流分析进行正确的签名

多语言支持:

  • C:Roslyn与MSBuild工作区支持完全集成
  • VB.NET语言:Roslyn与MSBuild工作区支持完全集成
  • Types/JavaScript:基于LSP,支持TypeScript编译器API
  • python:基于LSP的Pyright类型检查器和语义分析
  • :基于LSP的gopls语义分析
  • C:基于LSP的cland(LLVM)语义分析
  • Java:基于LSP的Eclipse JDT编译器
  • :基于LSP的锈蚀分析器语义分析

可用工具

1. load_project

将项目加载到内存中。 必须先打电话 在任何其他操作之前。自动检测语言。

支持的项目文件:

  • C .sln, .csproj
  • VB.NET: .sln, .vbproj
  • TypeScript: tsconfig.json, package.json
  • python pyproject.toml, setup.py, requirements.txt
  • 去: go.mod
  • C CMakeLists.txt, compile_commands.json
  • Java pom.xml, build.gradle
  • 锈蚀: Cargo.toml

参数:

  • projectPath (string):项目文件的绝对路径

例子:

{
  "name": "load_project",
  "arguments": {
    "projectPath": "/home/user/projects/MyProject/MyProject.sln"
  }
}
{
  "name": "load_project",
  "arguments": {
    "projectPath": "/home/user/projects/my-app/tsconfig.json"
  }
}

2. get_diagnostics

获取编译诊断(错误、警告)。 关键安全检查 在重构之前。

参数:

  • solutionPath (string):解决方案路径
  • severityFilter (字符串):“错误”、“警告”、“信息”或“全部”(默认值:“警告”)

退货:

  • isSafeToRefactor (bool):如果存在编译错误,则为false
  • diagnostics (array):位置和消息问题列表

3. find_all_references

查找整个解决方案中对符号的所有语义引用。

参数:

  • solutionPath (string):解决方案路径
  • documentPath (string):.cs文件的路径
  • line (int):行号(从1开始)
  • column (int):列号(从1开始)

4. rename_symbol

使用Roslyn的重命名器API在整个解决方案中安全地重命名符号。

参数:

  • solutionPath (string):解决方案路径
  • documentPath (string):.cs文件的路径
  • line (int):符号的行号
  • column (int):符号列号
  • newName (string):符号的新名称

安全特性:

  • 正确处理作用域(不会重命名同名的无关符号)
  • 解决过载冲突
  • 更新所有项目和参考文献
  • 验证命名约定

5. get_symbol_info

获取有关符号的详细信息(类型、命名空间、可访问性等)。

参数:

  • solutionPath, documentPath, line, column

6. extract_method

将所选代码提取到具有正确签名的新方法中。

参数:

  • solutionPath (字符串)
  • documentPath (字符串)
  • startLine, startColumn (int):开始选择
  • endLine, endColumn (int):选择结束
  • newMethodName (string):提取方法的名称

工作原理:

  1. 对所选代码执行数据流分析
  2. 标识输入变量(DataFlowsIn)→ 方法参数
  3. 标识输出变量(DataFlowsOut)→ 返回值
  4. 生成具有正确签名的方法
  5. 用方法调用替换选择

7. encapsulate_field

通过创建属性并更新所有引用来封装字段。

参数:

  • solutionPath, documentPath, line, column

流程:

  1. 使用get/set访问器创建公共属性
  2. 将字段设置为私有
  3. 查找对该字段的所有引用
  4. 更新引用以使用属性

安装和设置

先决条件

核心:

  • .NET 8.0 SDK或更高版本(必需)
  • MSBuild(与.NET SDK一起安装,需要C#支持)

语言服务器(仅安装您需要的内容):

  • TypeScript: npm install -g typescript-language-server typescript
  • python npm install -g pyright
  • 去: go install golang.org/x/tools/gopls@latest
  • C apt-get install clangdbrew install llvm
  • Java:Eclipse JDT语言服务器
  • 锈蚀: rustup component add rust-analyzer

安装.md 了解详细的安装说明。

构建服务器

# Clone the repository
cd /path/to/multi-language-refactor-server

# Restore dependencies
dotnet restore

# Build the project
dotnet build

# Optional: Publish as self-contained executable
dotnet publish -c Release -o ./publish

配置安全

编辑 appsettings.json 设置允许的根目录:

{
  "Security": {
    "AllowedRootPaths": [
      "/home/user/projects",
      "/workspace",
      "C:\\dev",
      "C:\\Users\\YourName\\source"
    ]
  }
}

重要提示: 服务器将只访问这些目录中的文件。这可以防止路径遍历攻击。

客户端配置

克劳德桌面(Anthropic)

增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "multi-language-refactor": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/absolute/path/to/RoslynRefactorServer.csproj"
      ]
    }
  }
}

或者,如果使用已发布的可执行文件:

{
  "mcpServers": {
    "multi-language-refactor": {
      "command": "/absolute/path/to/publish/RoslynRefactorServer"
    }
  }
}

对于VS代码/GitHub副本

创建 .vscode/mcp.json 在您的工作空间中:

{
  "servers": {
    "multi-language-refactor": {
      "type": "stdio",
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/absolute/path/to/RoslynRefactorServer.csproj"
      ]
    }
  }
}

使用示例

AI代理工作流

安全重构的推荐工作流程(适用于所有语言):

1. AI: load_project("/path/to/project-file")
   → Server detects language and loads project
   → Examples: MyProject.sln, tsconfig.json, go.mod, Cargo.toml

2. AI: get_diagnostics("/path/to/project-file", "Error")
   → Server checks for compilation/lint errors
   → If errors found, AI should ask user to fix them first

3. AI: find_all_references("/path/to/project-file", "/path/to/source-file", 10, 15)
   → AI understands impact of changes

4. AI: rename_symbol(..., newName: "BetterName")
   → Server performs safe rename across project
   → All files updated semantically

5. AI: get_diagnostics(...) [Optional verification]
   → Confirms refactoring didn't break compilation

不同语言提示示例

C

I have a C# solution at /home/user/projects/MyApp/MyApp.sln

Please use the multi-language-refactor tools to:
1. Load the solution
2. Check for compilation errors
3. Find all references to the "ProcessData" method in MyService.cs (line 45)
4. If safe, rename it to "ProcessDataAsync"
5. Verify no errors were introduced

TypeScript:

I have a TypeScript project at /home/user/projects/my-app/tsconfig.json

Please refactor my code:
1. Load the project
2. Find all references to the "getUserData" function in user.service.ts (line 23)
3. Rename it to "fetchUserData"

去:

I have a Go project at /home/user/projects/my-service/go.mod

Please help me refactor:
1. Load the project
2. Find all references to the "ProcessRequest" function in handler.go (line 56)
3. Rename it to "HandleRequest"

锈蚀:

I have a Rust project at /home/user/projects/my-crate/Cargo.toml

Please refactor:
1. Load the project
2. Find all references to the "compute_value" function in lib.rs (line 34)
3. Rename it to "calculate_value"

性能注意事项

初始加载时间

  • 第一 load_solution 呼叫:大型解决方案可能需要5-30秒
  • 后续操作:快速(使用缓存工作区)
  • 缓存失效:外部文件更改时自动执行

内存使用

  • 加载的解决方案保留在内存中(大型企业解决方案为1-3GB)
  • 作为持久进程运行,而不是按请求运行
  • 在所有AI工具调用中共享缓存

并发

  • 多个 操作(诊断、查找参考):并行运行
  • 多个 操作(重命名、提取):按解决方案序列化
  • 多种解决方案:可以同时处理

代码质量和结构

结构线

该项目使用 结构线 执行项目结构和组织标准。这确保了一致的命名约定、目录组织,并防止了提交的构建工件或秘密等常见问题。

本地运行:

structurelint .

docs/STRUCTURELINT.md 了解详细的配置和使用方法。

持续集成

该项目包括一个GitHub Actions工作流,该工作流:

  • ✅ 使用structureline验证项目结构
  • ✅ 构建项目
  • ✅ 运行所有测试
  • ✅ 将输出捕获到 build-test.log
  • 根据您的提交修改日志 (推送时自动提交)

查看CI结果

推到您的分支后:

# Pull the amended commit (force required)
git pull --force

# View the CI log
cat build-test.log

或查看 build-test.log 直接在GitHub上提交。

为什么是这种模式?

传统的CI日志存在于GitHub Actions UI中并过期。此工作流存储日志 在承诺本身:

  • ✅ 永久记录(不会过期)
  • ✅ 离线访问(克隆仓库,获取日志)
  • ✅ 版本控制(与特定提交绑定)
  • ✅ 无需仪表板(只需 cat build-test.log)

在本地运行测试

# Run all tests
dotnet test

# Run tests with detailed output
dotnet test --verbosity detailed

# Run tests with coverage (requires additional tools)
dotnet test /p:CollectCoverage=true

📖 完整的CI文档:参见 docs/CI-WORKFLOW.md 有关修改过程、故障排除和最佳实践的详细信息。

故障排除

“注册MSBuild失败”

解决方案: 安装。NET SDK。MSBuild是必需的。

“路径验证失败”

解决方案: 将解决方案的目录添加到 AllowedRootPathsappsettings.json.

“在指定位置找不到符号”

解决方案:

  • 确保行号/列号从1开始(而不是从0开始)
  • 将光标直接放置在符号名称上
  • get_diagnostics 确保代码能够编译

过期缓存/“更改不可见”

服务器会自动检测文件更改。如果问题仍然存在:

  1. 重新加载解决方案:调用 load_solution 再次
  2. 如果时间戳更改,缓存将刷新

性能问题

  • 首次加载缓慢(预期)
  • 如果后续操作缓慢,请检查溶液大小
  • 考虑拆分非常大的解决方案

技术细节

协议

  • 运输: 标准输入/输出
  • 格式: JSON-RPC 2.0
  • 登录中: 仅限stderr(stdout保留用于协议)

使用的Roslyn API

  • MSBuildWorkspace:溶液加载
  • SemanticModel:符号解析和语义分析
  • SymbolFinder:交叉解决方案参考查找
  • Renamer:安全符号重命名
  • DataFlow Analysis:提取方法签名生成
  • SyntaxRewriter:自定义AST转换
  • SyntaxGenerator:代码生成

线程安全

  • 单例 RoslynWorkspaceService 随着 ConcurrentDictionary 缓存
  • 根据解决方案 SemaphoreSlim 用于写操作的锁
  • Roslyn的不可变数据结构实现了无锁读取

体系结构决策

为什么选择MSBuildWorkspace?

  • 只有Roslyn工作区类型可以理解.sln和.csproj文件
  • 解析项目引用和NuGet包
  • 完整语义模型所需

为什么是国家服务?

  • 加载解决方案非常昂贵(对于大型代码库,10-30秒)
  • 重构产生新的 Solution 对象(不可变)
  • 必须在整个运营过程中保持“领先地位”

为什么选择MCP协议?

  • 行业标准(Anthropic、微软)
  • 与Claude、GitHub Copilot和其他工具配合使用
  • AI(建议者)和编译器(执行者)之间的清晰分离

未来的增强功能

工具套件的潜在补充:

  1. 代码分析器:公开Roslyn分析器进行代码质量检查
  2. 代码修复:自动应用编译器建议的修复程序
  3. Roslynator集成:从Roslynator库中公开500多个重构
  4. 内联函数:提取方法相反
  5. 将类型移动到文件:将类移动到其自己的文件中
  6. 生成构造函数:从所选字段
  7. 添加参数:使用参考更新的方法

贡献

该服务器实现了“人工智能驱动开发的新架构:Roslyn MCP服务器”中描述的架构。

添加新工具

  1. 添加方法 RefactoringToolsAdvancedRefactoringTools
  2. 标记 [McpTool] 属性
  3. 添加 [Description] 方法和所有参数
  4. 注入 RoslynWorkspaceServicePathSecurityService
  5. 遵循以下模式:验证→ load → 分析→ 变换→ 提交

参考文献

许可证

MIT许可证-请参阅 许可证 了解详情。

支持

对于问题、疑问或贡献,请\[创建问题\]或联系维护人员。

目录标签

目录标签

PythonClaude开发工具代码重构本地部署多语言支持语义分析编译器集成AI开发工具

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP