Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Atomic multi-file find-and-replace by Essential AI Solutions (essentialai.uk)
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"multi-edit": {
"command": "npx",
"args": [
"-y",
"@essentialai/mcp-multi-edit"
]
}
}
}Run this in your terminal
claude mcp add multi-edit -- npx -y @essentialai/mcp-multi-editPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"multi-edit": {
"command": "npx",
"args": [
"-y",
"@essentialai/mcp-multi-edit"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"multi-edit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@essentialai/mcp-multi-edit"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account eaisdevelopment, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.7) reached the registry 9 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Apify MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
An MCP server that gives Claude the ability to perform multiple find-and-replace operations in a single tool call with guaranteed atomicity -- all edits succeed or none apply.
Built by Essential AI Solutions for Claude Code and Claude Desktop.
Claude's built-in Edit tool handles one find-and-replace per call. When renaming a variable across a file or refactoring multiple files, that means dozens of individual tool calls -- each consuming context tokens and adding latency.
Multi Edit batches them into a single call:
Without multi_edit: 105 tool calls | 15,750 tokens
With multi_edit: 21 tool calls | 7,850 tokens (-80% calls, -50% tokens) With multi_edit_files: 6 tool calls | 4,550 tokens (-94% calls, -71% tokens)
Benchmarks run on realistic scenarios (bulk rename, logging migration, cross-file refactor).
See benchmarks/results/BENCHMARK-REPORT.md for full details.
Add .mcp.json to your project root:
{
"mcpServers": { "Multi Edit from Essential AI Solutions (essentialai.uk)": { "command": "npx", "args": ["-y", "@essentialai/mcp-multi-edit"] } } }
Restart Claude Code. Then add the included CLAUDE.md to your project root so Claude automatically prefers multi_edit over the built-in Edit tool:
## Editing Files
When making multiple edits to the same file or across multiple files, prefer using the multi_edit and multi_edit_files MCP tools over the built-in Edit tool. These batch edits atomically in a single call.
That's it -- Claude will now use multi_edit whenever it's the right tool for the job.
Display name: Claude Code uses the key name in
mcpServersas the server's display name. You can change the key to any name you prefer.
Alternative: One-liner via CLI:
claude mcp add --transport stdio multi-edit -- npx -y @essentialai/mcp-multi-edit
Note: The CLI only accepts simple names (letters, numbers, hyphens, underscores). For the full branded display name, use the
.mcp.jsonapproach above.
Add to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": { "Multi Edit from Essential AI Solutions (essentialai.uk)": { "command": "npx", "args": ["-y", "@essentialai/mcp-multi-edit"] } } }
Restart Claude Desktop.
Full installation guide: docs/installation.md
multi_edit -- Single file, multiple editsBatch multiple find-and-replace operations on one file. Edits apply sequentially and atomically.
{
"file_path": "/project/src/app.ts", "edits": [ { "old_string": "const oldName = getValue()", "new_string": "const newName = getValue()" }, { "old_string": "console.log", "new_string": "logger.info", "replace_all": true } ] }
| Parameter | Type | Default | Description |
|---|---|---|---|
file_path | string | required | Absolute path to the file |
edits | array | required | Find-and-replace operations (applied in order) |
edits[].old_string | string | required | Text to find (exact match) |
edits[].new_string | string | required | Replacement text |
edits[].replace_all | boolean | false | Replace all occurrences |
dry_run | boolean | false | Preview changes without applying |
backup | boolean | true | Create .bak backup before editing |
multi_edit_files -- Multiple files, one atomic operationCoordinate edits across multiple files. If any file fails, all files are rolled back automatically.
{
"files": [ { "file_path": "/project/src/types.ts", "edits": [ { "old_string": "interface UserData {", "new_string": "interface UserProfile {" } ] }, { "file_path": "/project/src/api.ts", "edits": [ { "old_string": "UserData", "new_string": "UserProfile", "replace_all": true } ] } ] }
| Parameter | Type | Default | Description |
|---|---|---|---|
files | array | required | Array of file edit operations |
files[].file_path | string | required | Absolute path to the file |
files[].edits | array | required | Edits for this file (same format as above) |
dry_run | boolean | false | Preview changes without applying |
Full usage guide with examples: docs/usage.md
.bak files created before every edit (disable with backup: false)old_string matches multiple locations| Code | Retryable | Description |
|---|---|---|
MATCH_NOT_FOUND | Yes | old_string not found in file |
AMBIGUOUS_MATCH | Yes | old_string matches multiple locations |
VALIDATION_FAILED | Yes | Invalid input schema |
FILE_NOT_FOUND | No | File does not exist |
PERMISSION_DENIED | No | Insufficient file permissions |
BACKUP_FAILED | No | Could not create backup file |
When retryable is true, Claude reads the recovery_hints in the response, adjusts the input, and retries automatically.
Troubleshooting guide: docs/troubleshooting.md
npm install # Install dependencies
npm run build # Compile TypeScript npm test # Run 264 tests npm run test:coverage # Coverage report (90%+) npm run benchmark # Run benchmark suite npm run dev # Watch mode
src/
index.ts # MCP server entry (stdio transport) server.ts # Server factory and tool registration tools/ multi-edit.ts # multi_edit tool handler multi-edit-files.ts # multi_edit_files tool handler core/ editor.ts # File editing engine (atomic read-modify-write) validator.ts # Zod input validation schemas reporter.ts # Result formatting and diff generation errors.ts # Error classification and envelope creation types/ index.ts # TypeScript type definitions
| Document | Description |
|---|---|
| Installation Guide | All setup options for Claude Code and Claude Desktop |
| Usage Guide | Detailed tool reference with examples |
| Troubleshooting | Common issues and solutions |
| Changelog | Version history |
| Benchmark Report | Performance measurements |
PolyForm Noncommercial License 1.0.0
Free for personal and non-commercial use. For commercial licensing, contact support@essentialai.uk.
Built by Essential AI Solutions