Emacs交互服务器

一个通过MCP协议实现语言模型与Emacs交互的服务,支持执行Lisp表达式、获取窗口文本和上下文信息。

  • by keegancsmith
  • JavaScript
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 keegancsmith/emacs-mcp-server

使用说明

Emacs MCP服务器

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

特性

服务器提供三个工具:

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

需求

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

安装

如果使用npx,则不需要安装。请确保您已安装Node.js和npm。

使用Claude for Desktop

要将此MCP服务器与Claude for Desktop一起使用,请执行以下操作:

  1. 确保Emacs在服务器启动的情况下运行(M-x server-start)

  2. 将服务器添加到您的Claude进行桌面配置:

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

配置示例:

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

运作原理

服务器使用 emacsclient --eval 将Lisp表达式发送到正在运行的Emacs实例。所有操作都在所选窗口中当前可见缓冲区的上下文中执行。这允许语言模型:

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

示例用法

设置好服务器后,您可以在Claude中使用它与Emacs交互:

Can you show me the list of buffers in my Emacs?

克劳德将使用 emacs_eval 具有类似表达式的工具 (buffer-list) 检索和显示缓冲区。

What's currently visible in my Emacs window?

克劳德可以使用 emacs_get_visible_text 查看当前显示的文本内容。

What file am I currently editing in Emacs?

克劳德将使用 emacs_get_context 以提供关于当前缓冲器的信息。

安全考虑

此服务器允许执行任意Emacs Lisp代码,这些代码可以完全访问您的Emacs环境,甚至可能访问您的系统。与受信任的LLM提供者一起使用,并对可能执行的表达式保持谨慎。

许可证

麻省理工学院