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

csls MCP

MCP Server

csls-mcp是一款基于.NET 8和Roslyn编译器的C#语言服务,为AI代理提供代码语义理解功能,包括符号解析、引用查找、类型成员枚举和源代码获取。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
代码分析C#AI代理工具

安装说明

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

作者 / 组织

Clinas

提供方

Clinas

最后核验

2026/5/17 20:22

快速接入

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

详细介绍

csls mcp

csls-mcp (C#语言服务-模型上下文协议)是一个长期运行的协议。NET 8控制台应用程序,为AI代理提供C#语言服务。它利用Roslyn编译器平台在给定的工作空间内提供对C#代码的语义理解,通过模型上下文协议(MCP)与Gemini CLI无缝集成。

此MCP服务器背后的想法是为代理提供更有效的工具来使用,而不是searchText或readFile,或者诱使他们更有效地阅读更多代码,而不是猜测代码的作用或位置,因此将根据代理的使用经验添加或更改功能。

🎯 目标

主要目标 csls-mcp 是使AI代理能够与C#代码库进行语义交互。代理可以使用 csls-mcp 致:

  • 解析C#符号: 查找类、接口、方法、名称空间、属性、字段等。
  • 查找参考文献: 找到使用符号的位置。
  • 列出类型的成员: 枚举给定类或接口的方法、属性和字段。
  • 获取准确的源代码: 检索符号声明的精确源文本。

一切:

  • 查找声明: 找到符号声明的位置。

这种语义理解对于人工智能代理的智能代码导航、重构、错误修复和功能实现等任务至关重要。

🧱 建筑

  • 类型: .NET 8控制台应用程序
  • 执行: 长时间运行的进程
  • 沟通: 基于标准I/O(STDIO)的模型上下文协议(MCP)
  • 工作区管理: 在内存中维护加载的C#解决方案/项目。
  • 生命周期: 由Gemini CLI自动启动和停止。
  • 罗斯林: 用途 Microsoft.CodeAnalysisMSBuildWorkspace 对于所有语义操作。

🚀 如何编译

  1. 导航到项目目录:
   cd D:\CSLS-MCP\csls-mcp
  1. 还原NuGet包并构建项目:
   dotnet build

这将编译应用程序并将可执行文件放置在 bin\Debug\net8.0\.

🤝 与Gemini CLI集成

csls-mcp 被设计为与Gemini CLI集成作为MCP服务器。

⚙️ Gemini CLI配置(.gemini/settings.json)

启用Gemini CLI以使用 csls-mcp,将以下配置添加到您的 .gemini/settings.json 项目根目录中的文件:

{
  "mcpServers": {
    "csharp": {
      "command": "D:\\CSLS-MCP\\csls-mcp\\bin\\Debug\\net8.0\\csls-mcp.exe",
      "args": ["--workspace", "${workspaceFolder}"],
      "trust": true
    }
  }
}
  • csharp:这是此MCP服务器的唯一标识符(名称)。你可以选择任何你喜欢的名字。
  • command:编译的绝对路径 csls-mcp.exe 可执行。如果您的生成输出目录不同,请确保更新此路径。
  • args:传递给的命令行参数 csls-mcp 服务器。

- --workspace ${workspaceFolder}:这将告诉服务器当前工作空间(C#解决方案/项目)的路径。 ${workspaceFolder} 是一个特殊变量,Gemini CLI将其解析为当前项目的根。

  • trust:必须是 true 允许服务器执行您的工作区并与之交互。

✨ Gemini CLI的示例用法

配置后,Gemini CLI将自动启动 csls-mcp 在需要时,允许代理使用其暴露的工具。以下是AI代理如何与 csharp MCP服务器:

1. getToolDeclarations (MCP握手)

客户端(Gemini CLI)使用此工具来发现服务器的功能。

请求:

{
  "id": "1",
  "tool": "getToolDeclarations",
  "input": {}
}

响应(示例):

{
  "output": {
    "tools": [
      {
        "name": "resolveSymbol",
        "description": "Resolves a C# symbol (class, interface, method, etc.) and returns its kind, name, namespace, file, and line number.",
        "inputSchema": { "type": "object", "properties": { "symbol": { "type": "string" } }, "required": ["symbol"] }
      },
      {
        "name": "getSymbolSource",
        "description": "Retrieves the exact source code of a given C# symbol.",
        "inputSchema": { "type": "object", "properties": { "symbol": { "type": "string" } }, "required": ["symbol"] }
      },
      {
        "name": "findReferences",
        "description": "Finds all references to a given C# symbol within the loaded workspace.",
        "inputSchema": { "type": "object", "properties": { "symbol": { "type": "string" } }, "required": ["symbol"] }
      },
      {
        "name": "listMembers",
        "description": "Lists methods, properties, and fields of a specified C# type.",
        "inputSchema": { "type": "object", "properties": { "symbol": { "type": "string" } }, "required": ["symbol"] }
      }
    ]
  },
  "id": "1"
}

2. resolveSymbol

请求:

{
  "id": "2",
  "tool": "resolveSymbol",
  "input": {
    "symbol": "MyTestClass"
  }
}

响应(例如,假设 MyTestClass 在...里 dummy-project/Program.cs):

{
  "output": {
    "kind": "Class",
    "name": "MyTestClass",
    "namespace": "dummy_project",
    "file": "D:\\CSLS-MCP\\dummy-project\\Program.cs",
    "line": 5
  },
  "id": "2"
}

3. getSymbolSource

请求:

{
  "id": "3",
  "tool": "getSymbolSource",
  "input": {
    "symbol": "MyTestMethod"
  }
}

响应(示例,显示来源 MyTestMethod):

{
  "output": {
    "file": "D:\\CSLS-MCP\\dummy-project\\Program.cs",
    "source": "        public void MyTestMethod(string param)\n        {\n            Console.WriteLine($\"Parameter: {param}, Property: {MyProperty}, Field: {_myField}\");\n        }"
  },
  "id": "3"
}

4. findReferences

请求:

{
  "id": "4",
  "tool": "findReferences",
  "input": {
    "symbol": "MyTestClass"
  }
}

响应(示例,显示中的引用 Program.cs):

{
  "output": [
    {
      "file": "D:\\CSLS-MCP\\dummy-project\\Program.cs",
      "line": 27
    }
  ],
  "id": "4"
}

5. listMembers

请求:

{
  "id": "5",
  "tool": "listMembers",
  "input": {
    "symbol": "MyTestClass"
  }
}

响应(示例):

{
  "output": {
    "methods": [
      "MyTestMethod(String param)"
    ],
    "properties": [
      "String MyProperty"
    ],
    "fields": [
      "Int32 _myField"
    ]
  },
  "id": "5"
}

目录标签

目录标签

代码分析C#AI代理工具C#语言服务本地部署语义理解

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP