返回市场
光标监控器mcp

光标监控器mcp

作者:willibrandon12 星标更新:2025-03-12

项目介绍

Cursor MCP Monitor

一个.NET控制台应用程序,用于监控Cursor AI编辑器中的模型上下文协议(MCP)交互。该工具通过实时监控日志文件帮助开发人员调试和分析MCP服务器-客户端通信。

什么是MCP?

模型上下文协议(MCP)是一个开放协议,标准化了应用程序如何向大语言模型(LLMs)提供上下文。它遵循客户端-服务器架构,其中:

  • MCP主机(如Cursor)连接到多个服务器
  • MCP客户端与服务器保持一对一的连接
  • MCP服务器通过标准化协议暴露特定能力
  • 本地数据源远程服务通过MCP服务器安全访问

功能

  • 实时监控Cursor中的MCP客户端-服务器交互:
    • 客户端创建和连接事件
    • 服务器提供的列表和能力
    • 协议错误和警告
    • 客户端生命周期转换
  • 监控Cursor日志目录中的新MCP日志文件
  • 解析并以不同颜色编码不同的消息类型:
    • 绿色:客户端创建和成功连接
    • 黄色:服务器提供的列表
    • 红色:协议错误和客户端关闭
    • 灰色:一般信息消息
  • 支持日志轮换和文件截断
  • 跨平台支持(Windows、macOS、Linux)
  • 智能错误处理,具有指数退避和重试逻辑
  • 可配置的轮询间隔和日志文件模式
  • 命令行界面便于定制
  • 使用Serilog进行结构化日志记录,提高可观测性:
    • 控制台日志记录,带有格式化的输出
    • 文件日志记录,每日轮换
    • 上下文属性(机器名、线程ID等)
    • 日志级别过滤和输出定制

交互式仪表板

应用程序包括一个基于Web的仪表板,用于监控和分析,当应用程序运行时可在http://localhost:5050访问。仪表板通过WebSocket连接实现实时事件流传输,并自动重新连接处理和事件速率监控。

终端显示带有毫秒精度的时间戳和不同事件类型的彩色编码消息类型,便于识别。高级搜索功能包括带高亮显示和键盘快捷键支持的文本搜索。

命令调色板(Ctrl/Cmd + P)提供了快速访问常见操作:

  • 清除日志(Ctrl/Cmd + K)
  • 复制可见条目(Ctrl/Cmd + C)
  • 切换自动滚动(Ctrl/Cmd + S)
  • 搜索焦点(/)

仪表板包括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日志根目录。如果为空,则默认为:
    • Windows:%AppData%/Cursor/logs
    • macOS:~/Library/Application Support/Cursor/logs
    • Linux:~/.config/Cursor/logs
  • 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配置

应用程序使用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"

构建和运行

先决条件

  • .NET 9.0 SDK或更高版本

构建

dotnet build

运行

dotnet run

Docker支持

应用程序包括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的结构化日志记录,提供了几个好处:

  • 上下文信息:每个日志条目包括机器名、线程ID和源上下文等上下文属性
  • 多种输出格式:日志写入控制台和文件,带有格式化的输出
  • 日志级别:不同的日志级别(Debug、Information、Warning、Error、Fatal)有助于筛选最相关的信息
  • 结构化数据:日志事件包括可以查询和分析的结构化数据
  • 日志文件:日志文件存储在应用程序的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动作

错误处理

应用程序包括高级错误处理:

  • 文件访问错误的指数退避和抖动
  • 自动恢复瞬态问题
  • 带有彩色编码控制台输出的详细错误报告
  • 文件轮换和截断检测
  • 包含上下文信息的结构化错误日志

使用场景

  • 通过监控客户端-服务器交互来调试MCP服务器实现
  • 分析协议消息和错误模式
  • 跟踪客户端生命周期和连接状态
  • 监控服务器能力和提供的服务
  • 验证正确的协议实现
  • 通过结构化日志跟踪应用程序性能和错误率

许可

本项目根据MIT许可发布 - 查看LICENSE.txt文件了解详情。