@bimawa/emacsclient-mcp
Emacs MCP server for Pi — 22 Emacs tools for LLM-assisted editing, search, buffer management, and PR review
Package details
Install @bimawa/emacsclient-mcp from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@bimawa/emacsclient-mcp- Package
@bimawa/emacsclient-mcp- Version
1.0.0- Published
- Jul 13, 2026
- Downloads
- not available
- Author
- bimawa
- License
- MIT
- Types
- extension
- Size
- 13.4 MB
- Dependencies
- 1 dependency · 1 peer
Pi manifest JSON
{
"extensions": [
"./extension/index.ts"
],
"image": "https://raw.githubusercontent.com/bimawa/emacsclient-mcp/main/docs/preview.png"
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
emacsclient-mcp
Emacs MCP server + Pi extension — 22 Emacs tools for LLM-assisted editing, search, buffer management, and PR review.
What is this?
A Model Context Protocol (MCP) server that gives LLMs direct access to Emacs — no emacsclient binary needed. It communicates via Unix socket using the Emacs server protocol, implementing &-quoting as defined in emacsclient.c and server.el.
Comes with:
- Rust MCP binary — 22 tools over JSON-RPC stdio
- Pi extension — auto-spawns the binary, registers all tools
- PR review agent — 4-phase workflow (Setup → Analysis → Issues → Report)
Quick Start
1. Install
# Option A: Pi package (recommended — gets extension + agent)
pi install npm:@bimawa/emacsclient-mcp
# Option B: Rust binary only (for other MCP clients)
cargo install emacsclient-mcp
# Option C: Homebrew (macOS)
brew install bimawa/tap/emacsclient-mcp
2. Start Emacs server
M-x server-start
;; or:
emacs --daemon
3. Reload Pi
/reload
Pi picks up the extension, spawns the binary, discovers 22 Emacs tools, and registers the emacs-pr-review agent.
Tools
| Category | Tools |
|---|---|
| Eval | emacs_eval — run arbitrary Elisp |
| Buffers | emacs_list_buffers, emacs_create_buffer, emacs_set_buffer_content, emacs_get_buffer_content, emacs_save_buffer, emacs_kill_buffer |
| Navigation | emacs_find_file, emacs_switch_to_buffer, emacs_goto_line, emacs_get_cursor_position, emacs_get_line |
| Search | emacs_search, emacs_replace |
| Editing | emacs_insert_at_point, emacs_get_region, emacs_set_mark |
| Windows | emacs_split_window_right, emacs_split_window_below, emacs_other_window, emacs_delete_other_windows, emacs_display_in_other_window |
PR Review Agent
Activate with /agent emacs-pr-review in Pi. The agent:
- Setup — gets the diff, opens review buffer in
org-mode, splits Emacs windows - Analysis — reads each changed file, applies review heuristics (R1–R4)
- Findings — documents issues by severity: BLOCKER / CRITICAL / WARNING / SUGGESTION
- Report — shows summary in Emacs, offers inline comments
Protocol
Implements the exact Emacs server protocol from server.el:
- Client sends first (no server greeting)
- Single-line commands:
-auth KEY -eval EXPR\n &-quoting: spaces →&_, newlines →&n, leading-→&-,&→&&- Response:
-emacs-pid PID\n-print RESULT\n
Binary Resolution
The extension finds the binary in this order:
EMACS_MCP_BINARYenvironment variable- Pre-built binary alongside the extension (package distro)
~/.cargo/bin/emacsclient-mcp(cargo install)which emacsclient-mcp(PATH / Homebrew)cargo run --release(dev mode)
Development
# Build the Rust binary
cargo build --release
# Run locally with Pi
pi -e ./extension/index.ts
# Test the MCP binary directly
echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | ./target/release/emacsclient-mcp
License
MIT © bimawa
