MCP SmallEdit
# MCP SmallEdit
A Model Context Protocol (MCP) server that provides tools for making small, targeted edits to files using stream editors like `sed` and `awk`.
## Why SmallEdit?
When making minor changes to files (fixing typos, updating version numbers, changing config values), using full file replacement is inefficient. SmallEdit provides targeted editing capabilities that:
- Save tokens by only specifying what to change
- Reduce errors by not rewriting entire files
- Enable bulk operations across multiple files
- Provide preview capabilities before applying changes
## Installation
```bash
npm install -g @bard/mcp-smalledit
```
## Tools Available
### 1. `sed_edit`
Make small edits using sed patterns.
**Examples:**
```javascript
// Replace all occurrences
sed_edit({
file: "package.json",
pattern: "s/0.1.0/0.2.0/g"
})
// Delete lines containing pattern
sed_edit({
file: "config.ts",
pattern: "/DEBUG_MODE/d"
})
// Preview changes first
sed_edit({
file: "index.ts",
pattern: "s/foo/bar/g",
preview: true
})
```
### 2. `sed_multifile`
Apply patterns to multiple files.
**Examples:**
```javascript
// Update imports across all TypeScript files
sed_multifile({
pattern: "s/'.\\//src\\//g",
filePattern: "*.ts",
directory: "src"
})
// Remove console.log from all JS files
sed_multifile({
pattern: "/console\\.log/d",
filePattern: "*.js"
})
```
### 3. `quick_replace`
Simple find and replace without regex.
**Examples:**
```javascript
// Replace text literally
quick_replace({
file: "README.md",
find: "version 1.0",
replace: "version 2.0"
})
// Replace only first occurrence
quick_replace({
file: "config.json",
find: "localhost",
replace: "production.server.com",
all: false
})
```
### 4. `line_edit`
Edit specific lines by number.
**Examples:**
```javascript
// Replace line 42
line_edit({
file: "index.ts",
lineNumber: 42,
action: "replace",
content: "export const VERSION = '2.0.0';"
})
// Delete lines 10-20
line_edit({
file: "test.ts",
lineRange: "10,20",
action: "delete"
})
// Insert after line 5
line_edit({
file: "imports.ts",
lineNumber: 5,
action: "insert_after",
content: "import { newModule } from './new-module';"
})
```
### 5. `awk_process`
Process files with AWK for complex operations.
**Examples:**
```javascript
// Sum numbers in second column
awk_process({
file: "data.csv",
script: "{sum += $2} END {print sum}"
})
// Extract specific columns
awk_process({
file: "data.tsv",
script: "{print $1, $3}",
outputFile: "extracted.txt"
})
```
## Configuration
Add to your MCP client config:
```json
{
"mcpServers": {
"smalledit": {
"command": "mcp-smalledit"
}
}
}
```
## Common Use Cases
### Version Bumping
```javascript
sed_edit({
file: "package.json",
pattern: 's/"version": "[^"]*"/"version": "1.2.3"/g'
})
```
### Update Import Paths
```javascript
sed_multifile({
pattern: "s|'@old/package|'@new/package|g",
filePattern: "*.ts"
})
```
### Remove Debug Code
```javascript
sed_multifile({
pattern: "/\\/\\/\\s*DEBUG:/d",
filePattern: "*.js"
})
```
### Fix Formatting
```javascript
// Add missing semicolons
sed_multifile({
pattern: "s/^\\([^;]*\\)$/\\1;/",
filePattern: "*.ts"
})
```
## Safety Features
- **Automatic Backups**: Creates `.bak` files by default
- **Preview Mode**: Test patterns before applying
- **Error Handling**: Clear error messages for invalid patterns
- **File Validation**: Checks file existence before editing
## Notes
- All file paths are relative to the current working directory
- Backup files (`.bak`) are created by default unless disabled
- Use preview mode to test complex patterns
- Escape special characters appropriately in patterns
## License
MIT
-e
## Known Issues
### Pattern Delimiters
When using path replacements, use pipe delimiter instead of forward slash to avoid quoting issues:
```javascript
// ❌ Problematic with paths
sed_edit({ pattern: "s/old/path/new/path/g" })
// ✅ Works correctly
sed_edit({ pattern: "s|old/path|new/path|g" })
```
TDQS
Scored across 10 tools
Most tools have distinct purposes, but there is some overlap between sed_edit and perl_edit as both handle text editing with different engines, and awk_process also overlaps in processing capabilities. The descriptions help clarify differences, but an agent might occasionally confuse these for similar tasks.
The naming follows a consistent snake_case pattern with clear verb_noun or noun_verb structures, such as awk_process, diff_preview, and line_edit. Minor deviations exist, like 'help' being a single word and 'quick_replace' using an adjective, but overall it's readable and predictable.
With 10 tools, the count is well-scoped for a file editing utility server. Each tool serves a specific function, such as editing, backup management, or help, without redundancy, making it appropriate for the domain's complexity.
The tool set covers core file editing operations, backup management, and help, but there are minor gaps, such as no direct tool for creating or deleting files, which agents might need to work around. However, it supports common workflows like editing, diffing, and restoring backups effectively.