Function: eca-mcp--render-server-details
eca-mcp--render-server-details is a natively compiled function defined
in eca-mcp.el.
Signature
(eca-mcp--render-server-details SESSION BUFFER)
Documentation
Render MCP server details for SESSION into BUFFER.
Works with both standalone and settings panel buffers.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-mcp.el
(defun eca-mcp--render-server-details (session buffer)
"Render MCP server details for SESSION into BUFFER.
Works with both standalone and settings panel buffers."
(when (buffer-live-p buffer)
(with-current-buffer buffer
(let ((inhibit-read-only t)
(keymap (or (current-local-map)
eca-settings-mode-map))
(saved-pos (point)))
(erase-buffer)
(insert "\n")
(insert (propertize "All MCP servers configured in ECA" 'font-lock-face 'eca-settings-heading))
(insert "\n\n")
(if eca-mcp--add-form-state
(eca-mcp--render-add-form session keymap)
(insert (eca-buttonize
keymap
(propertize "[+ Add MCP server]"
'font-lock-face 'eca-mcp-details-button-face)
(lambda () (eca-mcp--open-add-form session)))
"\n\n"))
(seq-doseq (server (-sort (lambda (a b)
(string-lessp (plist-get a :name)
(plist-get b :name)))
(eca-vals (eca--session-tool-servers session))))
(-let (((&plist :name name :command command :args args
:status status :tools tools) server))
(insert (propertize (eca-mcp--status-emoji status)
'eca-mcp-status status
'face (eca-mcp--status-face status)
'help-echo status))
(insert " ")
(insert (propertize name 'font-lock-face 'bold))
(insert " ")
(cond
((and eca-mcp--confirming-remove
(string= name eca-mcp--confirming-remove))
(insert (propertize "Remove? " 'font-lock-face 'warning))
(insert (eca-buttonize
keymap
(propertize "[Yes]"
'font-lock-face 'eca-mcp-details-button-stop-face)
(lambda () (eca-mcp--submit-remove-server session name))))
(insert " ")
(insert (eca-buttonize
keymap
(propertize "[Cancel]"
'font-lock-face 'eca-mcp-details-button-face)
(lambda () (eca-mcp--cancel-confirm-remove session)))))
(t
(pcase status
("requires-auth"
(insert (eca-buttonize
keymap
(propertize "connect"
'font-lock-face 'eca-mcp-details-button-face)
(lambda ()
(eca-mcp--notify-server-action
session server 'connect)))))
((or "running" "starting")
(insert (eca-buttonize
keymap
(propertize "stop"
'font-lock-face 'eca-mcp-details-button-stop-face)
(lambda ()
(eca-mcp--notify-server-action
session server 'stop))))
(if (plist-get server :disabled)
(insert " "
(eca-buttonize
keymap
(propertize "enable"
'font-lock-face 'eca-mcp-details-button-enable-face)
(lambda () (eca-api-notify session
:method "mcp/enableServer"
:params (list :name name)))))
(insert " "
(eca-buttonize
keymap
(propertize "disable"
'font-lock-face 'eca-mcp-details-button-disable-face)
(lambda () (eca-api-notify session
:method "mcp/disableServer"
:params (list :name name))))))
(when (plist-get server :hasAuth)
(insert " "
(eca-buttonize
keymap
(propertize "logout"
'font-lock-face 'eca-mcp-details-button-logout-face)
(lambda () (eca-api-notify session
:method "mcp/logoutServer"
:params (list :name name)))))))
("disabled"
(insert (eca-buttonize
keymap
(propertize "start"
'font-lock-face 'eca-mcp-details-button-face)
(lambda ()
(eca-mcp--notify-server-action
session server 'start))))
(insert " "
(eca-buttonize
keymap
(propertize "enable"
'font-lock-face 'eca-mcp-details-button-enable-face)
(lambda () (eca-api-notify session
:method "mcp/enableServer"
:params (list :name name))))))
(_
(insert (eca-buttonize
keymap
(propertize "start"
'font-lock-face 'eca-mcp-details-button-face)
(lambda ()
(eca-mcp--notify-server-action
session server 'start))))
(when (plist-get server :disabled)
(insert " "
(eca-buttonize
keymap
(propertize "enable"
'font-lock-face 'eca-mcp-details-button-enable-face)
(lambda () (eca-api-notify session
:method "mcp/enableServer"
:params (list :name name))))))))
(unless (string= name "ECA")
(insert " "
(eca-buttonize
keymap
(propertize "remove"
'font-lock-face 'eca-mcp-details-button-stop-face)
(lambda () (eca-mcp--request-confirm-remove session name)))))))
(insert "\n")
(if (seq-empty-p tools)
(insert (propertize "No tools available" 'font-lock-face font-lock-doc-face))
(progn
(insert (propertize "Tools: " 'font-lock-face font-lock-doc-face))
(seq-doseq (tool tools)
(insert (propertize (plist-get tool :name)
'eca-mcp-tool tool
'font-lock-face (if (plist-get tool :disabled)
'eca-mcp-details-tool-disabled-face
'eca-mcp-details-tool-face)) " "))))
(when-let* ((prompts (plist-get server :prompts))
(_ (not (seq-empty-p prompts))))
(insert "\n")
(insert (propertize "Prompts: " 'font-lock-face font-lock-doc-face))
(seq-doseq (prompt prompts)
(insert (propertize (plist-get prompt :name)
'font-lock-face 'eca-mcp-details-tool-face) " ")))
(when-let* ((resources (plist-get server :resources))
(_ (not (seq-empty-p resources))))
(insert "\n")
(insert (propertize "Resources: " 'font-lock-face font-lock-doc-face))
(seq-doseq (resource resources)
(insert (propertize (plist-get resource :name)
'font-lock-face 'eca-mcp-details-tool-face) " ")))
(when command
(insert "\n")
(insert (propertize "Command: " 'font-lock-face font-lock-doc-face))
(insert (propertize (concat command " " (string-join args " "))
'font-lock-face 'eca-mcp-details-command-value-face)))
(when-let* ((url (plist-get server :url)))
(insert "\n")
(insert (propertize "URL: " 'font-lock-face font-lock-doc-face))
(insert (propertize url
'font-lock-face 'eca-mcp-details-command-value-face)))
(when (string= "failed" status)
(insert "\n")
(insert (propertize (format "Failed to start, check %s for details"
(buttonize
"eca stderr buffer"
(lambda(_) (eca-process-show-stderr session))))
'font-lock-face 'error))))
(insert "\n\n"))
(goto-char (min saved-pos (point-max)))))))