# Claude Code IDE for Emacs: MCP Integration and Setup

> claude-code-ide.el connects Claude Code CLI to Emacs through Model Context Protocol tools for editor context, diagnostics, project operations, and reviewed diffs. It fits Emacs 28.1 or later, but the README identifies the package as being in early development.

**manzaltu/claude-code-ide.el** — Claude Code IDE integration for Emacs

- Repository: https://github.com/manzaltu/claude-code-ide.el
- Stars: 1,679 · Forks: 116
- Language: Emacs Lisp
- License: GPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/manzaltu-claude-code-ide-el

## Why claude-code-ide.el Extends Claude Beyond a Terminal Wrapper

claude-code-ide.el addresses a specific gap for Emacs users who already have Claude Code CLI but want the assistant to work with editor state rather than operate as an isolated terminal process. The package is aimed at developers using Emacs 28.1 or later for code navigation, project work, diagnostics, and interactive editing. It connects to Claude Code through Model Context Protocol, abbreviated MCP in the README, and adds a layer of tools that can expose Emacs capabilities to Claude.

The package can report the active file, selection, buffer context, and workspace information. Its documented integrations include LSP navigation through xref commands, Tree-sitter syntax analysis, Imenu symbol listing, and Project integration. The README also says that any Emacs command or function can be exposed as an MCP tool. That extensibility is useful for project-wide searches, refactoring workflows, specialized major modes, and custom Elisp functions, although it also means the operator must decide which editor actions Claude can access.

This is not a replacement for Claude Code CLI. The README lists that CLI as a prerequisite and points readers to Anthropic's Claude Code documentation for installing it. The Emacs package supplies integration around that existing command-line tool. This division matters when evaluating setup: problems locating the CLI, authentication, account access, or Claude Code service behavior originate outside this repository and are not addressed by the documented Emacs installation steps.

## The MCP Bridge Between Claude Code Sessions and Emacs

Based on the repository layout, the package separates its responsibilities across several Emacs Lisp files. The main `claude-code-ide.el` file provides the core integration, while `claude-code-ide-mcp.el`, `claude-code-ide-mcp-server.el`, and `claude-code-ide-mcp-http-server.el` hold different parts of the protocol and server implementation. Tool access is handled by `claude-code-ide-mcp-handlers.el` and `claude-code-ide-emacs-tools.el`. Diagnostics, transient commands, debugging, and tests have separate files as well.

The documented data flow begins in an Emacs project session. Claude Code IDE starts a Claude Code instance for the current project and tracks editor context such as the active file, buffer, and text selection. Claude can then use MCP tools to request editor operations or query workspace information. Built-in tools are intended to cover concerns such as file operations, editor state, project information, xrefs, Tree-sitter, and related Emacs features.

The session also has an output path into the editor. Suggested file changes can appear in an ediff view rather than being accepted without an opportunity to inspect them. Flycheck and Flymake diagnostics can be exposed to Claude, allowing the assistant to work with errors and warnings associated with open files. This is a more interactive arrangement than sending a prompt through a plain terminal emulator. Still, the README does not expose the complete tool schemas, transport defaults, authentication details, or a documented command for inspecting every active MCP endpoint, so those points cannot be inferred safely.

## Installing claude-code-ide.el with use-package

The README requires Emacs 28.1 or later, an installed Claude Code CLI available in PATH, and one of the `vterm`, `eat`, or `ghostel` packages for terminal support. It sends readers to Anthropic's Claude Code documentation for the CLI installation. After those prerequisites are in place, the documented `use-package` configuration with the `vc` binding can install directly from GitHub.

For Emacs 30 or later, add this configuration to your Emacs setup:

```elisp
(use-package claude-code-ide
  :vc (:url "https://github.com/manzaltu/claude-code-ide.el" :rev :newest)
  :bind ("C-c C-'" . claude-code-ide-menu)
  :config
  (claude-code-ide-emacs-tools-setup))
```

The `:vc` declaration points `use-package` at the repository and selects `:newest`. The binding opens `claude-code-ide-menu`, while the configuration form calls `claude-code-ide-emacs-tools-setup` to enable the built-in Emacs MCP tools. The README labels that setup call optional.

The repository also documents a `straight.el` installation. This form delegates retrieval and package management to straight.el:

```elisp
(use-package claude-code-ide
  :straight (:type git :host github :repo "manzaltu/claude-code-ide.el")
  :bind ("C-c C-'" . claude-code-ide-menu)
  :config
  (claude-code-ide-emacs-tools-setup))
```

Use this version only when `straight.el` is already part of the Emacs configuration. The README does not provide a MELPA recipe, release archive, or release-specific installation path.

## Starting and Resuming a Claude Code Project Session

For Doom Emacs users, the README separates package declaration from configuration. The package declaration goes in `packages.el`:

```elisp
(package! claude-code-ide
  :recipe (:host github :repo "manzaltu/claude-code-ide.el"))
```

The matching `config.el` entry binds the menu and enables the Emacs tools:

```elisp
(use-package! claude-code-ide
  :bind ("C-c C-'" . claude-code-ide-menu)
  :config
  (claude-code-ide-emacs-tools-setup))
```

After saving those files, the README instructs users to run `doom sync` from a terminal. That command updates the Doom-managed package setup from the declared GitHub recipe.

The first real editor interaction is intentionally simple: run `M-x claude-code-ide-menu`. The README identifies this as the easiest entry point and says it opens a transient menu with the available Claude Code commands. A new project session can be started with `M-x claude-code-ide`, while `M-x claude-code-ide-send-prompt` sends a prompt to the current interaction. The menu also provides a path to commands beyond the visible portion of the README.

The package tracks selections and active files so they can provide context. The README also documents resuming a previous conversation with the `--resume` flag. It does not state whether the flag is entered directly, selected through the menu, or passed through another documented wrapper, so the supported user-facing path should be checked in the running Emacs configuration.

## Diagnostics, ediff Review, and Terminal Compatibility

The most editor-specific features are diagnostics and change review. The package can expose Flycheck and Flymake results to Claude, including errors and warnings from open files. Suggested changes can be shown through ediff, giving the user an editor-native place to compare modifications before applying them. This review step is particularly relevant for an assistant that can access source files and editor commands.

Terminal rendering is delegated to `vterm`, `eat`, or `ghostel`, with full color support listed as the reason for using these packages. Choosing one is therefore not merely a display preference within this project. A terminal backend that does not initialize correctly can prevent the Claude Code interaction from behaving as documented, even if the CLI and MCP configuration are present.

The package also advertises tab-bar support for context switching, selection and buffer tracking, automatic project detection, and session management. Automatic detection reduces repeated project selection, but the README does not define how multiple roots, nested projects, remote files, or project switches are handled. Those cases should be checked against the package behavior before treating editor awareness as dependable in every workflow.

## Early Development, Maintenance Signals, and GPL-3.0

The repository is not archived, and its last push was on 2026-09-14. That is a recent maintenance signal, but it does not override the README's explicit statement that the package is in early development. The repository also has no GitHub releases. As a result, installation from GitHub uses the current repository state rather than a documented versioned release, and the README does not describe compatibility guarantees, semantic versioning, or a rollback procedure.

The declared license is GPL-3.0. That identifies the license under which the project is offered and points to the repository's `LICENSE` file. It does not by itself answer practical questions about distribution, modification, or compatibility with a particular deployment. Code copied from this project should be handled according to the actual license text and applicable obligations.

The separate test file and CI workflow reference indicate that automated test configuration exists, but the README does not describe test coverage or release gates. Maintenance cost for an adopter therefore includes tracking upstream changes directly from GitHub and validating changes against the local Emacs configuration. The last push date is useful for assessing repository activity, while the absence of releases remains the more direct warning against expecting stable package boundaries.

## Choosing Between claude-code-ide.el and a Basic Terminal Invocation

The clearest alternative is to invoke Claude Code CLI from an ordinary Emacs terminal without loading this integration. That approach offers fewer dependencies and avoids adding an MCP bridge between the assistant and editor state. It is the simpler choice for prompts that do not require xrefs, Tree-sitter analysis, Imenu data, diagnostics, automatic selection context, or reviewed ediff changes.

claude-code-ide.el takes a different approach. Instead of treating Emacs only as a terminal host, it exposes selected editor capabilities through MCP and ties project sessions to editor state. That adds more integration points, but it also creates a wider permission and compatibility surface. Emacs commands or functions can be exposed as tools, while the CLI, terminal package, protocol server, diagnostics integrations, and diff workflow all participate in the interaction.

The package is therefore poorly suited to users who only want a colored Claude Code terminal and do not want editor-level access. It is a more relevant choice when development work depends on the connection between a file, selection, diagnostic, project, and the assistant's requested operations. The README does not document a capability allowlist interface, a way to revoke tools at runtime, or a command for printing the complete registered tool set, so tool exposure should be reviewed during evaluation rather than assumed to be minimal.

## Conclusion

Emacs users who already depend on Claude Code CLI and want editor-aware MCP operations should evaluate claude-code-ide.el after confirming terminal compatibility and reviewing its early-development status. Users needing a packaged release, documented rollback process, or turnkey installation from a release archive should wait. Before adoption, verify that Claude Code CLI is available in PATH, the selected terminal package works with the installed Emacs version, and the exposed MCP tools match the commands you intend to permit.

## FAQ

### What are the prerequisites for claude-code-ide.el?

The package requires Emacs 28.1 or later, Claude Code CLI installed and available in PATH, and one of `vterm`, `eat`, or `ghostel` for terminal support.

### How do I install claude-code-ide.el in Doom Emacs?

Add the documented GitHub recipe to `packages.el`, configure `use-package!` in `config.el`, save both files, and run `doom sync` from the terminal.

### Does claude-code-ide.el have stable release versions?

The repository has no GitHub releases, and the README describes the package as being in early development. The documented `use-package` examples retrieve it directly from GitHub.

### What Emacs features can Claude access through claude-code-ide.el?

The README documents xref-based LSP navigation, Tree-sitter analysis, Imenu symbols, Project integration, file and editor-state tools, and the ability to expose Emacs commands or functions as MCP tools.

## Sources

- [Issues](https://github.com/manzaltu/claude-code-ide.el/issues)
- [License: GPL-3.0](https://github.com/manzaltu/claude-code-ide.el/blob/main/LICENSE)
- [manzaltu/claude-code-ide.el on GitHub](https://github.com/manzaltu/claude-code-ide.el)
- [README](https://github.com/manzaltu/claude-code-ide.el/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/manzaltu-claude-code-ide-el
