内容
# .NET Profiler MCP 服务器
一个 MCP(模型上下文协议)服务器,封装了 .NET 诊断工具(`dotnet-trace`、`dotnet-counters`、`dotnet-dump`),帮助 AI 助手分析应用程序性能,识别热点,并生成优化建议。
## 先决条件
全局安装 .NET 诊断工具:
```bash
dotnet tool install -g dotnet-trace
dotnet tool install -g dotnet-counters
dotnet tool install -g dotnet-dump
```
## 可用工具
| 工具 | 描述 |
|------|-------------|
| `ListDotNetProcesses` | 发现可以被分析的运行中的 .NET 进程 |
| `CollectTrace` | 捕获指定持续时间的 CPU 性能跟踪 |
| `AnalyzeTrace` | 从跟踪文件中提取热点方法和性能瓶颈 |
| `CollectCounters` | 监视 System.Runtime 计数器(CPU、GC、内存、线程池) |
| `CollectDump` | 捕获内存转储(仅限 Windows/Linux) |
| `AnalyzeDump` | 分析堆统计数据、GC 根、线程池信息 |
| `GeneratePerformanceReport` | 从收集的数据创建样式化的 HTML 报告 |
| `CleanupTempFiles` | 删除所有临时分析文件 |
## 工具详情
### ListDotNetProcesses
列出所有可以使用 dotnet-trace 分析的运行中的 .NET 进程。
### CollectTrace
从运行的 .NET 进程中收集性能跟踪。
- **processId**: 目标进程 ID
- **durationSeconds**: 收集持续时间(默认值:30)
- **profile**: cpu-sampling, gc-verbose, 或 gc-collect
### AnalyzeTrace
分析 .nettrace 文件以识别热点方法。
- **traceFilePath**: .nettrace 文件的路径
### CollectCounters
捕获 System.Runtime 指标,包括 CPU 使用率、GC 堆大小、Gen 0/1/2 计数、线程池统计数据。
- **processId**: 目标进程 ID
- **durationSeconds**: 收集持续时间(默认值:30)
- **refreshIntervalSeconds**: 采样间隔(默认值:1)
### CollectDump
捕获内存转储(仅限 Windows 和 Linux)。
- **processId**: 目标进程 ID
- **dumpType**: Full, Heap, 或 Mini
### AnalyzeDump
使用各种命令分析转储文件。
- **dumpFilePath**: .dmp 文件的路径
- **command**: dumpheap -stat, gcroot, threadpool, 或 eeheap
### GeneratePerformanceReport
生成一个样式化的 HTML 报告,结合跟踪分析、计数器数据和转储分析。
- **applicationName**: 报告标题的名称
- **traceAnalysis**: 热点方法数据(可选)
- **counterData**: 计数器指标(可选)
- **dumpAnalysis**: 转储分析结果(可选)
### CleanupTempFiles
删除在分析会话期间创建的所有临时文件。
## 本地开发
配置您的 IDE 以运行项目:
```json
{
"servers": {
"dotnet-profiler-mcp": {
"type": "stdio",
"command": "dotnet",
"args": ["run", "--project", "<PATH TO PROJECT DIRECTORY>"]
}
}
}
```
## 示例用法
询问 Copilot Chat:
- "列出我可以分析的所有 .NET 进程"
- "从进程 1234 收集 30 秒的 CPU 跟踪"
- "分析跟踪文件并显示热点方法"
- "从我的应用程序收集 60 秒的性能计数器"
- "为 MyApp 生成 HTML 性能报告"
## 平台支持
- **Windows**: 所有工具的完全支持
- **Linux**: 所有工具的完全支持
- **macOS**: 跟踪和计数器收集支持;转储收集不支持
## 发布到 NuGet.org
```bash
dotnet pack -c Release
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.json
```
## 更多信息
- [模型上下文协议](https://modelcontextprotocol.io/)
- [MCP C# SDK](https://modelcontextprotocol.github.io/csharp-sdk)
- [.NET 诊断](https://learn.microsoft.com/dotnet/core/diagnostics/)