elisp-dev-mcp
#+TITLE: elisp-dev-mcp: MCP-сервер для агентской разработки на Elisp
[[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, предоставляющий MCP-сервер (Machine Code Protocol) для агентской разработки на Elisp. Он позволяет ИИ-агентам помогать в написании кода на Elisp, предоставляя структурированный API для взаимодействия с Emacs и манипулирования кодом на 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=
Описание: Поиск символов Elisp в документации Info и возврат полного узла документации
Параметры:
=symbol=: Символ Elisp для поиска (строка)
Возвращает:
=found=: Была ли найдена документация (логическое значение)
=symbol=: Символ, который искали (строка)
=node=: Имя узла Info, содержащего документацию (строка, если найдено)
=manual=: Имя руководства Info, обычно 'elisp' (строка, если найдено)
=content=: Полное содержимое узла Info, включая все примеры, перекрестные ссылки и связанную информацию (строка, если найдено)
=info-ref=: Ссылка Info, например '(elisp)Node Name' для прямого доступа (строка, если найдено)
=message=: Сообщение об ошибке или отсутствии (строка, если не найдено)
*** Читатель исходных файлов Elisp
Имя: =elisp-read-source-file=
Описание: Чтение исходных файлов Elisp из системных каталогов Emacs или пакетов ELPA. Принимает либо имена библиотек, либо абсолютные пути к файлам.
Параметры:
=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"=
Безопасность:
Читает только из системных каталогов lisp Emacs и каталогов 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 General Public License 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