A monitoring tool for Cursor MCP logs that provides real-time tracking of log files with filtering and structured output.
$ dotnet add package CursorMCPMonitorA .NET console application that monitors Model Context Protocol (MCP) interactions in the Cursor AI editor. This tool helps developers debug and analyze MCP server-client communications by monitoring log files in real-time.
The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs. It follows a client-server architecture where:
The application includes a web-based dashboard for monitoring and analysis, accessible at http://localhost:5050 when the application is running. The dashboard features real-time event streaming through WebSocket connections with automatic reconnection handling and event rate monitoring.
The terminal display shows timestamps with millisecond precision and color-coded message types for easy identification of different event types. Advanced search functionality includes text-based search with highlighting and keyboard shortcut support.
A command palette (Ctrl/Cmd + P) provides quick access to common actions:
The dashboard includes status indicators for WebSocket connection state, active client count, and events per second. It supports both dark and light themes with system theme detection.
You can install the tool globally using the .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
After installation, you can run the tool from anywhere using:
cursor-mcp --help
To update to the latest version:
dotnet tool update --global CursorMCPMonitor
To uninstall:
dotnet tool uninstall --global CursorMCPMonitor
The application can be configured through 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: The root directory to monitor for Cursor MCP logs. If null, defaults to:
%AppData%/Cursor/logs~/Library/Application Support/Cursor/logs~/.config/Cursor/logsPollIntervalMs: How often to check for new log lines (in milliseconds)LogPattern: The log file pattern to monitor (supports glob patterns like "Cursor MCP*.log")Verbosity: The verbosity level (Debug, Information, Warning, Error). Defaults to Debug to show all messages.Filter: Optional text pattern to filter log content (only lines containing this text will be displayed)Serilog: Configuration for structured logging (see Serilog configuration)You can also override settings using environment variables:
# Windows
set LogsRoot=C:\CustomPath\Cursor\logs
set PollIntervalMs=500
# Linux/macOS
export LogsRoot=/custom/path/cursor/logs
export PollIntervalMs=500
The application uses Serilog for structured logging, which can be configured in the appsettings.json file:
Serilog:MinimumLevel:Default: The default minimum log levelSerilog:MinimumLevel:Override: Override minimum log levels for specific namespacesSerilog:Enrich: Enrichers to add contextual information to logsSerilog:Properties: Custom properties to include in all log eventsBy default, logs are written to:
logs directory with daily rotation as cursormonitor-YYYYMMDD.logYou can override configuration settings using command-line options:
# 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"
dotnet build
dotnet run
The application includes Docker support. To build and run using 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
Important:
- Always run the Docker build command from the repository root directory, not from the project directory. This ensures that all necessary files are included in the build context.
- When running the Docker container, you need to map your local Cursor logs directory into the container and set the
LogsRootenvironment variable to point to the mapped directory.
The application implements structured logging using Serilog, which provides several benefits:
logs directory with daily rotationExample log format (console):
[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
Example log format (file):
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
The application includes advanced error handling:
This project is licensed under the MIT License - see the LICENSE.txt file for details.