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= は、エージェント型のElisp開発向けにMCP(Machine Code Protocol)サーバーを提供するEmacsパッケージです。AIエージェントがEmacsと対話し、Elispコードを操作するための構造化されたAPIを提供することで、Elispのコーディングタスクを支援します。
本パッケージは、基盤となるMCPインフラストラクチャとして [[https://github.com/laurynas-biveinis/mcp-server-lib.el][mcp-server-lib.el]] を活用しています。
インストール
[[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= を含む)、MCPクライアントに =elisp-dev-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=: 直接アクセスするための '(elisp)Node Name' のようなInfo参照(見つかった場合、文字列)
=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 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