这是一个简单的 MCP(模型上下文协议)服务器,允许语言模型通过 emacsclient --eval 命令与 Emacs 进行交互,并查看当前 Emacs 的状态。
该服务器提供了三个工具:
emacs_eval: 评估一个 Emacs Lisp 表达式并返回结果emacs_get_visible_text: 获取当前在 Emacs 窗口中可见的文本emacs_get_context: 获取关于当前 Emacs 状态的上下文信息(缓冲区、模式、光标位置等)M-x server-start)如果你使用 npx,则无需安装。只需确保你已经安装了 Node.js 和 npm。
要将此 MCP 服务器与桌面版 Claude 结合使用:
确保 Emacs 已启动且服务器已运行(在 Emacs 中执行 M-x server-start)
将服务器添加到你的桌面版 Claude 配置中:
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json%AppData%\Claude\claude_desktop_config.json示例配置:
{
"mcpServers": {
"emacs-mcp": {
"command": "npx",
"args": [
"-y", "@keegancsmith/emacs-mcp-server"
]
}
}
}
该服务器使用 emacsclient --eval 向正在运行的 Emacs 实例发送 Lisp 表达式。所有操作都在当前选中窗口的可见缓冲区内进行。这使得语言模型能够:
一旦服务器设置完成,你可以在 Claude 中使用它来与 Emacs 进行交互:
你能给我展示一下我的 Emacs 缓冲区列表吗?
Claude 将使用 emacs_eval 工具和类似 (buffer-list) 的表达式来检索并显示你的缓冲区。
我当前的 Emacs 窗口里显示的是什么内容?
Claude 可以使用 emacs_get_visible_text 来查看当前显示的文本内容。
我在 Emacs 中当前编辑的是哪个文件?
Claude 将使用 emacs_get_context 提供关于当前缓冲区的信息。
此服务器允许执行任意的 Emacs Lisp 代码,这些代码具有对你的 Emacs 环境乃至潜在系统环境的完全访问权限。请仅与受信任的语言模型提供商合作,并谨慎对待可能被执行的表达式。
MIT </中文翻译>