quickstart_zh - lizqwerscott/mcp.el GitHub Wiki

Quickstart

配置

首先需要配置好 gptel 有可以使用工具调用的 ai 模型, 比如 claude 之类的。 然后配置想要使用的 mcp server, 我拿 fetch 3 这个 mcp server 来举例,这个 mcp server 可以获取网页内容,并且转化为 markdown。

根据 官方文档 配置想要启动的服务器。 这个配置和官方的一样,第一个参数是 mcp server 的名字,第二个参数是 command, 最后一个参数是 args

(require 'mcp-hub)
(setq mcp-hub-servers
      '(("fetch" . (:command "uvx" :args ("mcp-server-fetch")))))

启动 mcp 服务器

然后使用命令 mcp-hub 启动服务器管理界面,或者也可以用 mcp-hub-start-all-server 来启动所有的配置好的 mcp 服务器。

注册工具

目前想要与 gptel 结合,可以用以下几个函数。 这个函数是让 mcp 生成符合 gptel 工具格式的列表,并且注册到 gptel 里面,这样 gptel 就知道可以调用那些 工具。

(defun gptel-mcp-register-tool ()
  (interactive)
  (let ((tools (mcp-hub-get-all-tool :asyncp t :categoryp t)))
    (mapcar #'(lambda (tool)
                (apply #'gptel-make-tool
                       tool))
            tools)))

运行完这个函数,就可以在 gptel 的工具使用菜单中看到注册好的 mcp 工具。

激活工具

目前有两种方式。 第一种:使用 gptel 自带的 gptel-menu 里面的菜单激活工具。 第二种:使用以下函数激活所有所有 mcp 工具和 关闭所有 mcp 工具。

;; 激活所有 mcp 工具
(defun gptel-mcp-use-tool ()
  (interactive)
  (let ((tools (mcp-hub-get-all-tool :asyncp t :categoryp t)))
    (mapcar #'(lambda (tool)
                (let ((path (list (plist-get tool :category)
                                  (plist-get tool :name))))
                  (push (gptel-get-tool path)
                        gptel-tools)))
            tools)))

;; 关闭所有 mcp 工具
(defun gptel-mcp-close-use-tool ()
  (interactive)
  (let ((tools (mcp-hub-get-all-tool :asyncp t :categoryp t)))
    (mapcar #'(lambda (tool)
                (let ((path (list (plist-get tool :category)
                                  (plist-get tool :name))))
                  (setq gptel-tools
                        (cl-remove-if #'(lambda (tool)
                                          (equal path
                                                 (list (gptel-tool-category tool)
                                                       (gptel-tool-name tool))))
                                      gptel-tools))))
            tools)))

使用工具

激活之后就正常和 ai 对话就好了,在这个过程中 ai 自己决定是否要使用工具来获取信息。

⚠️ **GitHub.com Fallback** ⚠️