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)으로 표시되었는지 여부 (불리언)
=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 일반 공중 사용 허가서 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