list_filesLABSCO SUMMARY
The backup trail is what makes the edit tools usable.
Line-range edits are the right primitive for an agent — they keep a change small enough to review and cheap enough to retry — but they are also easy to get wrong by one line. Automatic backups plus get_file_diff mean a bad edit is recoverable rather than a restore from version control. Treat run_command with the caution any shell deserves: the filter reduces the blast radius, it does not remove it.
What it is
A Python MCP server for working on a local machine: reading and writing files, editing them by line number, searching across a tree with regex and context lines, running commands, and validating or formatting code. Every modification is backed up first and recorded in an edit history.
What you get
- Line-level editing rather than whole-file rewrites —
edit_file_lines,insert_linesanddelete_lineschange only the range you name, andget_file_linesreads one back - Project-wide search and replace —
search_advtakes include and exclude patterns, file-type groups, case and whole-word flags, regex, and context lines;replace_advdoes the same with adry_runand a backup switch - Finding by name or content —
search_files_by_name,search_in_files,find_filesandget_search_statsfor the size and type distribution of a tree - Basic file operations with metadata —
list_files,read_file,write_file,get_file_info - An undo trail:
get_edit_historylists what changed,get_file_diffcompares a file against its backup - System and code helpers —
run_commandunder safety restrictions,get_system_info,get_running_processes,validate_syntaxandformat_codethrough Black or Prettier
Requirements
Python, with an install script that creates a virtual environment and installs dependencies; the package is mcp-local, version 1.0.0, and the console entry point is mcp-local. The client launches the mcp-local command from the virtual environment the install script creates. Path validation blocks directory traversal, file size limits are configurable, and dangerous commands are filtered out of run_command.
Setup effort
Build from source — git clone https://github.com/nexus-aissam/mcp-local
USE CASES
Changing a few lines without rewriting the file
Replace, insert or delete an exact line range and leave the rest of the file untouched.
Renaming something across a project
Run the replacement as a dry run first, check what it would touch, then apply it with backups on.
Checking what an edit actually did
Diff the current file against its backup, and read the history if more than one change is in question.
Getting a feel for an unfamiliar repository
Read the file-type and size distribution before opening anything.
23 tools
Listed in project docs. Your client may show a different list.
read_filewrite_fileget_file_linesget_file_infoedit_file_linesinsert_linesdelete_linesreplace_in_fileget_file_diffget_edit_historysearch_advreplace_advsearch_files_by_namesearch_in_filesget_search_statsrun_commandget_system_infofind_filesget_running_processesvalidate_syntaxformat_codeget_local_dataBEFORE YOU INSTALL
What to know first
Tools you get
23 tools named in the project's documentation.
Requires
Python 3.8+
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/nexus-aissam/mcp-local
cd mcp-local
./scripts/install.sh # sets up venv and installs everythingAdd the mcpServers block to your Claude Desktop config file
MCP Clients
Any MCP client
{
"mcpServers": {
"mcp-local": {
"command": "<YOUR_PATH_TO_MCP_LOCAL>/venv/bin/mcp-local",
"args": []
}
}
}