elisp-dev-mcp
#+TITLE: elisp-dev-mcp:用于智能体 Elisp 开发的 MCP 服务器
[[https://github.com/laurynas-biveinis/elisp-dev-mcp/actions/workflows/elisp-test.yml][https://github.com/laurynas-biveinis/elisp-dev-mcp/actions/workflows/elisp-test.yml/badge.svg]] [[https://github.com/laurynas-biveinis/elisp-dev-mcp/actions/workflows/super-linter.yml][https://github.com/laurynas-biveinis/elisp-dev-mcp/actions/workflows/super-linter.yml/badge.svg]] [[https://melpa.org/#/elisp-dev-mcp][https://melpa.org/packages/elisp-dev-mcp-badge.svg]] [[https://stable.melpa.org/#/elisp-dev-mcp][file:https://stable.melpa.org/packages/elisp-dev-mcp-badge.svg]]
概述
=elisp-dev-mcp= 是一个 Emacs 软件包,为智能体 Elisp 开发提供 MCP(机器代码协议)服务器。它通过提供结构化的 API 来与 Emacs 交互并操作 Elisp 代码,从而使 AI 智能体能够辅助 Elisp 编码任务。
该软件包利用 [[https://github.com/laurynas-biveinis/mcp-server-lib.el][mcp-server-lib.el]] 作为底层的 MCP 基础设施。
安装
从 [[https://melpa.org/#/elisp-dev-mcp][MELPA]] 或 [[https://stable.melpa.org/#/elisp-dev-mcp][MELPA Stable]] 安装:
=M-x package-install RET elisp-dev-mcp RET=
使用方法
** 向 MCP 客户端注册
在正确安装 =mcp-server-lib=(包括执行 =M-x mcp-server-lib-install=)后,将 =elisp-dev-mcp= 注册到您的 MCP 客户端:
#+begin_example claude mcp add -s user -t stdio elisp-dev -- ~/.emacs.d/emacs-mcp-stdio.sh --init-function=elisp-dev-mcp-enable --stop-function=elisp-dev-mcp-disable --server-id=elisp-dev-mcp #+end_example
在使用 MCP 服务器之前,必须在 Emacs 中通过 =M-x mcp-server-lib-start= 启动它。完成后使用 =M-x mcp-server-lib-stop= 停止。
** 可用的 MCP 处理程序
*** Elisp 函数文档
名称: =elisp-describe-function=
描述: 获取 Emacs Lisp 函数的完整文档
参数:
=function=: 要描述的函数名称(字符串)
返回:
=description=: 函数的文档(字符串)
或 =error=: 如果出错则返回错误消息(字符串)
*** Elisp 函数定义
名称: =elisp-get-function-definition=
描述: 获取 Emacs Lisp 函数的源代码定义
参数:
=function=: 要检索的函数名称(字符串)
返回:
对于 Elisp 函数:
=source=: 函数的源代码,包括标题注释(如果存在)(字符串)
=file-path=: 定义该函数的文件路径(字符串)
=start-line=: 定义的起始行号,包括标题注释(基于 1 的整数)
=end-line=: 定义的结束行号(基于 1 的整数)
对于 C 实现的函数:
=is-c-function=: 布尔指示符,表示这是一个 C 函数(始终为 true)
=function-name=: 函数名称(字符串)
=message=: 指示该函数在 C 源代码中实现的说明消息(字符串)
*** Elisp 变量描述
名称: =elisp-describe-variable=
描述: 获取有关 Emacs Lisp 变量的信息,而不暴露其值
参数:
=variable=: 要描述的变量名称(字符串)
返回:
=name=: 变量名称(字符串)
=bound=: 变量当前是否已绑定(布尔值,对于已声明但未绑定的变量为 false)
=value-type=: 值类型(字符串,例如 "cons", "string", "integer")
=documentation=: 变量文档,如果没有则为 null(字符串或 null)
=source-file=: 定义该变量的文件路径(字符串)
=is-custom=: 是否为可自定义变量(布尔值)
=custom-group=: 该变量所属的自定义组(字符串,仅在自定义变量中存在)
=custom-type=: 自定义类型规范(字符串,仅在自定义变量中存在)
=is-obsolete=: 变量是否被标记为过时(布尔值)
=obsolete-since=: 变量过时的版本(字符串,仅在过时时存在)
=obsolete-replacement=: 过时变量的建议替代方案(字符串,仅在过时时存在)
=is-alias=: 变量是否为另一个变量的别名(布尔值)
=alias-target=: 该变量所指向的别名目标(字符串,仅在别名时存在)
=is-special=: 变量是否为特殊(动态作用域)变量(布尔值)
或 =error=: 如果出错则返回错误消息(字符串)
*** Elisp Info 文档查找
名称: =elisp-info-lookup-symbol=
描述: 在 Info 文档中查找 Elisp 符号并返回完整的文档节点
参数:
=symbol=: 要查找的 Elisp 符号(字符串)
返回:
=found=: 是否找到文档(布尔值)
=symbol=: 查找的符号(字符串)
=node=: 包含文档的 Info 节点名称(字符串,找到时返回)
=manual=: Info 手册名称,通常为 'elisp'(字符串,找到时返回)
=content=: 完整的 Info 节点内容,包括所有示例、交叉引用和相关信息(字符串,找到时返回)
=info-ref=: Info 引用,如 '(elisp)Node Name',用于直接访问(字符串,找到时返回)
=message=: 错误或未找到消息(字符串,未找到时返回)
*** Elisp 源代码阅读器
名称: =elisp-read-source-file=
描述: 从 Emacs 系统目录或 ELPA 软件包中读取 Elisp 源代码文件。接受库名称或绝对文件路径。
参数:
=library-or-path=: 库名称(例如 ="subr"=, ="org"=)或 =.el= 文件的绝对路径(字符串)
返回:
完整的文本内容(字符串)
或 =error=: 如果未找到库、未找到文件、格式无效或拒绝访问,则返回错误消息(字符串)
输入模式:
库名称(推荐用于内置和已安装的软件包):
不带路径分隔符的简单名称:="subr"=, ="files"=, ="org"=
通过 Emacs =locate-library= 函数解析(搜索 =load-path=)
示例:="subr"=, ="mcp-server-lib"=, ="org"=
绝对路径(为了与其他 =elisp-dev= 工具兼容):
以 =.el= 结尾的完整路径
由 =elisp-get-function-definition= 返回
示例:="/opt/homebrew/.../lisp/files.el"=, ="/Users/name/.emacs.d/elpa/package-1.0/package.el"=
安全性:
仅从 Emacs 系统 lisp 目录和 ELPA 目录读取
拒绝包含 =..= 遍历的路径
解析符号链接以防止逃逸出允许的目录
库名称必须解析为允许目录内的路径
特性:
透明处理 =.el.gz= 压缩文件
适用于内置 Emacs 库和已安装的软件包
以字符串形式返回完整文件内容
** 其他软件包管理器的配置
默认情况下,=elisp-read-source-file= 只能访问 Emacs 系统目录和标准 =ELPA= 软件包。对于使用 straight.el、elpaca 或自定义软件包设置等其他软件包管理器的用户,您可以配置额外的允许目录:
#+begin_src elisp
(setq elisp-dev-mcp-additional-allowed-dirs
'("/.emacs.d/straight/build/"
"/.emacs.d/straight/repos/"
"~/my-elisp-packages/"))
#+end_src
安全提示: 仅添加您信任的目录,因为这允许 MCP 服务器读取这些位置中的任何 =.el= 文件。
类似软件包
许可证
本项目采用 GNU 通用公共许可证 v3.0 (GPLv3) - 有关详细信息,请参阅 LICENSE 文件。
This server cannot be deployed
Maintenance
Related MCP Connectors
Ask a codebase what calls what: search, blast radius, paths between symbols, and diffs.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
MCP server for hex.pm and hexdocs.pm: search, inspect, compare, and audit Elixir packages
AI-powered codebase analysis — call graphs, security, dead code, complexity. 150+ tools.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceRead, inspect and navigate codebase symbols by connecting to a Language Server57 npm3MIT
- FlicenseBqualityDmaintenanceProvides LLMs with live introspective access to a running Emacs instance to evaluate Elisp and inspect the internal environment. It enables tools for reading documentation, browsing Info manuals, querying completions, and accessing source code for functions and variables.18-
- AlicenseNot gradedqualityCmaintenanceMulti-language code-graph MCP server with 18 tools for structural code queries — find_symbol, callers, callees, blast_radius, dead_code, and cross-stack dataflow_trace from HTTP request through service layers to SQL. Tree-sitter parsing for Python, TypeScript, JavaScript, and Go; local-first, no API key required.17MIT
- AlicenseNot gradedqualityDmaintenanceEnables code analysis of JavaScript, TypeScript, TSX, Python, and Rust files using Tree-sitter, providing symbol listing, definition/reference lookup, AST queries, LSP-style features, and SQLite indexing for efficient cross-file searches.8 npmMIT