A Model Context Protocol (MCP) server that enables code copy-paste operations between files with security controls and validation.
- Features
- Tools
- Installation & Configuration
- MCP Client Integration
- Configuration
- Usage Examples
- Security Features
- Project Structure
- Dependencies
- Logging
- Line-by-line code copying: Extract specific line ranges from source files
- Precise pasting: Insert code at exact line positions in target files
- Entire file operations: Copy complete file contents
- Search and replace: Find and replace text patterns with backup support
- File information: Get metadata and statistics about files
- Security controls: Restrict operations to allowed directories
- Backup creation: Automatic backups before file modifications
Copy code lines from a source file with optional line numbers.
copy_code(
source_file: str,
start_line: int,
end_line: Optional[int] = None,
include_line_numbers: bool = False
) -> str
Paste code at a specific line number in a target file.
paste_code(
target_file: str,
line_number: int,
code: str,
create_backup: bool = True
) -> str
Copy the complete content of a source file.
copy_entire_file(
source_file: str,
include_line_numbers: bool = False
) -> str
Search and replace text patterns in files.
search_and_replace(
target_file: str,
search_pattern: str,
replacement: str,
case_sensitive: bool = True,
replace_all: bool = True,
create_backup: bool = True
) -> str
Get detailed information about a file.
get_file_info(file_path: str) -> str
- Python 3.11 or higher
- UV package manager
- Clone or create the project:
cd /Users/map/Documents/Repos/code-copy-mcp
- Install dependencies:
uv install
- Configure allowed directories (optional):
cp .env.example .env
# Edit .env to set your ALLOWED_DIRECTORIES
uv run python mcp_server.py
# Activate virtual environment first
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Run server
python mcp_server.py
Create a .env
file in the project root:
# Comma-separated list of allowed directories
ALLOWED_DIRECTORIES=/Users/yourname,/Users/yourname/Documents,/Users/yourname/Projects
If not specified, defaults to:
- User's home directory
- Documents folder
- Desktop folder
- Projects folder (if exists)
- Path validation prevents directory traversal attacks
- File permission checks ensure read/write access
- Automatic backup creation before modifications
- Restricted operation to configured directories only
-
Copy code lines from a source file:
copy_code("/path/to/source.py", start_line=10, end_line=20)
-
Paste the code into target file:
paste_code("/path/to/target.py", line_number=5, code=" copied_code_content ")
-
Get file information:
get_file_info("/path/to/target.py")
- Python 3.11 or higher
- UV package manager (recommended) or pip
- One of the supported MCP clients
-
Clone the repository:
git clone https://github.com/mhattingpete/code-copy-mcp.git cd code-copy-mcp
-
Install dependencies:
uv sync # Or without UV: pip install -e .
-
Configure allowed directories (optional):
cp .env.example .env # Edit .env to set your ALLOWED_DIRECTORIES
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"code-copy": {
"command": "/full/path/to/uv",
"args": ["--directory", "/full/path/to/code-copy-mcp", "run", "python", "mcp_server.py"],
"env": {
"ALLOWED_DIRECTORIES": "/Users/yourname,/Users/yourname/Documents,/Users/yourname/Projects"
}
}
}
}
- Open Cursor settings (
Cmd/Ctrl + ,
) - Navigate to
Extensions
→MCP Servers
- Add new server:
Name: Code Copy MCP Command: full/path/to/uv Arguments: --directory /full/path/to/code-copy-mcp run python mcp_server.py Environment Variables: ALLOWED_DIRECTORIES=/Users/yourname,/Users/yourname/Documents,/Users/yourname/Projects
- Install the Claude Code
- Add server configuration:
claude mcp add-json code-copy '{"type":"stdio","command":"full/path/to/uv","args":["--directory", "/full/path/to/code-copy-mcp", "run", "python", "mcp_server.py"],"env": {"ALLOWED_DIRECTORIES": "/Users/yourname,/Users/yourname/Documents,/Users/yourname/Projects"}}'
Create a .env
file in the project root:
# Comma-separated list of directories where file operations are allowed
# Examples for different operating systems:
# macOS/Linux:
ALLOWED_DIRECTORIES=/Users/yourname,/Users/yourname/Documents,/Users/yourname/Projects
# Windows:
ALLOWED_DIRECTORIES=C:\Users\YourName,C:\Users\YourName\Documents,C:\Users\YourName\Projects
# If not specified, defaults to:
# - User's home directory
# - Documents folder
# - Desktop folder
# - Projects folder (if exists)
The server only allows operations within the specified directories for security reasons. Make sure to include all directories where you want to perform code copy-paste operations.
Common Issues:
-
"Module not found" errors:
# Ensure dependencies are installed uv install # Or with pip: pip install -e .
-
Permission denied errors:
- Check that the allowed directories are correctly configured
- Ensure the directories exist and are accessible
-
MCP Server not appearing:
- Verify the command path is correct
- Check the client's logs for error messages
- Restart the MCP client after configuration changes
Once configured, you can use the tools within your MCP client:
User: Copy the function calculate_total from utils.py and paste it into main.py at line 50
The assistant will:
- Use
get_file_info
to examine the files - Use
copy_code
with appropriate line numbers - Use
paste_code
at the specified location
User: Replace all occurrences of "old_method" with "new_method" in all Python files and create backups
The assistant will:
- Use
search_and_replace
on each file - Verify changes with
get_file_info
- Report the modifications made
User: Make a copy of template.py as new_template.py
The assistant will:
- Use
copy_entire_file
to get the content - Use
paste_code
to create the new file
code-copy-mcp/
├── mcp_server.py # Main MCP server
├── tools/
│ ├── __init__.py # Package init
│ ├── validation.py # Security validation
│ └── copy_tools.py # Copy-paste tools
├── .env.example # Configuration template
├── pyproject.toml # UV project configuration
└── README.md # This file
- fastmcp: MCP server framework
- pydantic: Data validation
- loguru: Structured logging
- python-dotenv: Environment file support
Logs are written to ~/.code-copy-mcp/mcp_server.log
with:
- Rotation at 1MB
- 7-day retention
- DEBUG level logging for troubleshooting