MCP罗斯林符号
一个MCP(模型上下文协议)服务器,使用Roslyn语言服务器从C#代码中提供符号信息。
先决条件
在使用此MCP服务器之前,您必须:
- Roslyn语言服务器 (必填):
dotnet tool install --global roslyn-language-server --prerelease- Node.js v18或更高版本
- .NET SDK 8.0或更高版本(适用于Roslyn语言服务器和测试项目)
安装
npm install
npm run build用法
此MCP服务器提供了一个强大的工具: get_symbols_for
工具:get_symbols_for
获取C#文件中特定光标位置处的类型的符号信息。这将从类型中检索所有公共方法、属性、字段、事件等,即使它来自NuGet包(通过反编译)。
参数
filePath(必填):C#文件的绝对路径line(必填):行号(0索引)character(必填):行上的字符位置(0索引)symbolType(可选):按类型过滤符号。什么之中的一个:Property,Field,Event,Method,Class,Interface,EnumsignaturesOnly(可选):布尔值。如果为true,则仅返回签名,不返回其他详细信息
示例用法
给定一个C#文件,其中包含:
var foo = 5;
Console.WriteLine(foo); // Cursor on 'foo'该工具将返回上可用的所有方法 int 类型(如 ToString, GetHashCode等等)。
或者:
JsonSerializer.DeserializeAsync(...); // Cursor on 'JsonSerializer'该工具将返回 JsonSerializer 类。
运行服务器
要启动MCP服务器,请执行以下操作:
node dist/index.js服务器使用stdio进行通信,并遵循模型上下文协议规范。
测试
该项目包括一个全面的测试套件:
npm test测试用例包括:
- 获取核心符号。NET类型(例如。,
int) - 获取框架类型的符号(例如。,
JsonSerializerOptions) - 获取第三方库类型的符号(例如。,
JsonConvert来自Newtonsoft。Json)
发展
项目结构
.
├── src/
│ ├── index.ts # Main MCP server
│ ├── lsp-client.ts # Roslyn LSP client implementation
│ └── roslyn-check.ts # Checks for Roslyn installation
├── tests/
│ └── *.test.ts # Test suite
├── test-project/
│ ├── TestProject.slnx # Solution file (workspace root for LSP)
│ └── TestProject/ # Test C# project
│ ├── TestProject.csproj
│ └── Program.cs
└── dist/ # Compiled JavaScript output建筑
npm run build运行测试
npm test # Run tests once
npm run test:watch # Run tests in watch mode运作原理
- 启动时,服务器检查是否
roslyn-language-server可用的 - 当进行工具调用时,服务器:
- 查找工作区根目录(包含.sln或.slnx的目录) - 启动Roslyn语言服务器(如果尚未启动) - 打开请求的文档 - 获取指定光标位置处的类型定义 - 从类型定义中检索所有符号(包括反编译的源代码) - 根据提供的选项过滤和格式化符号 - 返回符号信息
对于贡献者
如果您是从事此项目的人工智能代理或开发人员,请参阅 代理商.md 详细的开发指南和要求。
许可证
麻省理工学院
