Token导航 LogoToken导航TokenDH.com
Csharp Review MCP logo
开发工具未说明官方来源来源级核验

Csharp Review MCP

MCP Server

一个提供C#和.NET官方文档访问及基于Roslyn的代码分析服务的MCP服务器,用于执行专业的代码审查。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
代码审查.NET开发C#Claude静态分析Claude DesktopClaude

安装说明

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

作者 / 组织

JojoSlice

提供方

JojoSlice

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

C# 评审MCP服务器

一个模型上下文协议(MCP)服务器,它为大型语言模型(LLMs)提供访问官方C#和.NET文档的权限,并支持基于Roslyn的代码分析,以进行专业代码审查。

概述

这个MCP服务器提供了:

  • MCP Resources(公司名,可译为)“MCP资源公司”微软官方的C#和.NET文档
  • MCP 工具用于搜索和获取特定文档的工具
  • Roslyn 代码分析带有诊断、指标和建议的静态代码分析
  • 智能缓存本地缓存,用于快速访问并减少网络使用

特点/特性

资源(随时可用)

  • csharp://coding-conventions - 官方C#编码规范
  • csharp://design-guidelines 。.NET 设计指南
  • csharp://language-reference - C# 语言参考
  • csharp://fundamentals 。.NET 基础知识

文档工具

  • fetch_csharp_documentation - 获取特定的C#或.NET文档
  • search_best_practices - 在特定领域寻找最佳实践:

- 安全 - 演出 - 例外情况 - \async\(在编程中通常与 \await\ 一起使用)翻译为中文是“异步”。 - LINQ(Language Integrated Query,语言集成查询) - 将军

Roslyn分析工具

  • analyze_csharp_code - 使用Roslyn分析C#代码,提供:

- 编译错误和警告(包括StyleCop分析器) - 代码度量(类的数量、方法的数量、行数、圈复杂度) - 安全分析SQL注入、硬编码秘密、不安全的文件操作、弱随机数生成 - 性能分析在循环中进行字符串连接,不必要的实体化,ConfigureAwait 的使用 - LINQ 优化计数与任意比较,位置链式查询,OrderBy优化 - 改进建议(方法冗长、文档缺失、命名问题等)

  • check_roslyn_status - 检查Roslyn分析器是否已构建并准备就绪
  • build_roslyn_analyzer - 构建 Roslyn 分析器(首次使用前必需)

安装

快速入门(推荐)

# Clone or navigate to the project
cd /path/to/csharp-review-mcp

# Run the setup script (installs everything)
npm run setup

安装脚本将:

  1. 安装npm依赖项
  2. 构建TypeScript项目
  3. 检查是否已安装.NET SDK
  4. 构建 Roslyn 分析器(如果已安装 .NET SDK)

手动安装

# Install npm dependencies
npm install

# Build TypeScript project
npm run build

# (Required for Roslyn) Install .NET SDK 8.0+
# https://dotnet.microsoft.com/download

# Build Roslyn analyzer
npm run build-roslyn

# (Optional) Pre-populate cache with important documentation
npm run prepopulate

系统要求

  • Node.js 18+(必需)
  • npm(Node Package Manager) (必填)
  • .NET SDK 8.0及以上版本 (可选,用于Roslyn分析)

- 如果未安装.NET SDK,服务器仍可运行,但将不具备Roslyn功能

使用方法

作为MCP服务器

在您的MCP客户端配置(例如,Claude Desktop)中添加:

{
  "mcpServers": {
    "csharp-review": {
      "command": "node",
      "args": ["/absolute/path/to/csharp-review-mcp/build/index.js"]
    }
  }
}

预填充缓存

为了提高性能并支持离线使用,请运行:

npm run prepopulate

这将会:

  1. 从Microsoft Learn获取所有重要文档
  2. 将其转换为Markdown格式
  3. 本地缓存于 src/documents/
  4. 缓存有效期为7天

建筑学

文档来源

服务器从以下官方来源获取文档:

  • C# 编码规范https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions 翻译为中文是:https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/coding-style/coding-conventions(注:实际网址可能保持英文,但这里按照翻译要求给出了中文表述的网址结构,实际使用时网址仍应保持原样)。不过,通常网址不会翻译,这里是为了说明翻译的内容,实际应用中网址应保持不变。简洁来说,就是该网址链接指向的是关于C#编程规范的文档页面
  • C# 语言参考https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/ 的中文翻译是:“https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/”(注:实际网址在中文环境下可能仍保留英文,但此处按翻译要求给出中文表述)。不过,更常见的做法是直接使用英文网址,因为技术文档和资源通常以英文为主。所以,直接表述为“https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/”即可,无需翻译成中文网址形式
  • .NET 基础知识https://learn.microsoft.com/zh-cn/dotnet/fundamentals/(注:原链接为英文版,此处提供中文版的对应链接,实际翻译时需根据具体情况调整,因为网址本身是技术性的,不直接翻译,但可说明其为中文版的微软.NET基础知识页面)
  • .NET 设计指南https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/ 翻译为中文是:https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/(注:实际网址在中文环境下可能仍保持原英文形式,但此处按照翻译要求给出了中文表述的网址结构示例,实际使用时应保持原英文网址不变)。不过,更准确的表述是,该网址指向的是微软官方文档中关于.NET 标准设计指南的部分,中文环境下访问时,页面内容会以中文呈现,但网址本身仍为英文

缓存策略

  • 缓存被放置在 src/documents/
  • 缓存有效期为7天
  • 如果缓存已过期,可根据请求自动更新
  • 在网络错误时回退到占位符
  • 使用 Turndown 库进行专业的 HTML 到 Markdown 转换,具有更好的代码块处理能力

文件结构

/path/to/csharp-review-mcp/
├── src/
│   ├── index.ts              # MCP server implementation
│   ├── docFetcher.ts         # Documentation fetcher
│   ├── roslynAnalyzer.ts     # Roslyn analyzer wrapper
│   ├── prepopulateCache.ts   # Cache population script
│   └── documents/            # Local cache for documentation
├── roslyn-analyzer/
│   ├── Program.cs            # C# Roslyn analyzer application
│   ├── CSharpAnalyzer.csproj # .NET project file
│   └── bin/                  # Compiled .NET binary
├── build/                     # Compiled TypeScript
├── setup.sh                   # Setup script
├── package.json
├── tsconfig.json
└── README.md

使用示例

1. 大语言模型(LLM)阅读编码规范

LLM: *reads resource csharp://coding-conventions*
→ Gets access to official Microsoft C# coding standards

2. 大语言模型(LLM)寻找最佳实践

LLM: *uses tool search_best_practices with area="async"*
→ Gets recommendations about async/await best practices

3. 大语言模型(LLM)获取特定文档

LLM: *uses tool fetch_csharp_documentation*
→ topic: "LINQ"
→ category: "language-reference"
→ Gets detailed LINQ documentation

4. LLM使用Roslyn分析C#代码

LLM: *uses tool analyze_csharp_code*
→ code: "public class MyClass { public void MyMethod() { ... } }"
→ Returns:
  - Diagnostics: compilation errors, warnings, StyleCop violations
  - Metrics: 1 class, 1 method, 15 lines, complexity: 3
  - Suggestions:
    * "Method 'MyMethod' is missing XML documentation"
    * "SECURITY: Potential SQL injection risk detected"
    * "PERFORMANCE: String concatenation inside loop detected"
    * "LINQ: Use Any() instead of Count() > 0 for better performance"

5. 完整的代码审查工作流程

1. LLM reads csharp://coding-conventions for standards
2. LLM analyzes code with analyze_csharp_code
3. LLM compares results with coding conventions
4. LLM searches best practices for specific areas
5. LLM provides detailed feedback based on:
   - Roslyn diagnostics and StyleCop Analyzers
   - Security analysis (SQL injection, secrets, unsafe operations)
   - Performance analysis (string handling, LINQ, async patterns)
   - LINQ optimizations
   - Microsoft's official guidelines
   - Best practices

发展

构建项目

npm run build

监视模式(自动重建)

npm run watch

直接启动服务器

npm start

Roslyn 分析器功能

集成的Roslyn分析器提供了全面的代码分析,涵盖多个专门类别:

诊断

  • 编译错误和警告
  • StyleCop 分析器根据C#最佳实践进行自动样式检查
  • 最佳实践违规
  • 代码异味检测

指标

  • 班级数量
  • 方法的数量
  • 代码行数
  • 圈复杂度

基本建议

  • 过长的方法(>50行)
  • 缺少公共方法的XML文档
  • 没有“Async”后缀的异步方法
  • 大班(>20人)
  • 圈复杂度高(>10)

安全分析 🔒

  • SQL注入检测SQL查询中的字符串连接
  • 硬编码的秘密(或硬编码的凭证)在代码中查找密码、API密钥、连接字符串
  • 异常处理警告:使用无日志记录的通用处理程序
  • 文件操作检测不安全的文件/目录操作
  • 密码学在使用 System.Random 进行安全敏感操作时发出警告

性能分析 ⚡

  • 字符串连接检测循环中的字符串拼接(建议使用StringBuilder)
  • LINQ 物化发现 Count/Any 之前存在不必要的 ToList() 调用
  • 延迟执行警告:对 IEnumerable 进行多次枚举
  • 字符串格式化建议使用插值代替 string.Format
  • 异步/等待(或“异步/await”)建议在库代码中使用 ConfigureAwait(false)
  • LINQ 链式调用检测过度的方法链式调用

LINQ 优化 🚀

  • Count() > 0 的意思是“计数大于0” → 使用 Any()
  • \Where().Count()\ 翻译成中文是:“在(满足条件的)那些……中计数”。不过,为了更贴合编程语境,也可以翻译为:“对满足条件的元素进行计数” → 使用 Count(predicate)
  • \Where().Any()\ 翻译成中文可以是:“在……中是否存在(任何满足条件的元素)”。不过,为了更贴近编程语境,也可以翻译为:“在……中是否有(任何符合条件的项)”。这里,“Where”通常用于指定条件来筛选元素,“Any”则用于检查是否至少存在一个满足条件的元素 → 使用 Any(predicate)
  • \Where().First()\ 在中文中可以翻译为:“在(满足条件的)其中,取第一个(元素)”。不过,这个翻译可能根据上下文有所调整,以更贴合具体的编程或数据查询语境。在编程中,\Where()\ 通常用于筛选满足特定条件的元素,而 \First()\ 则用于从筛选结果中获取第一个元素。所以,更简洁的翻译可能是:“筛选后取第一个符合条件的元素” → 使用 First(predicate)
  • \Select(x => x)\ 翻译成中文可以是:“选择(或映射)每个元素为自身”。这里,\Select\ 是一个常见的 LINQ(Language Integrated Query,语言集成查询)操作符,用于从集合中选择元素,而 \x => x\ 是一个 lambda 表达式,表示将每个元素 \x\ 映射为其自身。因此,整个表达式的意思是“选择(或映射)集合中的每个元素为它自己” 冗余操作
  • \OrderBy().First()\ 翻译成中文是:“按排序顺序取第一个元素” → 使用 MinBy/MaxBy
  • \ToList().Where()\ 翻译成中文可以是:“转换为列表后进行筛选”。不过,具体翻译可能根据上下文有所不同,但基本意思是先将数据转换为列表形式,然后使用 \Where\ 方法进行条件筛选 在 ToList() 之前应用 Where()

最新更新

2.0版本 - 增强的代码分析 ✨

StyleCop 集成

  • 集成StyleCop分析器以自动进行样式检查
  • 根据行业标准强制实施一致的C#代码风格
  • 在代码审查过程中提供详细的风格建议

增强版的Roslyn分析器 ✅(对号,表示正确、确认或完成)

  • 安全分析器检测SQL注入、硬编码秘密、不安全的文件操作、弱加密
  • 性能分析器识别循环中的字符串连接、不必要的LINQ实体化以及异步模式
  • LINQ 优化器为常见的 LINQ 反模式提出优化建议

改进的HTML解析

  • 实现了用于专业HTML转Markdown的Turndown库
  • 通过语言识别更好地保存代码块
  • 在解析 Microsoft Learn 文档时提高了结构保留性

贡献

这是一个正在进行的项目。欢迎提出改进建议和贡献!

许可证

ISC(互联网标准委员会/互联网安全中心/等,具体含义根据上下文确定)

目录标签

目录标签

代码审查.NET开发C#Claude静态分析本地部署C#开发Roslyn分析

支持客户端

Claude DesktopClaude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP