elisp-dev-mcp
#+TITLE: elisp-dev-mcp: MCP-Server für agentische Elisp-Entwicklung
[[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]]
Übersicht
=elisp-dev-mcp= ist ein Emacs-Paket, das einen MCP-Server (Machine Code Protocol) für agentische Elisp-Entwicklung bereitstellt. Es ermöglicht KI-Agenten, bei Elisp-Programmieraufgaben zu unterstützen, indem es eine strukturierte API zur Interaktion mit Emacs und zur Manipulation von Elisp-Code bietet.
Dieses Paket nutzt [[https://github.com/laurynas-biveinis/mcp-server-lib.el][mcp-server-lib.el]] für die zugrunde liegende MCP-Infrastruktur.
Installation
Über [[https://melpa.org/#/elisp-dev-mcp][MELPA]] oder [[https://stable.melpa.org/#/elisp-dev-mcp][MELPA Stable]]:
=M-x package-install RET elisp-dev-mcp RET=
Verwendung
** Registrierung bei einem MCP-Client
Nachdem =mcp-server-lib= ordnungsgemäß installiert wurde (einschließlich =M-x mcp-server-lib-install=), registrieren Sie =elisp-dev-mcp= bei Ihrem MCP-Client:
#+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
Bevor Sie den MCP-Server verwenden, müssen Sie ihn in Emacs mit =M-x mcp-server-lib-start= starten. Stoppen Sie ihn bei Bedarf mit =M-x mcp-server-lib-stop=.
** Verfügbare MCP-Handler
*** Elisp-Funktionsdokumentation
Name: =elisp-describe-function=
Beschreibung: Vollständige Dokumentation für eine Emacs Lisp-Funktion abrufen
Parameter:
=function=: Der Name der zu beschreibenden Funktion (String)
Rückgabewerte:
=description=: Die Dokumentation der Funktion (String)
oder =error=: Fehlermeldung, falls etwas schiefgelaufen ist (String)
*** Elisp-Funktionsdefinition
Name: =elisp-get-function-definition=
Beschreibung: Den Quellcode einer Emacs Lisp-Funktion abrufen
Parameter:
=function=: Der Name der abzurufenden Funktion (String)
Rückgabewerte:
Für Elisp-Funktionen:
=source=: Der Quellcode der Funktion, einschließlich Header-Kommentaren, falls vorhanden (String)
=file-path=: Pfad zur Datei, in der die Funktion definiert ist (String)
=start-line=: Zeilennummer des Beginns der Definition einschließlich Header-Kommentaren (Integer, 1-basiert)
=end-line=: Zeilennummer des Endes der Definition (Integer, 1-basiert)
Für in C implementierte Funktionen:
=is-c-function=: Boolescher Indikator, dass dies eine C-Funktion ist (immer wahr)
=function-name=: Der Name der Funktion (String)
=message=: Eine Nachricht, die angibt, dass die Funktion im C-Quellcode implementiert ist (String)
*** Elisp-Variablenbeschreibung
Name: =elisp-describe-variable=
Beschreibung: Informationen über eine Emacs Lisp-Variable abrufen, ohne ihren Wert preiszugeben
Parameter:
=variable=: Der Name der zu beschreibenden Variable (String)
Rückgabewerte:
=name=: Variablenname (String)
=bound=: Ob die Variable aktuell gebunden ist (Boolean, falsch für deklarierte, aber ungebundene Variablen)
=value-type=: Typ des Wertes (String, z. B. "cons", "string", "integer")
=documentation=: Variablendokumentation oder null, falls keine vorhanden (String oder null)
=source-file=: Pfad zur Datei, in der die Variable definiert ist (String)
=is-custom=: Ob es sich um eine anpassbare Variable handelt (Boolean)
=custom-group=: Die Custom-Gruppe, zu der diese Variable gehört (String, nur bei anpassbaren Variablen vorhanden)
=custom-type=: Die Spezifikation des Custom-Typs (String, nur bei anpassbaren Variablen vorhanden)
=is-obsolete=: Ob die Variable als veraltet markiert ist (Boolean)
=obsolete-since=: Version, seit der die Variable veraltet ist (String, nur vorhanden, wenn veraltet)
=obsolete-replacement=: Empfohlener Ersatz für die veraltete Variable (String, nur vorhanden, wenn veraltet)
=is-alias=: Ob die Variable ein Alias für eine andere Variable ist (Boolean)
=alias-target=: Die Variable, für die dies ein Alias ist (String, nur vorhanden, wenn Alias)
=is-special=: Ob die Variable eine spezielle (dynamisch gebundene) Variable ist (Boolean)
oder =error=: Fehlermeldung, falls etwas schiefgelaufen ist (String)
*** Elisp Info-Dokumentationssuche
Name: =elisp-info-lookup-symbol=
Beschreibung: Elisp-Symbole in der Info-Dokumentation nachschlagen und den vollständigen Dokumentationsknoten zurückgeben
Parameter:
=symbol=: Das nachzuschlagende Elisp-Symbol (String)
Rückgabewerte:
=found=: Ob die Dokumentation gefunden wurde (Boolean)
=symbol=: Das Symbol, das nachgeschlagen wurde (String)
=node=: Der Name des Info-Knotens, der die Dokumentation enthält (String, falls gefunden)
=manual=: Der Name des Info-Handbuchs, normalerweise 'elisp' (String, falls gefunden)
=content=: Der vollständige Inhalt des Info-Knotens einschließlich aller Beispiele, Querverweise und zugehöriger Informationen (String, falls gefunden)
=info-ref=: Info-Referenz wie '(elisp)Node Name' für den direkten Zugriff (String, falls gefunden)
=message=: Fehler- oder Nicht-gefunden-Meldung (String, falls nicht gefunden)
*** Elisp-Quellcodedatei-Leser
Name: =elisp-read-source-file=
Beschreibung: Elisp-Quellcodedateien aus Emacs-Systemverzeichnissen oder ELPA-Paketen lesen. Akzeptiert entweder Bibliotheksnamen oder absolute Dateipfade.
Parameter:
=library-or-path=: Bibliotheksname (z. B. ="subr"=, ="org"=) oder absoluter Pfad zur =.el=-Datei (String)
Rückgabewerte:
Der vollständige Dateiinhalt als String
oder =error=: Fehlermeldung, falls Bibliothek nicht gefunden, Datei nicht gefunden, ungültiges Format oder Zugriff verweigert (String)
Eingabemodi:
Bibliotheksnamen (empfohlen für integrierte und installierte Pakete):
Einfache Namen ohne Pfadtrennzeichen: ="subr"=, ="files"=, ="org"=
Aufgelöst über die Emacs-Funktion =locate-library= (durchsucht =load-path=)
Beispiele: ="subr"=, ="mcp-server-lib"=, ="org"=
Absolute Pfade (für Kompatibilität mit anderen =elisp-dev=-Werkzeugen):
Vollständige Pfade, die auf =.el= enden
Zurückgegeben von =elisp-get-function-definition=
Beispiele: ="/opt/homebrew/.../lisp/files.el"=, ="/Users/name/.emacs.d/elpa/package-1.0/package.el"=
Sicherheit:
Liest nur aus Emacs-System-Lisp-Verzeichnissen und ELPA-Verzeichnissen
Lehnt Pfade mit =..=-Traversierung ab
Löst symbolische Links auf, um ein Entkommen aus erlaubten Verzeichnissen zu verhindern
Bibliotheksnamen müssen zu Pfaden innerhalb erlaubter Verzeichnisse aufgelöst werden
Funktionen:
Verarbeitet transparent komprimierte =.el.gz=-Dateien
Funktioniert sowohl mit integrierten Emacs-Bibliotheken als auch mit installierten Paketen
Gibt den vollständigen Dateiinhalt als String zurück
** Konfiguration für alternative Paketmanager
Standardmäßig kann =elisp-read-source-file= nur auf Emacs-Systemverzeichnisse und Standard-=ELPA=-Pakete zugreifen. Für Benutzer alternativer Paketmanager wie straight.el, elpaca oder benutzerdefinierte Paket-Setups können Sie zusätzliche erlaubte Verzeichnisse konfigurieren:
#+begin_src elisp
(setq elisp-dev-mcp-additional-allowed-dirs
'("/.emacs.d/straight/build/"
"/.emacs.d/straight/repos/"
"~/my-elisp-packages/"))
#+end_src
Sicherheitshinweis: Fügen Sie nur Verzeichnisse hinzu, denen Sie vertrauen, da dies dem MCP-Server ermöglicht, alle =.el=-Dateien an diesen Orten zu lesen.
Ähnliche Pakete
Lizenz
Dieses Projekt ist unter der GNU General Public License v3.0 (GPLv3) lizenziert - siehe die Datei LICENSE für Details.
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