MCP server providing hashline-based file editing — line-addressed edits with content hashes for integrity verification.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"hashline-edit": {
"args": [
"mcp-hashline-edit-server"
],
"command": "bunx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
MCP server providing hashline-based file editing — line-addressed edits with content hashes for integrity verification.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'mcp-hashline-edit-server' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked mcp-hashline-edit-server against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Pi Coding Agent extension (CLI-first) — routes bash/read/grep/find/ls through lean-ctx CLI for strong token savings. Optional MCP bridge can register advanced tools.
Autonomous spec-to-product coding-agent CLI with an MCP server exposing 34 tools over stdio.
97% token reduction for AI coding sessions — zero deps, 21 languages, MCP server
App framework, testing framework, and inspector for MCP Apps.
MCP Security Weekly
Get CVE alerts and security updates for Mcp Hashline Edit Server and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
MCP server providing hashline-based file editing — line-addressed edits with content hashes for integrity verification.
Based on hashline edit format from oh-my-pi.
LLM reads file, every line tagged with short content hash:
1:a3|function hello() {
2:f1| return "world";
3:0e|}
Model references tags when editing — "replace line 2:f1", "replace range 1:a3 through 3:0e", "insert after 3:0e". If file changed since last read, hashes won't match, edit rejected before corruption.
Model doesn't need to reproduce old content/whitespace to identify changes. Benchmarks show hashline matches or beats str_replace for most models, weakest models gain most (up to 10x improvement).
npm install mcp-hashline-edit-server
# or
bun add mcp-hashline-edit-server
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"hashline-edit": {
"command": "bunx",
"args": ["mcp-hashline-edit-server"]
}
}
}
Add to .cursor/mcp.json (project root or global):
{
"mcpServers": {
"hashline-edit": {
"command": "bunx",
"args": ["mcp-hashline-edit-server"]
}
}
}
Server runs over stdio:
bunx mcp-hashline-edit-server
git clone https://github.com/Submerisble/mcp-hashline-edit-server.git
cd mcp-hashline-edit-server
bun install
bun run src/index.ts
read_fileRead file with hashline-prefixed output (LINE:HASH|content).
| Parameter | Type | Description |
|---|---|---|
path | string | File path (relative or absolute) |
offset | number? | Start line (1-indexed) |
limit | number? | Max lines (default: 2000) |
edit_fileEdit file using hash-verified line references. Four edit variants:
set_line — Replace single line:
{"set_line": {"anchor": "2:f1", "new_text": " return \"universe\";"}}
replace_lines — Replace range:
{"replace_lines": {"start_anchor": "1:a3", "end_anchor": "3:0e", "new_text": "function greet() {\n return \"hi\";\n}"}}
insert_after — Insert after line:
{"insert_after": {"anchor": "1:a3", "text": " // new comment"}}
replace — Fuzzy substring replace (fallback, no hashes needed):
{"replace": {"old_text": "return \"world\"", "new_text": "return \"universe\""}}
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
edits | array | Edit operations |
Edits validated atomically against file as last read. Sorted, applied bottom-up automatically.
write_fileCreate or overwrite file.
| Parameter | Type | Description |
|---|---|---|
path | string | File path |
content | string | Content to write |
grepSearch files with hashline-prefixed results.
| Parameter | Type | Description |
|---|---|---|
pattern | string | Regex pattern |
path | string? | File or directory |
glob | string? | Filter by glob (e.g., *.js) |
type | string? | Filter by file type |
i | boolean? | Case-insensitive |
pre | number? | Context lines before |
post | number? | Context lines after |
limit | number? | Max matches (default: 100) |
Requires rg (ripgrep) on system.
\rxxHash32 on whitespace-stripped string00-ff)Hash whitespace-insensitive — indentation changes don't affect hash, references robust against reformat