Skip to content

Migration from v3 to v4

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:

PatternHow it worksExample
Auto-routingA mode or action parameter selects the behavioredit_file with mode:"regex" replaces regex_transform_file
Auto-deductionThe tool infers intent from which parameters are presentbackup() with no params lists backups; with backup_id shows details
Intelligent I/OThe tool auto-selects the optimal strategy based on file sizeread_file replaces chunked_read_file and intelligent_read

v3 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
list_directorylist_directory({ path })Same behavior
mcp_listlist_directory({ path })Unified name
v3 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
create_directorycreate_directory({ path })Unchanged
v3 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
move_filemove_file({ source_path, dest_path })Same behavior
rename_filemove_file({ source_path, dest_path })Use move_file for renaming
v3 ToolHow to call in v4Notes
copy_filecopy_file({ source_path, dest_path })Unchanged
v3 ToolHow to call in v4Notes
get_file_infoget_file_info({ path })Unchanged
v3 ToolHow to call in v4Notes
multi_editmulti_edit({ path, edits_json })Unchanged — atomic multi-edit on one file
v3 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
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_createAutomaticBackups are created automatically before destructive operations

Additional params: limit, filter_operation, filter_path, newer_than_hours, older_than_days, dry_run, preview.

v3 ToolHow to call in v4Notes
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 ToolHow to call in v4Notes
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 examples:
backup() // -> list all
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 examples:
server_info() // -> help
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 routing:
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 routing:
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 SizeStrategy Selected
< 100 KBDirect I/O (fastest)
100 KB — 500 KBStreaming I/O
500 KB — 5 MBChunked processing
> 5 MBSpecial handling with progress

You never need to choose between read_file and chunked_read_file — v4 handles it transparently.


#ToolCategoryv3 tools absorbed
1read_fileCoreread_file, chunked_read_file, intelligent_read, read_file_range, read_base64, streaming_read_file
2write_fileCorewrite_file, create_file, streaming_write_file, intelligent_write, write_base64
3edit_fileCoreedit_file, smart_edit_file, intelligent_edit, recovery_edit, search_and_replace, replace_nth_occurrence, regex_transform_file
4list_directoryCorelist_directory, mcp_list
5search_filesCoresmart_search, advanced_text_search, mcp_search, count_occurrences
6analyze_operationAnalysisanalyze_file, get_optimization_suggestion, analyze_write, analyze_edit, analyze_delete
7create_directoryFilescreate_directory
8delete_fileFilesdelete_file, soft_delete_file
9move_fileFilesmove_file, rename_file
10copy_fileFilescopy_file
11get_file_infoFilesget_file_info
12multi_editEditmulti_edit
13batch_operationsBatchbatch_operations, execute_pipeline, batch_rename_files, batch_file_operations
14backupRecoverylist_backups, get_backup_info, compare_with_backup, cleanup_backups, restore_backup, backup_create
15wslIntegrationwsl_to_windows_copy, windows_to_wsl_copy, sync_claude_workspace, wsl_windows_status, configure_autosync, autosync_status
16server_infoUtilitiesget_help, performance_stats, get_edit_telemetry, capture_last_artifact, artifact_info