servers icon indicating copy to clipboard operation
servers copied to clipboard

Feature Request: Log File Size Management and Rotation

Open AMoorer opened this issue 2 months ago • 1 comments

Is your feature request related to a problem?

Yes. The @modelcontextprotocol/server-filesystem MCP server generates unbounded log files in %APPDATA%\Claude\logs\mcp-server-filesystem*.log (Windows) / ~/Library/Logs/Claude/ (macOS) that can grow to excessive sizes (17+ MB observed), creating several issues:

  1. Performance degradation: Large log files slow down log viewing and parsing during troubleshooting
  2. Disk space waste: Logs consume unnecessary space without automatic cleanup
  3. Troubleshooting obstruction: Ironically, oversized logs defeat their debugging purpose by becoming unwieldy
  4. User maintenance burden: Manual cleanup required, which most users won't perform regularly

Describe the solution you'd like

Add configurable log rotation with size-based and/or time-based triggers:

Proposed Configuration Options

Environment Variables:

MCP_FILESYSTEM_LOG_MAX_SIZE=10485760  # Max log size in bytes (default: 10MB)
MCP_FILESYSTEM_LOG_MAX_FILES=5        # Number of rotated logs to retain (default: 5)
MCP_FILESYSTEM_LOG_ROTATION=size      # Rotation strategy: 'size', 'time', or 'both' (default: size)
MCP_FILESYSTEM_LOG_INTERVAL=86400     # Rotation interval in seconds (default: daily)

Alternative: Command-line Arguments:

npx @modelcontextprotocol/server-filesystem \
  --log-max-size 10M \
  --log-max-files 5 \
  --log-rotation size \
  /path/to/allowed/dir

Rotation Behavior

  1. Size-based rotation: When log file exceeds LOG_MAX_SIZE, rotate immediately
  2. Time-based rotation: Rotate at fixed intervals (e.g., daily at midnight)
  3. File naming convention: mcp-server-filesystem.log, mcp-server-filesystem.log.1, mcp-server-filesystem.log.2, etc.
  4. Automatic cleanup: Delete oldest log when LOG_MAX_FILES limit reached
  5. Graceful degradation: If rotation fails, log to stderr and continue operation

Describe alternatives you've considered

  1. External log rotation tools:

    • Windows Task Scheduler + batch scripts
    • Linux logrotate
    • Problem: Requires per-user configuration; not portable across installations
  2. Desktop Commander MCP: Includes 10MB auto-rotation but introduces complexity for users only needing basic filesystem access

  3. Manual periodic deletion: Impractical; most users unaware logs exist until problems arise

Additional context

  • Related discussion: Issue #1879 proposes environment variable configuration; log management would complement that effort
  • Community need: Multiple users report log bloat issues in Discord/support channels
  • Reference implementation: Desktop Commander MCP successfully implements 10MB rotation

Implementation Notes

Consider using established Node.js logging libraries with built-in rotation:

  • winston with winston-daily-rotate-file
  • pino with pino-roll
  • Or lightweight custom implementation (~50 LOC)

Default to conservative settings (10MB max, 5 file retention) to balance disk usage against debugging needs.

Would you be willing to submit a PR?

Potentially, depending on maintainer guidance regarding preferred implementation approach (library vs. custom, env vars vs. CLI args).

AMoorer avatar Nov 09 '25 14:11 AMoorer