# 使用 MacOS 建立 MCP 連線 如果使用的是 macOS 系統, 一樣能建立 MCP 連線 ## 12-2 讓 Claude Desktop 透過 MCP 伺服器管理電腦桌面的檔案 `p12-7` ### 安裝可執行 MCP 伺服器 – filesystem 的環境 filesystem 這個 MCP 伺服器是以 Node.js 所撰寫, 要執行 filesystem 需要先安裝 Node.js 執行環境, 請依照以下步驟安裝: #### 1.開啟電腦上的終端機 Terminal 指令介面: ![F5328-4](https://hackmd.io/_uploads/SJ-2Jadnel.png) 1.在電腦搜尋輸入 "Terminal" 2.按此開啟 #### 2.複製以下指令, 貼上 Terminal 並按 Enter 執行安裝 Homebrew: ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` :::info Tip:Homebrew 是 macOS 上的套件管理工具, 能夠快速安裝與管理各種開發工具, 詳細安裝步驟與內容請至 Homebrew 網站 (https://brew.sh/) 查詢 ::: :::info 安裝完成後,可能需要將 Homebrew 加入到 PATH 中: ``` # 對於 Apple Silicon Mac (M1/M2/M3) echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" # 對於 Intel Mac echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile eval "$(/usr/local/bin/brew shellenv)" ``` ::: #### 3.請先關閉並重新開啟 Terminal, 再使用 Homebrew 安裝 Node.js: ``` brew install node ``` #### 4.安裝完成 Node.js 環境後, 就可以測試 filesystem 能不能順利運作, 指令最後是要讓 filesystem 操控的資料夾路徑, 本例是使用者的桌面: ``` npx -y @modelcontextprotocol/server-filesystem "/Users/使用者名稱/Desktop" ``` 執行後會看到出現以下訊息: ``` >> Secure MCP Filesystem Server running on stdio ``` 這表示 fiesystem 可以正常啟動, 請按下 Ctrl+C 結束運行 :::info Tip:只要在 Terminal 想結束指令的運行, 都可以按 Ctrl+C 或是關閉 PowerShell 視窗, 即可結束執行, 後續將不再示範 ::: ### 讓 Claude Desktop 透過 filesystem 查看桌面檔案 現在我們的 MCP伺服器已經準備就緒, 想要讓 Claude Desktop 與 filesystem 透過 MCP 連線, 就需要修改 Claude Desktop 的設定檔, 請跟著以下步驟完成設定: #### 1.回到 Claude Desktop 進行設定: ![F5328-1](https://hackmd.io/_uploads/BJKXI6d2lx.png) 1.在左下角點開列表/Setting 進入設定 ![13](https://hackmd.io/_uploads/rJnNIau2eg.png) 2.切換到 Developer 頁次 3.按 Edit Config 會跳轉到設定檔所在的 Claude 資料夾 #### 2.請用文字編輯開啟設定檔 claude_desktop_config.json, 貼上以下的 json 內容: ``` { "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y" "@modelcontextprotocol/server-filesystem", "/Users/使用者名稱/Desktop" ] } } } ``` 完成後畫面如下: ![F5328-2](https://hackmd.io/_uploads/H1x8LpOhxx.png) 1.將內容改成剛剛複製的 json 內容 2.填入你的使用者名稱 這個設定的意思是提供一個名稱為 "filesystem" 的 MCP 伺服器, 若需要它提供的工具, 可以執行 "command" 欄位和 "args" 欄位設定的 MCP 伺服器程式, 本例就是剛剛測試的指令。Claude Desktop 會在需要使用 filesystem 時主動執行這個程式, 並與該程式透過 MCP 協議溝通, 取得工具清單, 並依據需要指揮該程式執行特定工具後將工具執行結果送回。 :::info Tip:因為本章只會管理電腦桌面, 只選擇桌面資料夾, 如果你想讓 Claude Desktop 存取不同的資料夾, 可以自行更變。 ::: #### 3.儲存更變後, 要重新啟動 Claude Desktop 套用更變: ![F5328-3](https://hackmd.io/_uploads/HyTvUTd2xe.png) 1.在 Claude Desktop 圖示上按右鍵 2.按結束關閉 :::info Tip:單純關閉 Claude Desktop 視窗並不會真的關閉應用程式, 要到圖示上按右鍵才能關閉。 ::: :::warning 請回到書中 p12-12 繼續閱讀 ::: ## 12-3 讓 Claude使用 make.com 的工具 `p12-18` ### 使用 mcp-proxy 讓 Claude 能使用 make.com 的工具 #### 1.由於 mcp-proxy 是使用 Python 開發, 因此需先安裝 Python 的管理工具 uv, 請開啟 Terminal, 使用 Homebrew 安裝 uv: ``` brew install uv ``` :::info Tip:uv是由 Astral 開發的 Python 套件管理器, 詳細請至 Astral 的 uv 網站 (https://docs.astral.sh/uv/) 查詢 :::: #### 2.檢查 mcp-proxy 是否可用: ``` uvx mcp-proxy –-version >> mcp-proxy 0.9.0 ``` #### 3.確認 mcp-proxy 可以順利執行後, 複製以下的json內容, 修改 claude_desktop_config.json設定檔 : ``` { "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/使用者名稱/Desktop" ] }, "make": { "command": "uvx", "args": [ "mcp-proxy", "https://eu2.make.com/mcp/api/v1/u/你的MCP Token/sse" ] } } } ``` ![F5328-5](https://hackmd.io/_uploads/HyXYKa_ngx.png) 1.加入另一個 MCP 伺服器, 命名為 "make" 2.使用的執行指令是 uvx 3.填入 mcp-proxy 4.填入剛剛保存的 MCP Token, 也就是 make.com 提供的 MCP 伺服器網址 :::warning 請回到書中 p12-20 繼續閱讀 ::: ## 12-4 讓 Make AI Agent 能夠存取電腦上的檔案 `p12-27` ### 使用 mcp-proxy 發布 filesystem 到電腦的指定連接埠 #### 開啟 Terminal 視窗, 啟動 mcp-proxy 來連接 MCP 伺服器 filesystem, 並發佈到連接埠 3001: ``` uvx mcp-proxy --port=3001 npx @modelcontextprotocol/server-filesystem /Users/使用者名稱/Desktop …(略) >> [32mINFO[0m: Application startup complete. [32mINFO[0m: Uvicorn running on [1mhttp://127.0.0.1:3001[0m (Press CTRL+C to quit) ``` 現在只要透過 SSE 連接 http://127.0.0.1:3001, 就能呼叫 filesystem 伺服器的工具了。不過這個網址並不是公開的網址, 所以位在網路遠端的 make.com 並不能連接, 我們需要再使用另一個工具 ngrok, 它能將 http://127.0.0.1:3001 透過轉址的方式, 真正的發佈到網路上。 ### 安裝ngrok並將 filesystem MCP伺服器發佈到網路上 只要將 MCP 伺服器發佈到網路上, 不只是 make.com, 只要是有支援SSE 傳輸的 MCP 主控端, 都能連接使用, 請跟著以下步驟將剛剛發布的 MCP 伺服器轉接到網路上: #### 1.先到ngrok網站 https://ngrok.com/ 進行註冊: ![49](https://hackmd.io/_uploads/r1Z0IT_nex.png) 1.按此開始註冊 ![50](https://hackmd.io/_uploads/rJ51DpOhge.png) 2.自行選擇註冊方式, 本例使用 Google 註冊 ![52](https://hackmd.io/_uploads/rJQxvp_3ex.png) 3.註冊的過程中會看到這個頁面, 請按此跳過 ![53](https://hackmd.io/_uploads/H15ePad2el.png) 4.註冊完成後, 在左邊欄按此切換頁面 ![54](https://hackmd.io/_uploads/BJXbvpd2xx.png) 5.往下捲找到 Connect 段落 6.按此複製, 這是後面要認證所使用的指令, 請保存好 #### 2.接著要使用 Terminal 安裝並執行 ngrok, 因為 mcp-proxy 要保持連線狀態, 請開啟另一個 Terminal: ![F5328-6](https://hackmd.io/_uploads/ryAGDau2ll.png) 1.點一下 Terminal 視窗 2.點左上角的Shell/新增視窗/新增套用… #### 3.使用 Homebrew 安裝 ngrok: ``` brew install ngrok/ngrok/ngrok …(略) ==> Installing Cask ngrok ==> Linking Binary 'ngrok' to '/opt/homebrew/bin/ngrok' 🍺 ngrok was successfully installed! ``` :::info 為甚麼下載 ngrok 需要 ngrok/ngrok/ngrok, 這是因為 Homebrew 的 tap 機制 (格式:使用者名稱/倉庫名稱/軟體名稱), 因為 ngrok 不在 Homebrew 的核心倉庫中, 而是由 ngrok 自行維護。如果想了解更多 tap 的細節, 請參考:https://docs.brew.sh/Taps。 ::: #### 4.貼上剛剛在ngrok網站複製的指令, 設定ngrok認證: ``` ngrok config add-authtoken 30rLGmB1QR8uYsTbn8f2BH3qpco_88wu6tLpSyYj63ye7kcb9 >> Authtoken saved to configuration file: /Users/flag/Library/Application Support/ngrok/ngrok.yml ``` #### 5.執行 ngrok 將 MCP 伺服器發布在網路上: ``` ngrok http 3001 ``` 按下 Enter 執行後, 會直接建立一個轉接回電腦 3001 連接埠的網址: ``` ngrok (Ctrl+C to quit) Create instant endpoints for local containers within Docker Desktop →→ https://ngrok.com/r/docker Session Status online Account oscarflagwork@gmail.com (Plan: Free) Version 3.26.0 Region Japan (jp) Latency 36ms Web Interface http://127.0.0.1:4040 Forwarding https://d85dd1d81862.ngrok-free.app -> http://localhost:3001 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00 ``` 只要透過這個 https://************.ngrok-free.app 網址, ngrok 會幫你轉接回到你電腦上的 3001 連接埠, 就能存取電腦上的檔案, 請在電腦上複製這段網址 :::info Tip:任何人都能透過這個網址來使用 filesystem 操作你的桌面檔案, 請小心保管。 ::: #### 6.為了測試是不是真的能透過這段網址使用 filesystem, 請修改 Claude Desktop 設定檔, 並在 Claude Desktop 進行測試: ![F5328-7](https://hackmd.io/_uploads/Sky6vad3gl.png) 1.改用執行 mcp-proxy 的 uvx 2.使用 mcp-proxy 的方式來呼叫 filesystem 的工具 3.貼上 ngrok 連線的網址, 記得加上 "/sse" :::warning 請回到書中 p12-31 繼續閱讀 :::