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

Csharp Language Server

MCP Server

通过Roslyn编译器平台为AI编程代理提供C#代码智能导航、类型解析和NuGet包管理的服务。

工具数

21

提示词数

0

GitHub Stars

0

资源数

0
代码导航C#ClaudeClaudeCline

安装说明

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

作者 / 组织

jgauffin

提供方

jgauffin

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

csharp语言mcp

通过MCP(模型上下文协议)为AI编码代理提供C#代码智能服务器,由Roslyn提供支持。

为什么使用这个?

使用C#的AI编码代理将代码视为文本——读取整个文件,查找模式,猜测类型。这对于动态语言来说还可以,但C#代码库会反击:深度类型层次结构、跨项目引用、泛型、隐式用法、分部类。一名武装特工 grep 正在盲目飞行。

csharp语言mcp 为代理提供了与IDE相同的智能——由Roslyn编译器平台提供支持:

C#导航

原始文件访问csharp语言mcp
读取整个文件以查找类直接跳到任何定义
查找方法名,忽略重载获取所有具有读/写分类的引用
从上下文猜测类型获取具有完整泛型解析的精确类型
缺少其他项目中的接口实现查找整个解决方案中的所有具体实现
希望重命名不会破坏东西在所有项目中预览和执行重命名
逐一读取文件以查找错误立即获得项目范围或解决方案范围的诊断

纽吉特

特工们正在合作。NET需要找到包,了解它们的API,并阅读文档。此服务器允许代理直接访问本地NuGet缓存中的真实程序集元数据和XML文档,该缓存以JSON形式构建,大小适合LLM上下文窗口。

任务没有此服务器使用csharp语言mcp
查找包裹抓取nuget.org搜索HTML或从训练数据中猜测nuget_search --缓存优先,结构化结果
列出缓存的包手动浏览文件系统nuget_packages --列出所有缓存的包或获取特定包的元数据
读取公共API表面下载中心 .nupkg,提取DLL,尝试反编译——大多数代理根本无法做到这一点nuget_explore --实类型/成员签名通过 System.Reflection.Metadata
阅读API文档报废文档网站(如果有的话),希望格式解析干净nuget_explore 随着 includeDocs --包中的XML文档,可按类型筛选
代币成本每页20-50k+标记的HTML/噪声,或0标记的幻觉答案每次调用约1-5k标记的专注、结构化输出

Roslyn与文本搜索有何不同?

罗瑟琳 编译 你的代码。它解析类型、绑定符号并理解整个解决方案图。当代理询问“谁执行”时 IRepositoryRoslyn给出了真正的答案,而不是一个错过其他项目中实现或包含注释和字符串错误匹配的正则表达式近似值。

这对C#来说最重要,因为:

  • 多项目解决方案 --引用、共享接口和NuGet包创建了文本搜索无法遵循的依赖关系图
  • 丰富型系统 --泛型、继承、隐式转换和扩展方法对grep不可见
  • 横切图案 --依赖注入、接口隔离和CQRS意味着符号的定义和使用很少在同一个文件中

需求

  • .NET 9 SDK(包括MSBuild)

快速开始

MCP客户端配置

克劳德代码:

# Analyze the current directory
claude mcp add csharp -- dotnet run --project /src/CsharpMcp

# Analyze a specific project
claude mcp add csharp -- dotnet run --project /src/CsharpMcp -- 

替换 `` 带有此仓库克隆的路径。

其他MCP客户端(Cline等):

{
  "mcpServers": {
    "csharp": {
      "command": "dotnet",
      "args": ["run", "--project", "/src/CsharpMcp", "--", "[your-csharp-repo]"]
    }
  }
}

或者使用已发布的二进制文件:

{
  "mcpServers": {
    "csharp": {
      "command": "/CsharpMcp",
      "args": ["[your-csharp-repo]"]
    }
  }
}

选项

选项描述默认值
[directory]C#项目根目录的路径当前工作目录
--name 自定义服务器名称(用于多实例设置)csharp-language-mcp
--description 附加到内置服务器描述的额外上下文_(无)_
--no-quality禁用质量/度量工具(保存2个工具)_(已启用)_
--no-nuget禁用NuGet工具(保存3个工具)_(已启用)_

多个实例 --使用 --name--description 在每个repo运行一个服务器时区分服务器:

{
  "mcpServers": {
    "csharp-api": {
      "command": "/CsharpMcp",
      "args": ["--name", "csharp-api", "--description", "API layer", ""]
    },
    "csharp-core": {
      "command": "/CsharpMcp",
      "args": ["--name", "csharp-core", "--description", "Core domain", ""]
    }
  }
}

服务器发现所有 .csproj 根路径下的文件,并将它们加载到单个Roslyn工作区中。所有职位均为 1-索引 (第1行第1列=第一个字符)。

工具(共21个)

类别工具描述
导航get_definition从使用跳转到声明
get_references查找具有读/写分类的所有用法
get_implementations查找接口的具体实现
get_call_hierarchy追踪呼叫者/被呼叫者;使用 maxDepth 用于深度使用跟踪
get_type_hierarchy导航基本类型、接口和派生类型
类型智能get_hover在某个位置键入信息、XML文档和参数签名
代码结构get_outline分层文件结构(使用 flat=true 用于平面符号列表)
get_imports列出所有使用指令
搜索find按名称模式、种类、项目搜索符号
补全get_completions在某个位置完成代码(成员、方法、类型、关键字)
诊断get_diagnostics文件或整个工作区的错误/警告
重构rename在所有项目中预览或执行重命名(preview=true 默认情况下)
format_document使用Roslyn格式化程序进行格式化
get_code_actions诊断的快速修复(添加使用、实施界面等)
效率analyze_position在一次调用中组合悬停+诊断+符号
batch_analyze同时分析多个职位
质量quality_hotspots综合质量评分——通过加权MI、重复、间接性来找到最差的代码
generate_iso5055_reportISO 5055质量报告(安全性、可靠性、性能、可维护性)
纽吉特nuget_search缓存优先搜索,回退到远程
nuget_packages列出缓存的包,或获取特定包的元数据/deps
nuget_explore浏览缓存包中的程序集、类型和XML文档

质量热点

quality_hotspots 该工具通过加权三个质量维度来识别需要重构的代码:

  • 可维护性 --MI、圈复杂度、LOC、耦合
  • 重复 --精确、重命名和语义代码克隆
  • 间接 --通过深层调用链实现隐藏耦合

默认权重大致相等(每个≈0.33)。覆盖权重以关注特定问题。

跟踪之前/之后:

  1. 呼叫 quality_hotspots(snapshotLabel: "before") 在会话开始时
  2. 进行更改
  3. 呼叫 quality_hotspots(compareToSnapshot: "before") --显示每种类型的增量

ISO 5055支持(部分)

generate_iso5055_report 该工具提供了对 ISO/IEC 5055 自动化源代码质量标准。它根据四个ISO 5055质量特征分析您的解决方案:

  • 安全 --检测CWE映射的漏洞(例如SQL注入、路径遍历)
  • 可靠性 --检测易出现缺陷的模式(例如空解引用、空捕获块)
  • 性能效率 --检测资源浪费模式
  • 可维护性 --检测过于复杂或不透明的代码(例如深度嵌套、幻数)

该报告包括违规计数、每个KLOC的违规、每个类别的通过/失败、覆盖的CWE ID以及每个违规文件路径,并附有修复建议。

类别和当前覆盖范围:

类别焦点覆盖范围
安全可利用漏洞仅低模式匹配规则(不安全代码,CWE-242)。无污染分析。
可靠性崩溃/损坏风险中等——处置模式、堆栈跟踪破坏、事件泄漏、弱身份锁、构造函数中的虚拟调用
性能效率资源浪费低--异步检测同步(CWE-1049)
可维护性结构衰退良好——圈复杂度、深度嵌套、大型类/方法、参数过多、缺乏内聚性、类不稳定、goto语句

限制: 这不是SAST的替代品。依赖于Taint分析的CWE(SQL注入、XSS、命令注入)需要专用工具,如CodeQL或Semgrep。报告包括 CoveredCweIds 因此消费者确切地知道哪些CWE在范围内。

配置CLAUDE.md

为了充分利用此服务器,请将以下说明添加到您的项目中 CLAUDE.md 文件:

## C# Code Intelligence

Always prefer csharp MCP tools over grep/bash/find for C# code:
- Use `get_definition` instead of grepping for class/method definitions
- Use `get_references` instead of grepping for usages
- Use `find` instead of find/grep for locating symbols
- Use `get_diagnostics` instead of running `dotnet build` to check errors
- Use `get_outline` instead of reading entire files to understand structure
- Use `get_hover` to check types instead of guessing from context

## Code Quality Tracking
- At the START of each coding session, call `quality_hotspots(snapshotLabel: "before")` to capture a baseline
- At the END of each session (before committing), call `quality_hotspots(compareToSnapshot: "before")` to review quality impact
- If quality_hotspots shows degraded types, address them before finishing
为什么需要这个? AI代理默认使用熟悉的工具,如 grep, find,以及 cat如果没有明确的指令,即使MCP工具可用,他们也会忽略它们——浪费令牌读取整个文件并产生不太准确的结果。这 CLAUDE.md 指令会覆盖此默认行为。

构建

dotnet build src/CsharpMcp.sln

测试

dotnet test src/CsharpMcp.sln

许可证

麻省理工学院

目录标签

目录标签

代码导航C#Claude本地部署类型解析NuGet管理AI辅助编程Roslyn编译器

支持客户端

ClaudeCline

接入字段

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

未说明

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

session

工具数量(toolCount,工具数)

21

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明session部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP