npx vs npm 差異與 MCP Server 自動更新機制
發表於|更新於|Claude Code
|總字數:897|閱讀時間:3分鐘|瀏覽量:
最近在幫 Claude Code 設定 MCP Server 的時候,用到了 Google 官方出的 chrome-devtools-mcp 這個工具,主要是拿來做瀏覽器的自動化驗證。安裝指令裡用的是 npx 而不是 npm install,一開始我還沒特別在意,但後來仔細研究才發現,這兩者的行為差異其實直接影響到版本更新策略。這邊把我整理的筆記記錄一下。
npm install vs npx 到底差在哪?
說實話,剛開始學 Node.js 的時候,我也搞不太清楚 npx 跟 npm 的差別,總覺得都是裝套件用的。但其實它們的設計理念完全不同。
簡單來說,npm install 會把套件下載到 node_modules/ 資料夾裡,持久保存在本地。而 npx 的概念則是「臨時下載、執行完就可以不管了」。
幾個關鍵差異整理一下:
- 版本解析時機:
npm install安裝時解析一次版本就固定了;npx加上@latest的話,每次執行都會重新解析,自動抓最新版 - 磁碟空間:
npm裝了就佔空間;npx用完可能會被快取策略清掉 - 啟動速度:
npm因為已經在本地了所以快;npx首次會稍慢一點(要下載),不過後續有快取就還好
MCP Server 的啟動與更新機制
安裝指令長這樣:
1 | claude mcp add chrome-devtools --scope user -- npx chrome-devtools-mcp@latest --autoConnect |
重點是那個 npx chrome-devtools-mcp@latest 的部分。那到底 MCP Server 什麼時候會啟動、什麼時候會去下載更新呢?
啟動流程
整個流程大概是這樣:
1 | Claude Code 啟動 |
什麼時候會觸發下載?
這邊我特別整理了一下,因為一開始自己也搞混過:
- 同一個 Claude Code session 內多次使用 MCP 工具:不會下載,MCP Server 啟動後就常駐了
- 重啟 Claude Code:npx 會檢查快取,通常不會下載(快取還在的話)
- 快取被清理或有新版本釋出:這時候才會下載一次
幾個重要結論
搞了一陣子之後,我歸納出幾個重點:
- MCP Server 是 Claude Code 啟動時就跑起來的背景程序,不是每次呼叫工具才啟動
- 平常使用 MCP 工具時,只是呼叫已經在跑的 MCP Server,不涉及下載
@latest的好處是自動更新,不需要另外手動處理版本更新- 每個 MCP Server 之間是各自獨立的,更新互不影響
為什麼選 npx 而不是 npm install?
其實想清楚之後原因蠻明確的:
- 自動更新 — 加上
@latest就能在每次啟動時解析最新版,完全不用手動維護 - 不污染全域環境 — 不會在使用者的
node_modules裡面留下一堆檔案 - MCP 社群慣例 — Claude Code 官方文件跟社群的 MCP Server 幾乎都是用 npx 安裝,照著慣例走比較不會踩坑
常用相關指令
最後附上幾個我常用的指令,方便之後查:
1 | # 安裝 chrome-devtools-mcp |
小提醒:如果發現 MCP Server 行為怪怪的,可以先試著重啟 Claude Code,讓 npx 重新抓一次最新版,通常就能解決了。
文章作者: Cheng®
版權聲明: 本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 Cheng's Tech & Life!
相關推薦

2026-08-14
它不是壞掉,是被計時器砍掉:Claude Code 的 timeout 與輸出上限
寫於 2026 年 8 月 16 日(補 8 月 14 日的排程),9 月才上線(部落格的發佈額度 8 月 10 日就用完了,這批稿子要等到九月才發得出去)。文中的版本號與「目前」都指 8 月 16 日查到的狀態,Claude Code 更新很快,你讀到時可能已經又改過了。 Bash 指令跑到一半就沒了的那一秒,Claude Code 內部到底是誰按下停止鍵的? 這問題聽起來像在抓 bug,其實要找的是一個鬧鐘。而且不只一個。 廚房出餐是一模一樣的結構。一張單子進去之後,同時有好幾個鬧鐘在跑:爐子上的定時器管這道菜燉多久,外場的等餐鈴管客人坐在位子上多久沒東西吃,外送平台那邊還有一個接單倒數。哪個先響,這張單就以那個理由被撤掉。客人只知道「菜沒來」,完全看不出來是哪個鈴響的。 工具呼叫就是那張單。要看懂它為什麼消失,得先看懂鬧鐘是怎麼綁上去的。 綁法只有四種把 Claude Code 所有的計時器攤開,會發現它們的差別不在「幾秒」,在「從什麼時候開始數」。就四種: 綁在開始執行上的,叫 wall-clock。從指令跑起來的那一刻起算,中間有沒有動靜都不管,時間到就到。 綁在建...

2026-05-25
Claude Managed Agents 自架沙箱與 MCP Tunnels 完整教學 — 讓 AI Agent 在你自己的基礎設施上跑
你要跑一個 Claude agent 自動處理 Jira ticket。 問題是這個 Jira 在公司 VPN 後面、沒有 public endpoint,外面打不進來。傳統做法你會做什麼?開個反向代理、租個跳板機、塞個 OAuth proxy 在 DMZ、然後跟資安部門吵兩個月。最後上線時候那個架構複雜到沒人敢動。 Anthropic 5 月 19 日為 Claude Managed Agents 加了兩個東西,讓上面那段話可以縮成「裝個 daemon、跑一個指令、收工」:Self-hosted sandboxes(自架沙箱)和 MCP Tunnels(私有通道)。前者把 tool 執行搬回你自己的機房,後者讓 Anthropic 那邊的 agent 不開外網就能連你內網的 MCP server。 要看懂這兩個功能設計上的精巧之處,要先把「Claude agent 到底由幾塊組成」這件事拆開來。 一個 AI Agent 拆成兩塊:思考 vs 動手把 agent 想成餐廳: 主廚坐在中央廚房想菜單、看訂單、決定接下來該炒哪盤——這是 agent loop,負責 orchestr...

2026-07-25
MCP、外掛與可觀測性:讓 agent 接上真實世界,還看得見它在幹嘛(AI Agent 架構全解析 7/8)
前六篇,我們把一隻 agent 從單一迴圈慢慢養大:先學會核心迴圈,再會拆解複雜任務,接著有了記憶與崩潰重開的韌性,能長時間非同步地跑,最後還能分裂成一群代理分工協作。但這隻 agent 一直有兩個沒被戳破的天花板:第一,它只能碰到自己 harness 出廠時內建、而且每一把都得工程師手寫的工具;第二,它跑了老半天,其實沒有人真的知道它做得好不好。這一篇就把這兩塊補上——agent 怎麼把手伸出 harness、接上真實世界,又怎麼裝上儀表板,讓你看得見、也量得出它到底有沒有把事情做對。 先講清楚問題:只會用內建工具的 agent,天花板在哪回想第 2 篇的核心迴圈:模型每輪決定要不要呼叫工具,harness 把工具跑起來、把結果餵回去。這裡藏了一個限制——那份工具清單是寫死的,每一把內建工具都是人手刻的,input schema、執行邏輯、錯誤處理一項不少。但使用者要的服務多到寫不完:Jira、部署系統、內部知識庫、監控後台,各有各的 API、認證方式、甚至語言。你不可能為每個服務都手刻一把工具,更別說每加一個就要動 harness、重發一次版本。 MCP(Model Cont...

2026-04-13
Claude Code 完整教學索引 — 從入門到進階的所有文章整理
這個頁面整理了我寫過的所有 Claude Code 相關文章,從完全不懂到能拿它做正經事,按照學習路徑排好了。 如果你是第一次接觸,從「入門與基礎」開始看;如果已經在用了想挖更多玩法,直接跳到你有興趣的段落。文章持續更新中,有新的會往上加。 入門與基礎還不確定 Claude Code 是什麼、跟 Chat 和 Cowork 差在哪的,先看這幾篇。 Claude Desktop 三種模式怎麼切?Chat、Cowork、Code 完整導覽 — Chat、Cowork、Code 三種模式的定位與切換時機 Claude Cowork 入門指南 — 讓 AI 在你電腦上自己幹活 — Cowork 模式怎麼用、能做什麼 Claude Code Auto Mode — 讓 AI 自己決定該不該執行指令 — 自動核准指令,不用一直按 y Claude Code /powerup 互動式教學與 April 2026 重點更新完整指南 — 用 /powerup 學功能,順便看四月更新了什麼 核心功能這幾篇是用 Claude Code 做事的基本功,搞懂這些效率差很多。 ...

2026-09-09
先別開第二支程式,Agent SDK 的自訂工具跑在你的 process 裡
你的服務裡已經有一條開好的 DB 連線、一份讀完的設定檔、一個還沒過期的存取權杖。現在你要讓 Claude 去查一筆訂單狀態,於是開始寫 MCP server:第二支程式、第二份設定、第二個要煩惱它有沒有活著的東西。 這一步不一定要走。而且判準比想像中窄,照官方文件看,窄到只剩幾種情況真的非走不可。 它省掉的那一步Agent SDK 裡有 create_sdk_mcp_server(Python)跟 createSdkMcpServer(TypeScript)這組東西,官方對它的描述只有一句,而那句是整件事的地基: “The server runs in-process inside your application, not as a separate process.” 跑在你的應用程式裡面。所以開頭那條連線你直接拿來用,設定不用再讀一次,權杖也不用想辦法遞過去,因為它們本來就在同一塊記憶體裡。站上 2026-05-20 那篇〈Claude Agent SDK 完整教學〉收尾時提過「可以把 MCP server 當成 Agent SDK 的工具來源」,講的是外部那條路。這...

2026-06-30
Notion MCP 接 Claude Code — 官方那個 OAuth 外掛,反而是最不該用的接法
想把 Claude Code 接上 Notion,第一個該做的決定,是跳過 Notion 官方那個 OAuth 外掛。 這句話聽起來不太對。官方推薦的、長得最正規的、會自動幫你管 token 的那個接法,怎麼會是最不該選的?但你真的去接一次就知道了——那條看起來最體面的路,會在三個不同的地方斷給你看,而旁邊那條土到不行、要你自己去後台複製一串鑰匙的路,三步就接上,而且接上之後再也不掉線。 這篇就是要講為什麼。順便把接上之後你還會踩的幾個坑,一次說完。 那個體面的接法,是怎麼一步步斷掉的先還原現場。你照官方文件走,用 OAuth 外掛(plugin:Notion:notion)連,瀏覽器跳出來叫你授權,你按下「允許」——然後第一個東西就炸了: Internal Server Error。Notion 的 OAuth 回呼在這一步直接掛掉,連錯誤訊息都懶得給你細節。 你想說可能是一時的,重試。這次走得遠一點,到了 token 交換階段,跳出來的是 MCP OAuth requires a redirect_uri (invalid_grant)。翻成人話:拿授權碼去換正式 token...
評論
公告
這裡記錄我在後端開發路上踩過的坑、學到的東西,也會分享每日 AI 與科技新聞觀點。歡迎一起交流!
目錄
claude-code





































































































































































































