该项目是一个实现Model Context Protocol (MCP) 标准的服务器,专注于提供针对.NET进程的诊断和监控能力。
项目简介
该服务器通过将底层的.NET诊断工具(如'DiagnosticsClient')封装成MCP工具,使得任何符合MCP标准的客户端(例如大型语言模型代理)能够方便地获取正在运行的.NET进程列表、详细信息、线程转储等诊断数据,并执行某些诊断操作(如触发GC)。
主要功能点
- 获取进程列表: 列出当前机器上可诊断的.NET进程及其ID和名称。
- 获取进程详情: 提供指定进程的详细信息,如命令行、操作系统、架构等。
- 获取进程环境变量: 获取指定进程的环境变量列表。
- 获取线程转储: 收集并返回指定进程的线程堆栈信息,用于分析死锁或性能瓶颈。
- 获取计数器流: 实时获取指定进程的EventCounters数据流(例如CPU使用率、GC活动等)。
- 收集内存转储: 为指定进程创建不同类型的内存转储文件(功能在代码中存在,但未在提供的MCP工具中直接暴露)。
- 触发GC: 在指定进程中手动触发一次垃圾回收(功能在代码中存在,但未在提供的MCP工具中直接暴露)。
安装步骤
- 克隆仓库: 'git clone https://github.com/rafaelldi/monitor.git'
- 进入项目目录: 'cd monitor'
- 构建并运行服务器: 'dotnet run --project monitor'
- 服务器将在控制台输出其启动信息,包括MCP服务的监听地址(默认为 'http://localhost:5213/mcp')。
服务器配置 (供MCP客户端使用)
MCP客户端需要配置如何启动并连接到此服务器。以下是客户端通常需要的配置信息示例(请根据实际情况调整 'command' 和 'args'):
{ "name": ".NET Diagnostic Server", // 给服务器起一个易于理解的名称 "command": "dotnet", // 用于启动服务器进程的命令 (例如: dotnet) "args": [ // 传递给启动命令的参数 "run", // dotnet run 命令 "--project", // 指定项目文件或目录 "monitor" // monitor项目的目录名 ], "cwd": "/path/to/cloned/repo" // 可选:指定启动命令的工作目录,通常是仓库根目录 // MCP客户端会自动处理连接到服务器暴露的/mcp端点 }
- 说明: MCP客户端会使用 'command' 和 'args' 在本地启动服务器进程,并根据MCP协议约定与其建立连接。用户通常无需手动运行 'dotnet run'。
基本使用方法
启动服务器(或配置MCP客户端自动启动服务器)后,一个支持MCP协议的客户端(例如LLM代理)即可通过结构化的请求(如JSON-RPC调用)与服务器交互:
- 客户端可以请求服务器声明其能力(capabilities),了解支持哪些工具、资源等。
- 客户端可以调用已注册的工具,例如调用 'ProcessTool.GetProcessList' 工具获取当前运行的.NET进程列表。
- 客户端可以根据需要调用其他诊断工具(如 'ThreadDumpTool.GetThreadDump'),并提供必要的参数(如进程ID)。 服务器将根据请求执行相应的诊断操作,并通过JSON-RPC响应返回结果给客户端。
信息
分类
开发者工具