elisp-dev-mcp
#+TITLE: elisp-dev-mcp: Servidor MCP para el desarrollo agente de 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]]
Descripción general
=elisp-dev-mcp= es un paquete de Emacs que proporciona un servidor MCP (Machine Code Protocol) para el desarrollo agente de Elisp. Permite a los agentes de IA ayudar con tareas de programación en Elisp proporcionando una API estructurada para interactuar con Emacs y manipular código Elisp.
Este paquete aprovecha [[https://github.com/laurynas-biveinis/mcp-server-lib.el][mcp-server-lib.el]] para la infraestructura MCP subyacente.
Instalación
Desde [[https://melpa.org/#/elisp-dev-mcp][MELPA]] o [[https://stable.melpa.org/#/elisp-dev-mcp][MELPA Stable]]:
=M-x package-install RET elisp-dev-mcp RET=
Uso
** Registro con un cliente MCP
Después de que =mcp-server-lib= se haya instalado correctamente (incluyendo =M-x mcp-server-lib-install=), registre =elisp-dev-mcp= con su cliente 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
Antes de usar el servidor MCP, debe iniciarlo en Emacs con =M-x mcp-server-lib-start=. Deténgalo con =M-x mcp-server-lib-stop= cuando haya terminado.
** Controladores MCP disponibles
*** Documentación de funciones de Elisp
Nombre: =elisp-describe-function=
Descripción: Obtener la documentación completa de una función de Emacs Lisp
Parámetros:
=function=: El nombre de la función a describir (cadena)
Retorna:
=description=: La documentación de la función (cadena)
o =error=: Mensaje de error si algo salió mal (cadena)
*** Definición de funciones de Elisp
Nombre: =elisp-get-function-definition=
Descripción: Obtener la definición del código fuente de una función de Emacs Lisp
Parámetros:
=function=: El nombre de la función a recuperar (cadena)
Retorna:
Para funciones de Elisp:
=source=: El código fuente de la función, incluyendo comentarios de cabecera si están presentes (cadena)
=file-path=: Ruta al archivo donde está definida la función (cadena)
=start-line=: Número de la primera línea de la definición, incluyendo comentarios de cabecera (entero basado en 1)
=end-line=: Número de la última línea de la definición (entero basado en 1)
Para funciones implementadas en C:
=is-c-function=: Indicador booleano de que esta es una función en C (siempre verdadero)
=function-name=: El nombre de la función (cadena)
=message=: Un mensaje indicando que la función está implementada en código fuente C (cadena)
*** Descripción de variables de Elisp
Nombre: =elisp-describe-variable=
Descripción: Obtener información sobre una variable de Emacs Lisp sin exponer su valor
Parámetros:
=variable=: El nombre de la variable a describir (cadena)
Retorna:
=name=: Nombre de la variable (cadena)
=bound=: Si la variable está vinculada actualmente (booleano, falso para variables declaradas pero no vinculadas)
=value-type=: Tipo del valor (cadena, p. ej., "cons", "string", "integer")
=documentation=: Documentación de la variable o nulo si no hay ninguna (cadena o nulo)
=source-file=: Ruta al archivo donde está definida la variable (cadena)
=is-custom=: Si es una variable personalizable (booleano)
=custom-group=: El grupo personalizado al que pertenece esta variable (cadena, solo presente para variables personalizadas)
=custom-type=: La especificación del tipo personalizado (cadena, solo presente para variables personalizadas)
=is-obsolete=: Si la variable está marcada como obsoleta (booleano)
=obsolete-since=: Versión en la que la variable quedó obsoleta (cadena, solo presente si es obsoleta)
=obsolete-replacement=: Reemplazo sugerido para la variable obsoleta (cadena, solo presente si es obsoleta)
=is-alias=: Si la variable es un alias de otra variable (booleano)
=alias-target=: La variable de la cual es alias (cadena, solo presente si es alias)
=is-special=: Si la variable es una variable especial (de ámbito dinámico) (booleano)
o =error=: Mensaje de error si algo salió mal (cadena)
*** Búsqueda de documentación en Info de Elisp
Nombre: =elisp-info-lookup-symbol=
Descripción: Buscar símbolos de Elisp en la documentación Info y devolver el nodo de documentación completo
Parámetros:
=symbol=: El símbolo de Elisp a buscar (cadena)
Retorna:
=found=: Si se encontró la documentación (booleano)
=symbol=: El símbolo que se buscó (cadena)
=node=: El nombre del nodo Info que contiene la documentación (cadena, cuando se encuentra)
=manual=: El nombre del manual Info, típicamente 'elisp' (cadena, cuando se encuentra)
=content=: El contenido completo del nodo Info, incluyendo todos los ejemplos, referencias cruzadas e información relacionada (cadena, cuando se encuentra)
=info-ref=: Referencia Info como '(elisp)Node Name' para acceso directo (cadena, cuando se encuentra)
=message=: Mensaje de error o de no encontrado (cadena, cuando no se encuentra)
*** Lector de archivos fuente de Elisp
Nombre: =elisp-read-source-file=
Descripción: Leer archivos fuente de Elisp desde directorios del sistema de Emacs o paquetes ELPA. Acepta nombres de bibliotecas o rutas de archivo absolutas.
Parámetros:
=library-or-path=: Nombre de la biblioteca (p. ej., ="subr"=, ="org"=) o ruta absoluta al archivo =.el= (cadena)
Retorna:
El contenido completo del archivo como una cadena
o =error=: Mensaje de error si no se encuentra la biblioteca, el archivo, formato inválido o acceso denegado (cadena)
Modos de entrada:
Nombres de bibliotecas (recomendado para paquetes integrados e instalados):
Nombres simples sin separadores de ruta: ="subr"=, ="files"=, ="org"=
Resueltos mediante la función =locate-library= de Emacs (busca en =load-path=)
Ejemplos: ="subr"=, ="mcp-server-lib"=, ="org"=
Rutas absolutas (para compatibilidad con otras herramientas =elisp-dev=):
Rutas completas que terminan en =.el=
Devueltas por =elisp-get-function-definition=
Ejemplos: ="/opt/homebrew/.../lisp/files.el"=, ="/Users/name/.emacs.d/elpa/package-1.0/package.el"=
Seguridad:
Solo lee desde directorios lisp del sistema de Emacs y directorios ELPA
Rechaza rutas con recorrido =..=
Resuelve enlaces simbólicos para evitar escapar de los directorios permitidos
Los nombres de las bibliotecas deben resolverse en rutas dentro de los directorios permitidos
Características:
Maneja de forma transparente archivos comprimidos =.el.gz=
Funciona tanto con bibliotecas integradas de Emacs como con paquetes instalados
Devuelve el contenido completo del archivo como cadena
** Configuración para gestores de paquetes alternativos
Por defecto, =elisp-read-source-file= solo puede acceder a directorios del sistema de Emacs y paquetes =ELPA= estándar. Para usuarios de gestores de paquetes alternativos como straight.el, elpaca o configuraciones de paquetes personalizadas, puede configurar directorios permitidos adicionales:
#+begin_src elisp
(setq elisp-dev-mcp-additional-allowed-dirs
'("/.emacs.d/straight/build/"
"/.emacs.d/straight/repos/"
"~/my-elisp-packages/"))
#+end_src
Nota de seguridad: Solo añada directorios en los que confíe, ya que esto permite al servidor MCP leer cualquier archivo =.el= en estas ubicaciones.
Paquetes similares
Licencia
Este proyecto está bajo la Licencia Pública General de GNU v3.0 (GPLv3) - consulte el archivo LICENSE para obtener más detalles.
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