Skip to content

Commit eec9cb5

Browse files
committed
Address MCP review feedback
1 parent bf400de commit eec9cb5

4 files changed

Lines changed: 50 additions & 10 deletions

File tree

ai-code-mcp-debug-tools.el

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,12 @@
161161
((eq value :json-false) nil)
162162
(t (not (null value)))))
163163

164+
(defun ai-code-mcp-debug-tools--selected-window ()
165+
"Return the selected window, falling back to the frame root window."
166+
(or (and (window-live-p (selected-window))
167+
(selected-window))
168+
(frame-root-window)))
169+
164170
(defun ai-code-mcp-debug-tools--resolve-eval-buffer (&optional buffer-name file-path)
165171
"Return the requested live buffer from BUFFER-NAME or FILE-PATH."
166172
(when (and buffer-name file-path)
@@ -172,7 +178,7 @@
172178
(file-path
173179
(find-file-noselect (expand-file-name file-path) t))
174180
(t
175-
(current-buffer))))
181+
(window-buffer (ai-code-mcp-debug-tools--selected-window)))))
176182

177183
(defun ai-code-mcp-debug-tools--point-line-column (buffer point)
178184
"Return line and column for POINT in BUFFER."

ai-code-mcp-server.el

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,13 @@ Use `auto' to prefer Flycheck and then Flymake when available."
178178
:optional t))))
179179
"Built-in MCP tool specifications.
180180
181-
The default tool list includes:
182-
- `project_info'
183-
- `editor_state'
184-
- `visible_buffers'
185-
- `buffer_query'
186-
- `get_diagnostics'
187-
- `get_project_files'
181+
The default tool list includes:
182+
- `project_info'
183+
- `editor_state'
184+
- `visible_buffers'
185+
- `buffer_query'
186+
- `get_diagnostics'
187+
- `get_project_files'
188188
- `get_project_buffers'
189189
- `notify_user'
190190
- `imenu_list_symbols'

docs/emacs-mcp-use-cases.org

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ These are useful for code understanding, navigation, and diagnostics.
6161

6262
** Live editor MCP tools
6363

64-
The built-in editor-session tools extend the MCP layer with
65-
live-editor awareness:
64+
The built-in editor-session tools expose live editor awareness:
6665

6766
- =editor_state=
6867
- =visible_buffers=
68+
69+
Related debug tools:
70+
6971
- =get_recent_messages=
7072
- =eval_elisp= when explicitly enabled
7173

test/test_ai-code-mcp-debug-tools.el

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,38 @@
146146
(when (buffer-live-p buffer)
147147
(kill-buffer buffer)))))
148148

149+
(ert-deftest ai-code-test-mcp-eval-elisp-defaults-to-selected-window-buffer ()
150+
"Eval should use the selected window buffer when no buffer context is given."
151+
(let ((ai-code-mcp-server-tools nil)
152+
(ai-code-mcp-debug-tools-enabled t)
153+
(ai-code-mcp-debug-tools-enable-eval-elisp t)
154+
(ai-code-mcp--sessions (make-hash-table :test 'equal))
155+
(session-id "mcp-eval-session")
156+
(session-buffer (generate-new-buffer " *ai-code-mcp-session*"))
157+
(target-buffer (generate-new-buffer " *ai-code-mcp-target*")))
158+
(unwind-protect
159+
(save-window-excursion
160+
(switch-to-buffer target-buffer)
161+
(with-current-buffer session-buffer
162+
(rename-buffer "mcp-session-buffer" t))
163+
(with-current-buffer target-buffer
164+
(rename-buffer "mcp-target-buffer" t))
165+
(ai-code-mcp-register-session session-id default-directory session-buffer)
166+
(let* ((ai-code-mcp--current-session-id session-id)
167+
(payload
168+
(ai-code-test-mcp-debug-tools--read-json-payload
169+
(ai-code-mcp-dispatch
170+
"tools/call"
171+
'((name . "eval_elisp")
172+
(arguments . ((code . "(buffer-name)"))))))))
173+
(should (equal t (alist-get 'ok payload)))
174+
(should (equal "\"mcp-target-buffer\""
175+
(alist-get 'value_repr payload)))))
176+
(when (buffer-live-p session-buffer)
177+
(kill-buffer session-buffer))
178+
(when (buffer-live-p target-buffer)
179+
(kill-buffer target-buffer)))))
180+
149181
(ert-deftest ai-code-test-mcp-eval-elisp-query-rejects-denied-symbols ()
150182
"Query evaluation should reject denied symbols before running them."
151183
(let ((ai-code-mcp-server-tools nil)

0 commit comments

Comments
 (0)