该项目是一个实现Model Context Protocol (MCP) 标准的服务器,专注于提供针对.NET进程的诊断和监控能力。

项目简介

该服务器通过将底层的.NET诊断工具(如'DiagnosticsClient')封装成MCP工具,使得任何符合MCP标准的客户端(例如大型语言模型代理)能够方便地获取正在运行的.NET进程列表、详细信息、线程转储等诊断数据,并执行某些诊断操作(如触发GC)。

主要功能点

  • 获取进程列表: 列出当前机器上可诊断的.NET进程及其ID和名称。
  • 获取进程详情: 提供指定进程的详细信息,如命令行、操作系统、架构等。
  • 获取进程环境变量: 获取指定进程的环境变量列表。
  • 获取线程转储: 收集并返回指定进程的线程堆栈信息,用于分析死锁或性能瓶颈。
  • 获取计数器流: 实时获取指定进程的EventCounters数据流(例如CPU使用率、GC活动等)。
  • 收集内存转储: 为指定进程创建不同类型的内存转储文件(功能在代码中存在,但未在提供的MCP工具中直接暴露)。
  • 触发GC: 在指定进程中手动触发一次垃圾回收(功能在代码中存在,但未在提供的MCP工具中直接暴露)。

安装步骤

  1. 克隆仓库: 'git clone https://github.com/rafaelldi/monitor.git'
  2. 进入项目目录: 'cd monitor'
  3. 构建并运行服务器: '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调用)与服务器交互:

  1. 客户端可以请求服务器声明其能力(capabilities),了解支持哪些工具、资源等。
  2. 客户端可以调用已注册的工具,例如调用 'ProcessTool.GetProcessList' 工具获取当前运行的.NET进程列表。
  3. 客户端可以根据需要调用其他诊断工具(如 'ThreadDumpTool.GetThreadDump'),并提供必要的参数(如进程ID)。 服务器将根据请求执行相应的诊断操作,并通过JSON-RPC响应返回结果给客户端。

信息

分类

开发者工具