一个.NET控制台应用程序,用于监控Cursor AI编辑器中的模型上下文协议(MCP)交互。该工具通过实时监控日志文件帮助开发人员调试和分析MCP服务器-客户端通信。
模型上下文协议(MCP)是一个开放协议,标准化了应用程序如何向大语言模型(LLMs)提供上下文。它遵循客户端-服务器架构,其中:
应用程序包括一个基于Web的仪表板,用于监控和分析,当应用程序运行时可在http://localhost:5050访问。仪表板通过WebSocket连接实现实时事件流传输,并自动重新连接处理和事件速率监控。
终端显示带有毫秒精度的时间戳和不同事件类型的彩色编码消息类型,便于识别。高级搜索功能包括带高亮显示和键盘快捷键支持的文本搜索。
命令调色板(Ctrl/Cmd + P)提供了快速访问常见操作:
仪表板包括WebSocket连接状态、活跃客户端数量和每秒事件数的状态指示器。它支持深色和浅色主题,并检测系统主题。
您可以使用.NET CLI全局安装此工具:
# 从NuGet.org安装
dotnet tool install --global CursorMCPMonitor
# 或从GitHub Packages安装
dotnet nuget add source --name github "https://nuget.pkg.github.com/willibrandon/index.json"
dotnet tool install --global CursorMCPMonitor --add-source github
安装后,您可以通过以下方式从任何地方运行该工具:
cursor-mcp --help
更新到最新版本:
dotnet tool update --global CursorMCPMonitor
卸载:
dotnet tool uninstall --global CursorMCPMonitor
应用程序可以通过appsettings.json进行配置:
{
"LogsRoot": null,
"PollIntervalMs": 1000,
"LogPattern": "Cursor MCP.log",
"Verbosity": "Debug",
"Filter": null,
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": "CursorMCPMonitor"
}
},
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Warning"
}
}
}
LogsRoot:要监控的Cursor MCP日志根目录。如果为空,则默认为:
PollIntervalMs:检查新日志行的频率(以毫秒为单位)LogPattern:要监控的日志文件模式(支持通配符模式如"Cursor MCP*.log")Verbosity:详细程度级别(Debug、Information、Warning、Error)。默认为Debug,显示所有消息。Filter:可选文本模式,用于过滤日志内容(仅显示包含此文本的行)Serilog:结构化日志记录配置(参见Serilog配置)您还可以通过环境变量覆盖设置:
# Windows
set LogsRoot=C:\CustomPath\Cursor\logs
set PollIntervalMs=500
# Linux/macOS
export LogsRoot=/custom/path/cursor/logs
export PollIntervalMs=500
应用程序使用Serilog进行结构化日志记录,可以在appsettings.json文件中进行配置:
Serilog:MinimumLevel:Default:默认最小日志级别Serilog:MinimumLevel:Override:特定命名空间的最小日志级别覆盖Serilog:Enrich:添加上下文信息到日志的丰富器Serilog:Properties:包含在所有日志事件中的自定义属性默认情况下,日志写入:
logs目录中,每天轮换为cursormonitor-YYYYMMDD.log您可以使用命令行选项覆盖配置设置:
# 指定自定义日志目录
dotnet run -- --logs-root "C:\Users\username\AppData\Roaming\Cursor\logs"
# 设置自定义轮询间隔(500ms)
dotnet run -- --poll-interval 500
# 使用不同的日志模式(支持通配符模式)
dotnet run -- --log-pattern "Cursor MCP*.log"
# 设置详细程度级别
dotnet run -- --verbosity debug
# 过滤日志,仅显示包含特定文本的行
dotnet run -- --filter "CreateClient"
# 组合多个选项
dotnet run -- --logs-root "/path/to/logs" --poll-interval 500 --verbosity error --filter "Error in MCP"
dotnet build
dotnet run
应用程序包括Docker支持。使用Docker构建和运行:
# 确保您位于仓库根目录
cd /path/to/CursorMCPMonitor
# 构建镜像(注意-f标志指定Dockerfile位置)
docker build -t cursor-mcp-monitor -f src/CursorMCPMonitor/Dockerfile .
# 运行容器,映射日志卷
# 对于Windows PowerShell:
docker run -it --rm -v "$env:APPDATA\Cursor\logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor
# 对于Windows CMD:
docker run -it --rm -v "%APPDATA%\Cursor\logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor
# 对于macOS/Linux:
docker run -it --rm -v "$HOME/Library/Application Support/Cursor/logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor
重要:
- 总是从仓库根目录而不是项目目录运行Docker构建命令。这确保了所有必要的文件都包含在构建上下文中。
- 运行Docker容器时,需要将您的本地Cursor日志目录映射到容器中,并设置
LogsRoot环境变量指向映射的目录。
应用程序实现了使用Serilog的结构化日志记录,提供了几个好处:
logs目录中,每天轮换示例日志格式(控制台):
[2025-03-03 12:34:56.789] [INF] [CursorMCPMonitor.Services.LogProcessorService] CreateClient检测到:Cursor MCP.log 2025-03-03 12:34:56.123 [info] a602: 处理CreateClient动作
示例日志格式(文件):
2025-03-03 12:34:56.789 +00:00 [INF] [CursorMCPMonitor.Services.LogProcessorService] CreateClient检测到:Cursor MCP.log 2025-03-03 12:34:56.123 [info] a602: 处理CreateClient动作
应用程序包括高级错误处理:
本项目根据MIT许可发布 - 查看LICENSE.txt文件了解详情。