返回市场
emacs-mcp服务器

emacs-mcp服务器

作者:keegancsmith10 星标更新:2025-04-23

项目介绍

Emacs MCP 服务器

这是一个简单的 MCP(模型上下文协议)服务器,允许语言模型通过 emacsclient --eval 命令与 Emacs 进行交互,并查看当前 Emacs 的状态。

功能

该服务器提供了三个工具:

  • emacs_eval: 评估一个 Emacs Lisp 表达式并返回结果
  • emacs_get_visible_text: 获取当前在 Emacs 窗口中可见的文本
  • emacs_get_context: 获取关于当前 Emacs 状态的上下文信息(缓冲区、模式、光标位置等)

要求

  • Node.js
  • 运行中的 Emacs 服务器(在 Emacs 中执行 M-x server-start

安装

如果你使用 npx,则无需安装。只需确保你已经安装了 Node.js 和 npm。

使用方法(与桌面版 Claude 配合)

要将此 MCP 服务器与桌面版 Claude 结合使用:

  1. 确保 Emacs 已启动且服务器已运行(在 Emacs 中执行 M-x server-start

  2. 将服务器添加到你的桌面版 Claude 配置中:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
    • Windows: %AppData%\Claude\claude_desktop_config.json

示例配置:

{
  "mcpServers": {
    "emacs-mcp": {
      "command": "npx",
      "args": [
        "-y", "@keegancsmith/emacs-mcp-server"
      ]
    }
  }
}
  1. 重启桌面版 Claude

工作原理

该服务器使用 emacsclient --eval 向正在运行的 Emacs 实例发送 Lisp 表达式。所有操作都在当前选中窗口的可见缓冲区内进行。这使得语言模型能够:

  • 查询 Emacs 中的信息(缓冲区、模式、变量等)
  • 在 Emacs 中执行命令
  • 操作文本和缓冲区
  • 访问 Emacs 功能
  • 查看当前在 Emacs 中显示的内容
  • 获取光标位置和其他缓冲区上下文

示例用法

一旦服务器设置完成,你可以在 Claude 中使用它来与 Emacs 进行交互:

你能给我展示一下我的 Emacs 缓冲区列表吗?

Claude 将使用 emacs_eval 工具和类似 (buffer-list) 的表达式来检索并显示你的缓冲区。

我当前的 Emacs 窗口里显示的是什么内容?

Claude 可以使用 emacs_get_visible_text 来查看当前显示的文本内容。

我在 Emacs 中当前编辑的是哪个文件?

Claude 将使用 emacs_get_context 提供关于当前缓冲区的信息。

安全注意事项

此服务器允许执行任意的 Emacs Lisp 代码,这些代码具有对你的 Emacs 环境乃至潜在系统环境的完全访问权限。请仅与受信任的语言模型提供商合作,并谨慎对待可能被执行的表达式。

许可证

MIT </中文翻译>