光标MCP监视器
A.NET控制台应用程序,用于监视Cursor AI编辑器中的模型上下文协议(MCP)交互。该工具通过实时监控日志文件,帮助开发人员调试和分析MCP服务器客户端通信。
什么是MCP?
模型上下文协议(MCP)是一种开放协议,它规范了应用程序如何向LLM提供上下文。它遵循客户端-服务器架构,其中:
- MCP主机 (如Cursor)连接到多个服务器
- MCP客户端 与服务器保持1:1连接
- MCP服务器 通过标准化协议公开特定功能
- 本地数据源 和 远程服务 通过MCP服务器安全访问
特性
- 在Cursor中实时监控MCP客户端-服务器交互:
- 客户端创建和连接事件 - 服务器提供列表和功能 - 协议错误和警告 - 客户端生命周期转换
- 监控游标日志目录中的新MCP日志文件
- 对不同的消息类型进行解析和颜色编码:
- 绿色:客户创建和成功连接 - 黄色:服务器产品列表 - 红色:协议错误和客户端关闭 - 灰色:一般信息消息
- 支持日志轮换和文件截断
- 跨平台支持(Windows、macOS、Linux)
- 具有指数退避和重试逻辑的智能错误处理
- 可配置的轮询间隔和日志文件模式
- 命令行界面便于定制
- 结构化日志记录 使用Serilog可提高可观察性:
- 带有格式化输出的控制台日志记录 - 每日轮换的文件记录 - 上下文属性(机器名、线程ID等) - 日志级过滤和输出定制
交互式仪表板
该应用程序包括一个基于网络的监控和分析仪表板,可在以下网址访问 http://localhost:5050 当应用程序运行时。仪表板具有通过WebSocket连接进行实时事件流式传输的功能,具有自动重新连接处理和事件率监控功能。
终端显示器显示毫秒精度的时间戳和颜色编码的消息类型,便于识别不同的事件类型。高级搜索功能包括基于文本的搜索,支持突出显示和键盘快捷键。
命令面板(Ctrl/Cmd+P)提供了对常见操作的快速访问:
- 清除日志(Ctrl/Cmd+K)
- 复制可见条目(Ctrl/Cmd+C)
- 切换自动滚动(Ctrl/Cmd+S)
- 焦点搜索(/)
仪表板包括WebSocket连接状态、活动客户端计数和每秒事件的状态指示器。它支持深色和浅色主题,并具有系统主题检测功能。
安装
您可以使用全局安装该工具。NET-CLI:
# Install from NuGet.org
dotnet tool install --global CursorMCPMonitor
# Or install from 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:用于监视游标MCP日志的根目录。如果为null,则默认为:
- 窗户: %AppData%/Cursor/logs - macOS: ~/Library/Application Support/Cursor/logs - Linux: ~/.config/Cursor/logs
PollIntervalMs:检查新日志行的频率(以毫秒为单位)LogPattern:要监视的日志文件模式(支持“Cursor MCP\*.log”等glob模式)Verbosity:详细程度(调试、信息、警告、错误)。默认设置为“调试”以显示所有消息。Filter:筛选日志内容的可选文本模式(仅显示包含此文本的行)Serilog:结构化日志记录的配置(请参见 Serilog配置)
您还可以使用环境变量覆盖设置:
# Windows
set LogsRoot=C:\CustomPath\Cursor\logs
set PollIntervalMs=500
# Linux/macOS
export LogsRoot=/custom/path/cursor/logs
export PollIntervalMs=500Serilog配置
该应用程序使用Serilog进行结构化日志记录,可以在 appsettings.json 文件:
Serilog:MinimumLevel:Default:默认的最低日志级别Serilog:MinimumLevel:Override:覆盖特定命名空间的最低日志级别Serilog:Enrich:丰富器可将上下文信息添加到日志中Serilog:Properties:要包含在所有日志事件中的自定义属性
默认情况下,日志会写入:
- 控制台:为人类可读性而格式化
- 文件:存储在
logs每日轮换的目录cursormonitor-YYYYMMDD.log
命令行选项
您可以使用命令行选项覆盖配置设置:
# Specify a custom logs directory
dotnet run -- --logs-root "C:\Users\username\AppData\Roaming\Cursor\logs"
# Set a custom polling interval (500ms)
dotnet run -- --poll-interval 500
# Use a different log pattern (glob pattern support)
dotnet run -- --log-pattern "Cursor MCP*.log"
# Set verbosity level
dotnet run -- --verbosity debug
# Filter logs to only show lines containing specific text
dotnet run -- --filter "CreateClient"
# Combine multiple options
dotnet run -- --logs-root "/path/to/logs" --poll-interval 500 --verbosity error --filter "Error in MCP"建立和运行
先决条件
- .NET 9.0 SDK或更高版本
构建
dotnet build跑
dotnet runDocker支持
该应用程序包括Docker支持。要使用Docker构建和运行:
# Make sure you're in the repository root directory
cd /path/to/CursorMCPMonitor
# Build the image (note the -f flag to specify Dockerfile location)
docker build -t cursor-mcp-monitor -f src/CursorMCPMonitor/Dockerfile .
# Run the container with volume mapping for logs
# For Windows PowerShell:
docker run -it --rm -v "$env:APPDATA\Cursor\logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor
# For Windows CMD:
docker run -it --rm -v "%APPDATA%\Cursor\logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor
# For macOS/Linux:
docker run -it --rm -v "$HOME/Library/Application Support/Cursor/logs:/app/logs" -e LogsRoot=/app/logs cursor-mcp-monitor重要: - 始终从存储库根目录运行Docker build命令,而不是从项目目录运行。这确保了所有必要的文件都包含在构建上下文中。 - 运行Docker容器时,您需要将本地Cursor日志目录映射到容器中,并设置 LogsRoot 环境变量指向映射的目录。测井和可观测性
该应用程序使用Serilog实现了结构化日志记录,这提供了几个好处:
- 上下文信息:每个日志条目都包括上下文属性,如机器名、线程ID和源上下文
- 多种输出格式:日志以格式化输出的形式写入控制台和文件
- 日志级别:不同的日志级别(调试、信息、警告、错误、致命)有助于筛选最相关的信息
- 结构化数据:日志事件包括可以查询和分析的结构化数据
- 日志文件:日志文件存储在应用程序的
logs每日轮换的目录
日志格式示例(控制台):
[2025-03-03 12:34:56.789] [INF] [CursorMCPMonitor.Services.LogProcessorService] CreateClient detected: Cursor MCP.log 2025-03-03 12:34:56.123 [info] a602: Handling CreateClient action日志格式示例(文件):
2025-03-03 12:34:56.789 +00:00 [INF] [CursorMCPMonitor.Services.LogProcessorService] CreateClient detected: Cursor MCP.log 2025-03-03 12:34:56.123 [info] a602: Handling CreateClient action错误处理
该应用程序包括高级错误处理:
- 文件访问错误的指数回退和抖动
- 从瞬态问题中自动恢复
- 带有颜色编码控制台输出的详细错误报告
- 文件旋转和截断检测
- 带有上下文信息的结构化错误日志记录
用例
- 通过监视客户端-服务器交互来调试MCP服务器实现
- 分析协议消息和错误模式
- 跟踪客户端生命周期和连接状态
- 监控服务器功能和产品
- 验证协议的正确实施
- 通过结构化日志跟踪应用程序性能和错误率
许可证
此项目根据MIT许可证获得许可-请参阅 LICENSE.txt 文件以获取详细信息。
