MCP Filesystem Ultra v4.0.0 consolidates 59 tools down to 16 without losing any functionality. Every feature from v3 is preserved — the tools are just smarter and unified.
Why 16? Claude Desktop triggers lazy tool loading when an MCP server exposes more than roughly 30 tools. When lazy loading is active, Claude must issue a tool_search call before it can invoke any tool, adding latency and token overhead to every interaction. By consolidating to 16 tools — well under the threshold — lazy loading is avoided entirely and every tool is immediately available.
How? Each v4 tool absorbs multiple v3 tools through three patterns:
Pattern How it works Example Auto-routing A mode or action parameter selects the behavior edit_file with mode:"regex" replaces regex_transform_fileAuto-deduction The tool infers intent from which parameters are present backup() with no params lists backups; with backup_id shows detailsIntelligent I/O The tool auto-selects the optimal strategy based on file size read_file replaces chunked_read_file and intelligent_read
v3 Tool How to call in v4 Notes read_fileread_file({ path })Same behavior chunked_read_fileread_file({ path })Chunking is now automatic for large files intelligent_readread_file({ path })Intelligence is built-in (auto-selects I/O strategy) read_file_rangeread_file({ path, start_line: 10, end_line: 50 })Use start_line/end_line params read_base64read_file({ path, encoding: "base64" })Use encoding:"base64" for binary files streaming_read_fileread_file({ path })Streaming is automatic when needed
Additional params: max_lines, mode (“all”, “head”, “tail”).
v3 Tool How to call in v4 Notes write_filewrite_file({ path, content })Same behavior create_filewrite_file({ path, content })Creates file if it does not exist streaming_write_filewrite_file({ path, content })Streaming is automatic for large content intelligent_writewrite_file({ path, content })Intelligence is built-in write_base64write_file({ path, content_base64: "..." })Use content_base64 param or encoding:"base64" write_last_artifactserver_info({ action: "artifact", sub_action: "write", path })Moved to server_info
v3 Tool How to call in v4 Notes edit_fileedit_file({ path, old_text, new_text })Same behavior (default mode) smart_edit_fileedit_file({ path, old_text, new_text })Smart editing is built-in intelligent_editedit_file({ path, old_text, new_text })Intelligence is built-in recovery_editedit_file({ path, old_text, new_text })Recovery logic is built-in search_and_replaceedit_file({ path, mode: "search_replace", pattern, replacement })Use mode:"search_replace" replace_nth_occurrenceedit_file({ path, old_text, new_text, occurrence: N })Use occurrence param (1=first, -1=last) regex_transform_fileedit_file({ path, mode: "regex", patterns_json: "[...]" })Use mode:"regex" with patterns_json count_occurrences (edit)search_files({ path, pattern, count_only: true })Moved to search_files
Additional params: force, whole_word, case_sensitive, create_backup, dry_run.
Accepts both old_text/new_text and old_str/new_str for compatibility.
v3 Tool How to call in v4 Notes list_directorylist_directory({ path })Same behavior mcp_listlist_directory({ path })Unified name
v3 Tool How to call in v4 Notes smart_searchsearch_files({ path, pattern })Default mode (fast search) advanced_text_searchsearch_files({ path, pattern, case_sensitive: true })Activated by case_sensitive, whole_word, or include_context mcp_searchsearch_files({ path, pattern })Unified name count_occurrencessearch_files({ path, pattern, count_only: true })Use count_only:true; add return_lines:true for line numbers
Additional params: file_types, context_lines, include_content.
v3 Tool How to call in v4 Notes analyze_fileanalyze_operation({ operation: "file", path })Analyze file strategy get_optimization_suggestionanalyze_operation({ operation: "optimize", path })Get optimization advice analyze_writeanalyze_operation({ operation: "write", path, content })Preview write impact analyze_editanalyze_operation({ operation: "edit", path, old_text, new_text })Preview edit impact analyze_deleteanalyze_operation({ operation: "delete", path })Preview delete impact
v3 Tool How to call in v4 Notes create_directorycreate_directory({ path })Unchanged
v3 Tool How to call in v4 Notes delete_filedelete_file({ path })Now defaults to soft-delete soft_delete_filedelete_file({ path })permanent: false is default
Use permanent: true for hard delete.
v3 Tool How to call in v4 Notes move_filemove_file({ source_path, dest_path })Same behavior rename_filemove_file({ source_path, dest_path })Use move_file for renaming
v3 Tool How to call in v4 Notes copy_filecopy_file({ source_path, dest_path })Unchanged
v3 Tool How to call in v4 Notes get_file_infoget_file_info({ path })Unchanged
v3 Tool How to call in v4 Notes multi_editmulti_edit({ path, edits_json })Unchanged — atomic multi-edit on one file
v3 Tool How to call in v4 Notes batch_operationsbatch_operations({ request_json: "{...}" })Same behavior (atomic batch ops) execute_pipelinebatch_operations({ pipeline_json: "{...}" })Use pipeline_json param batch_rename_filesbatch_operations({ rename_json: "{...}" })Use rename_json param batch_file_operationsbatch_operations({ request_json: "{...}" })Unified batch
Provide exactly one of: request_json, pipeline_json, or rename_json.
v3 Tool How to call in v4 Notes list_backupsbackup() or backup({ action: "list" })Default action get_backup_infobackup({ action: "info", backup_id: "..." })Show details for one backup compare_with_backupbackup({ action: "compare", backup_id: "...", file_path: "..." })Diff current vs. backup cleanup_backupsbackup({ action: "cleanup" })Dry-run by default restore_backupbackup({ action: "restore", backup_id: "..." })Restore is now part of backup backup_createAutomatic Backups are created automatically before destructive operations
Additional params: limit, filter_operation, filter_path, newer_than_hours, older_than_days, dry_run, preview.
v3 Tool How to call in v4 Notes wsl_to_windows_copywsl({ wsl_path: "/home/..." })Direction auto-detected from path windows_to_wsl_copywsl({ windows_path: "C:\\..." })Direction auto-detected from path sync_claude_workspacewsl({ direction: "wsl_to_windows" })Use direction param for workspace sync wsl_windows_statuswsl({ action: "status" })Combined integration status configure_autosyncwsl({ action: "autosync_config", enabled: true })Configuration mode get_autosync_config / autosync_statuswsl({ action: "autosync_status" })Status check
v3 Tool How to call in v4 Notes get_helpserver_info() or server_info({ action: "help" })Default action; use topic for specific help performance_statsserver_info({ action: "stats" })Includes edit telemetry get_edit_telemetryserver_info({ action: "stats" })Merged into stats capture_last_artifactserver_info({ action: "artifact", sub_action: "capture", content: "..." })Capture artifact artifact_infoserver_info({ action: "artifact", sub_action: "info" })Show stored artifact
Many unified tools auto-detect the intended action from which parameters you provide:
backup ({ action: " info " , backup_id: " ... " }) // -> show details
backup ({ action: " compare " , backup_id , file_path }) // -> compare
backup ({ action: " cleanup " }) // -> cleanup (dry-run)
backup ({ action: " restore " , backup_id: " ... " }) // -> restore
server_info ({ action: " stats " }) // -> performance stats
server_info ({ action: " artifact " , sub_action: " capture " , content: " code " })
server_info ({ action: " artifact " , sub_action: " write " , path: " file.go " })
Tools with a mode or action parameter route to different engine functions:
edit_file ({ path , old_text , new_text }) // -> default replace
edit_file ({ path , old_text , new_text , occurrence: 1 }) // -> replace Nth
edit_file ({ path , mode: " search_replace " , pattern , replacement }) // -> recursive search & replace
edit_file ({ path , mode: " regex " , patterns_json: " [...] " }) // -> regex transform
search_files ({ path , pattern }) // -> fast search (SmartSearch)
search_files ({ path , pattern , case_sensitive: true }) // -> advanced text search
search_files ({ path , pattern , count_only: true }) // -> count occurrences
read_file and write_file auto-select the optimal I/O strategy based on file size:
File Size Strategy Selected < 100 KB Direct I/O (fastest) 100 KB — 500 KB Streaming I/O 500 KB — 5 MB Chunked processing > 5 MB Special handling with progress
You never need to choose between read_file and chunked_read_file — v4 handles it transparently.
# Tool Category v3 tools absorbed 1 read_fileCore read_file, chunked_read_file, intelligent_read, read_file_range, read_base64, streaming_read_file2 write_fileCore write_file, create_file, streaming_write_file, intelligent_write, write_base643 edit_fileCore edit_file, smart_edit_file, intelligent_edit, recovery_edit, search_and_replace, replace_nth_occurrence, regex_transform_file4 list_directoryCore list_directory, mcp_list5 search_filesCore smart_search, advanced_text_search, mcp_search, count_occurrences6 analyze_operationAnalysis analyze_file, get_optimization_suggestion, analyze_write, analyze_edit, analyze_delete7 create_directoryFiles create_directory8 delete_fileFiles delete_file, soft_delete_file9 move_fileFiles move_file, rename_file10 copy_fileFiles copy_file11 get_file_infoFiles get_file_info12 multi_editEdit multi_edit13 batch_operationsBatch batch_operations, execute_pipeline, batch_rename_files, batch_file_operations14 backupRecovery list_backups, get_backup_info, compare_with_backup, cleanup_backups, restore_backup, backup_create15 wslIntegration wsl_to_windows_copy, windows_to_wsl_copy, sync_claude_workspace, wsl_windows_status, configure_autosync, autosync_status16 server_infoUtilities get_help, performance_stats, get_edit_telemetry, capture_last_artifact, artifact_info