AI First 工作法必要的 MCP 基礎知識 | 以 Claude Code 為例

這是個 AI First 的時代,MCP 不可或缺,但很難懂?圖文並茂說給你聽!

你的社群網站最近是不是常被「MCP」這個詞洗版?以前以為「技術」是工程師的事,但 MCP 卻是少數跟你我關係密切的「技術」,因為 MCP 的功能是強化 AI,而你我不是每天都用 AI 嗎?

2 個月前我對它略懂,但現在我每天跟它相處十幾小時,還寫了個 管理 MCP 的 MCP,本文整理了 2 個月的研究和實作,如果你對 MCP 似懂非懂,讓我們細說從頭。

有人說:「我看不出 MCP 有什麼好,不就跟 API 一樣嗎?」,2 個月前的我也這麼想,但現在全改觀了。

理解篇

看圖說故事,什麼是 MCP ?

軟體、網站的架構就像餐廳,而 MCP 就是美食街,裡面有很多餐廳。

電腦就像餐廳,前端是你看到的裝潢、菜單,後端是廚房,每道菜都有自己的邏輯,但你不會跑去廚房點餐,服務員就是 API,負責把你的需求傳給廚房後,再把菜從廚房送來給你。
電腦就像餐廳,前端是你看到的裝潢、菜單,後端是廚房,每道菜都有自己的邏輯,但你不會跑去廚房點餐,服務員就是 API,負責把你的需求傳給廚房後,再把菜從廚房送來給你。
電腦一次要做很多事,就像美食街什麼餐廳都有,但每家的點餐方式(API)都不同,你要會講各種語言才能讓日本料理配法國濃湯餐後上義大利咖啡,這實在很麻煩。
電腦一次要做很多事,就像美食街什麼餐廳都有,但每家的點餐方式(API)都不同,你要會講各種語言才能讓日本料理配法國濃湯餐後上義大利咖啡,這實在很麻煩。
美食街老闆發現問題,為了複雜點餐買了機器人(AI),把複雜點餐要求說給它聽,它會很勤快的幫你完成點餐。啊!還不行,因為每家餐廳的點餐法都不同,他們聽不懂 AI 說什麼!
美食街老闆發現問題,為了複雜點餐買了機器人(AI),把複雜點餐要求說給它聽,它會很勤快的幫你完成點餐。啊!還不行,因為每家餐廳的點餐法都不同,他們聽不懂 AI 說什麼!
此時老闆制定了 MCP ,它規定格式,每家餐廳用相同的結構溝通,AI 連上日餐 MCP ,就能幫你點日本料理,連法餐 MCP ,就能點法國濃湯,AI 現在能力變強了,而且只要有源源不斷的 MCP 被開發出來,它就無所不能!
此時老闆制定了 MCP ,它規定格式,每家餐廳用相同的結構溝通,AI 連上日餐 MCP ,就能幫你點日本料理,連法餐 MCP ,就能點法國濃湯,AI 現在能力變強了,而且只要有源源不斷的 MCP 被開發出來,它就無所不能!

看圖說故事完畢,你應該略懂 MCP 角色?但比喻只是協助理解真實知識,真實知識才能用。


現在帶着前面的初步理解,開始真實說明。

MCP 的全名是 MCP Server,它是由 Anthoropic,就是 Claude 的母公司提出的標準,雖然現在很多 AI 公司都支持,但接下來都用 Claude Code 來舉例,因為它是支援最全面的軟體。

其實我們可以說 MCP 是「AI 用的 App」,它是一組程式,一邊連到某個軟體/服務,另一邊連 AI,架構是這樣:

AI ⇔ MCP Server ⇔ 本地/雲端服務
Plaintext

當然不止當橋樑串接兩邊,它更是 AI 的好朋友,會告訴 AI 如何用這服務,用錯了會告訴 AI 錯在哪,有了它,AI 可以立刻取用工具,不用再自己去研究了。

AI 有了 MCP 太好了,比起其他的方法,這太簡易了。

但終究是「技術」,對 AI 簡單,對我可沒這麼簡單,有一大堆觀念超難懂,沒關係,讓我們依照分類來理解它。

依照 MCP Server 提供服務位置分 2 類

重複一次,「MCP 是 AI 用的 App」。

跟我們人類用的 App 一樣:

  • 本機軟體,比如 Microsoft Word,打開就能用;
  • 雲端軟體,比如 Google Docs,要先聯網、打開瀏覽器、輸入 Google Docs 的網址。

MCP 這個 AI 的 App 也是這樣,分本地和雲端兩種:

  • 本機 MCP(STDIO)AI ⇔ 本機 MCP Server ⇔ 本地/雲端服務,AI 只要連接本機 App,但它也能抓雲端資料,只是 AI 不負責聯網。
  • 雲端 MCP(HTTP)AI ⇔ 雲端 MCP Server ⇔ 雲端服務,AI 要連雲端 App,如果人類用,就是看到雲端就要開瀏覽器。

常有誤解「Google Docs 是雲端服務,所以 Google Docs MCP 一定也是雲端的」錯了,這就是 MCP 令人迷糊之處,實際上,MCP 裝在哪裡跟最終服務是否雲端完全無關!

  • 假如有個 Google Docs MCP 是本機 MCP,AI 透過安裝在本地 MCP 串到雲端 Docs,對 AI 來說,它沒有上網啊!它只跟本機軟體說話,雖然這軟體會去雲端幫它拿資料來,但它就是個本機 MCP。
    • 例如這個 Google Sheets MCP,它安裝在本地,AI 只要跟它溝通,但它會幫 AI 把雲端的試算表內容拿回來。
  • 另一個例子,自動化軟體 n8n 提供「MCP Server Trigger」節點,可以自製 MCP,讓 AI 去雲端用你的工作流,它有個網址: https://{你的網址}/mcp/{mcp-server-name},對 AI 來說,它要驅動 n8n 工作流,就要上網連到 MCP 去,就像打開瀏覽器一樣,這就是雲端 MCP。

開發 MCP 的人要提供 HTTP MCP 讓人用,他就要準備一台伺服器,要花錢,所以大部分 MCP 是本機版,我不花錢買伺服器服務你!

依照 MCP Server 的使用範圍分 3 類

這段很容易搞混,重點是瞭解使用情境。

  • 個人(User)MCP:可以叫做「全域 MCP」,就是在你的電腦任何位置都能用。
  • 專案(Project)MCP:只在設定它的專案中可用,跳出去就看不到了,它把設定項寫在專案裡,如果跟別人分享檔案夾,會連設定一起分享出去,通常是因為它是本專案必要的零件。
  • 專案/本地(Local)MCP:也只在專案中能用,不同的是,它的設定跟「個人 MCP」一樣放在 Claude Code 總設定裡,就算你把專案檔案夾跟別人分享,別人也看不到,例如我把密碼寫在裡面,這可不能讓人看到!

專案級 MCP 權限高於全域,如果專案內 Google Docs MCP 連到客戶帳號,全域的連到自己的帳號,那專案內打開時就不會連到自己家。

你可以想想如何組合:

  • 比如你是一人公司,只做自己的工作,AI 的服務對象是你本人,那全域 MCP 就夠了。
  • 但如果你幫別人開發軟體、對自己和公司用不同帳號…,那就要分別設定專案/本地的 MCP 了。

誰支援哪種 MCP Server

不是 MCP 都一樣,每家都有不同的設定,在本文寫的時候是這樣的:

  • ChatGPT, Gemini, Claude 等網頁聊天機器人,全不支援 MCP。
  • Claude Desktop 支援本機 MCP,不支援雲端 MCP,應該是安全因素。
  • Claude Code 和 Roo Code 支援全域和專案 MCP。
  • Gemini CLI 支援全域,但不支援專案 MCP。
  • OpenAI Codex 我沒測過,如果你知道可以告訴我。

很繁雜吧?所以只能用大王– Claude Code 說明,它是全世界支持最全面的 AI 工具,但你瞭解這些分類,腦中有個地圖,換什麼都容易。


安裝篇

這裡設定各種東西,包括 AI 要呼叫哪裡的 MCP、用什麼方式呼叫、誰會呈現誰被遮蔽…。

  • Claude Code 只能用文字指令安裝,不過你可以用我開發的 SyncMCP(歡迎使用) 用 RooCode 的圖形界面安裝後同步到 Claude Code 即可。
  • 忍受我用指令說明,凡事當然要符合大王的規範啊。

你不用煩惱哪個是雲端哪個是本機,通常提供的頁面都有說明,這裡的目的是讓你打開 GitHub 上的 MCP 專案時,看得懂他在寫什麼。

安裝雲端 MCP

雲端 MCP 就是有一個 App 在雲端,叫 AI 開瀏覽器使用它,所以雲端安裝設定時要給它「網址」。

claude mcp add --transport http paypal 
  --scope user  #注意看這行,後面會說
  https://mcp.paypal.com/mcp
Bash
  • 有的資料教你用「SSE」連接雲端,它已經廢棄了,現在雲端都用 http,還有些舊 MCP 用 SSE
  • 在 AI 世界,所謂「舊的」可能就是 2 週前…。

安裝本地 MCP

本地 MCP 就是有一個 App 裝在電腦中某處,叫 AI 使用它,所以本地安裝設定時告訴它這 App 在哪裏。

claude mcp add --transport stdio n8n-mcp 
  --scope user  # 注意看這行,稍候說明
  --env MCP_MODE=stdio 
  --env LOG_LEVEL=error 
  --env DISABLE_CONSOLE_OUTPUT=true 
  --env N8N_API_URL=https://client-n8n.example.com/api/v1 
  --env N8N_API_KEY=client-api-key 
  -- npx -y [email protected] # 這行是告訴 AI 用 npx 方式去使用 n8n-mcp,稍候說明
Bash

本地 MCP 常用安裝方式

本地安裝當然要有個檔案夾咯?但如果你安裝會發現「我都沒建檔案夾,它到底裝在哪裡?」,這裏說明。

Command | 老方法

就開檔案夾把相關檔案下載下來,可能 MCP 作者不熟悉新的寫法,或是他不是用 JS/Python 開發,就要整包下載下來。

比如有個 MCP 為了高效能,用 Go 這種超快編譯語言寫,那就要下載到電腦裡你手動建立的檔案夾,command 指向檔案夾。

{
  "mcpServers": {
    "my-go-mcp": {
      "command": "/usr/local/bin/my-go-mcp", # 這行告訴 AI 執行檔放哪
      "args": ["--port", "8080"],
      "env": {
        "CONFIG_PATH": "/etc/my-go-mcp/config.yaml"
      }
    }
  }
}
Bash

比起雲端就是給個網址,本地安裝的玩法很多,這種細節你可以問 AI,比如:

  • 直接把執行檔放在某個檔案夾中
  • 把原始碼放在某個檔案夾中
  • 把整個服務用 Docker 安裝在本地

這裡只要建立觀念,談細節沒人比得過 AI,我就不說了,請問 AI。

NPX | Node 的便利安裝法

如果 MCP 用 Node (JavaScript) 開發,可以用 npx,它在你需要時才把程式碼下載下來,放在記憶體中,不用了就清除,下次要用再下載,所以只要一條指令,不用開檔案夾也行。

{
  "mcpServers": {
    "node-server": {
      "command": "npx", # 告訴 AI 用 NPX 方式使用
      "args": ["-y", "package-name"]
    }
  }
}
Bash

UVX | Python 的便利安裝法

JavaScript 陣營有 NPX,在 Python 陣營也有 UVX,用途一樣,不用你開檔案夾安裝,自動下載、自動清除。

{
  "mcpServers": {
    "python-server": {
      "command": "uvx", # 告訴 AI 用 UVX 方式使用
      "args": ["package-name"]
    }
  }
}
Bash

深度理解篇

原本我大多數 MCP 都設為「全域可用」(大錯特錯!),就是不管開哪個專案,都獲取相同的 MCP 設定。

我的想法是:比如 Context7 可以讓 AI 可以查到程式碼最新版參考,怎麼會因為專案不同呢?設定全域就好了。

那到底專案 MCP 是幹嘛用的?

直到接案時,因為複雜的 n8n 專案跨環境遷移很容易出問題,想說連到客戶家的 n8n,直接叫 AI 調整他的工作流。

但全域 n8n-MCP 是連到我自己的 n8n,就沒辦法讓 AI 調整客戶的 n8n 了。

原來專案級就在此刻要用啊!有趣的是:

  • 同一個 MCP,在不同專案可以設定不同的帳號、版本…。
  • 專案級優先權高於全域,所以設定了專案級時,就覆蓋(遮蔽)了全域內容。

指令安裝後做了些什麼?

這裏是 Claude Code 的官網範例,雖然有中文,但我看不懂它在寫什麼,只好自己研究。

指令改一點,只要 Scope 不同,就變不同設定:

#雲端 MCP,用戶(全域)級安裝
claude mcp add --transport http paypal 
  --scope user 
  https://mcp.paypal.com/mcp

#雲端 MCP,專案(本地)級安裝
claude mcp add --transport http paypal 
  --scope local #這行可以不寫
  https://mcp.paypal.com/mcp

#雲端 MCP,專案級安裝
claude mcp add --transport http paypal 
  --scope project 
  https://mcp.paypal.com/mcp
Bash

問題是下指令後 Claude Code 到底改了什麼呢?如果你知道,當 AI 設不好時,你可以糾正它。

  • Claude Code 理論上會自己設定,但它是在搞不清自己的設定項在哪,還搞不懂專案和全域分別,常常一直改個半小時才搞定,如果你懂,省掉很多時間(= 金錢)。
  • 別家…,算了吧,連自己設定都不會。

其實,不管你安裝到哪裏,它只是把一樣的內容寫入某個設定檔,內容像這樣:

{
  "mcpServers": {
    "paypal": {
      "type": "http",
      "url": "https://mcp.paypal.com/mcp"
    }
}
Bash

但不同的 Scope 設定,會把它插入不同位置:

  • 安裝到全域(user):加在 ~/.claude.json/mcpServers 下。
  • 安裝到本地(local):加在 ~/.claude.json/projects[*].mcpServers 下,跟全域同一個檔案,只是放在不同章節,因為不放在專案檔案夾,也不會上傳到 GitHub。
  • 安裝到專案(project):加在 .mcp.json 中,就是專案根目錄,跟前兩者位置不同,你用 GitHub 同步到雲端時,這設定也被保存到雲端,別人複製時會把設定一起下載。

不用指令直接改設定檔

既然指令不同產生一樣的內容,那直接去改 json 檔不就好了?

沒錯,直接修檔案不會有任何問題,可能比用指令還方便,如果你寫一個軟體來管理,就可以用改 json 內容的方式快速設定。

有時候 AI 教你新增 .clauderc 檔寫入設定內容,雖然實測仍有效,但這是「老」方法,已廢棄,未來可能不支援。

細節設定

安全機制及如何關閉

如果你的專案設有專案級的 MCP,啓動時 Claude Code 會問你:

This project wants to use MCP server: n8n-mcp
Command: npx -y [email protected]

Environment variables:
N8N_API_URL=https://client-n8n.example.com/api/v1
N8N_API_KEY=***

[Allow Once] [Always Allow] [Deny]

因為 MCP 名稱一樣,你沒注意會以為連到自己的網站(因為不是你用而是 AI 用),連錯位置會把機密發給別人,所以它做了這個安全機制,你選 Always Allow,就不會再跳出來。

但如果你想手動設置「別再問我了」,就去專案中的 .claude/settings.local.json 設定

{
  "enableAllProjectMcpServers": true
}
Bash

就會自動批准所有的專案級 MCP。

黑/白名單

前面 enableAllProjectMcpServers 是全開,如果只要開/關部分呢?

{
    { # 只同意部分
      "enabledMcpjsonServers": ["n8n-mcp", "github"]
    },
    { # 只不同意部分
      "disabledMcpjsonServers": ["risky-server"]
    }
} 
Bash

這就是「正/負面表列」功能。

請注意,這設定管不到全域 MCP,只能管到專案級 MCP,所以無法用它把全域 MCP 關閉。

組合使用

全部加在一起,你可以用全部同意加上部分黑名單,就很容易控制專案中有哪些 MCP。

也可以用白名單來開啓/關閉某些 MCP。


管理篇,MCP 佈局與設計哲學

我很疑惑,為什麼沒有在專案裡關閉部分全域 MCP 的功能呢?設計的很爛啊!

不是哦。

加法哲學

因為 Claude 的設計理念是「加法」而不是「減法」:

  • 全域設定很多,到專案裡關閉:這就像去露營居然帶了微波爐,太重又丟掉,很不合理。
  • 全域設定很少,專案再加:如果營區已經有微波爐,那帶菜刀、砧板就好了,合理。

所以 Claude 希望你這樣用:

  • 全域配置 = 基礎工具集
    • 預期用途:所有專案都需要的通用工具
    • 範例:sequential-thinking, filesystem
  • 專案配置 = 額外工具
    • 預期用途:專案特定的 MCP servers
    • 範例:專案特定的 API、資料庫連接
全域(1-3 個通用 MCP)+ 專案(2-5 個專案特定 MCP)= 每個專案 3-8 個 MCP servers
Plaintext

Context Window 考量,就是 $$ 啦

  • 每個 MCP server 都會消耗 context window:
    • 小型 MCP:5,000-15,000 tokens
    • 中型 MCP:15,000-50,000 tokens
    • 大型 MCP(如 google_workspace):50,000-85,000 tokens
  • 範例
    • 全域:
      • sequential-thinking: 10,000 tokens
      • github: 20,000 tokens
      • n8n-mcp: 30,000 tokens = 60,000 tokens
    • 如果專案只需要 github,仍然會浪費 40,000 tokens 在不需要的 MCP 上!

Token 要花錢買的,為了省錢,千萬要做好佈局!

常改專案設定好麻煩啊

其實可以用簡單的腳本解決這個問題,AI 很會寫。

  • 記錄設定檔:把常用 mcp 設定 json 都寫在同一個檔案裡,就是 snippets,設定不同專案時,把片段複製到合適位置就好。

為什麼不要用時再安裝,反正指令很簡單啊?因為很多 mcp 要設登入帳密、API Key,那不是每次安裝都要重設嗎?想到就累啊!

  • 複製設定檔:Claude Code 把所有用到的專案都記錄在 ~/.claude.json/projects/{project_path},很容易找到
  • 決定統一管理或是分散管理
    • 統一管理:複製到 local mcp server:
      • 腳本偵測 ~/.claude.json/projects/{project_path}/mcpServers 是否有這筆設定
      • 如果沒有,插入程式碼
    • 分散管理:複製到 project mcp server:
      • 先偵測 .mcp.json 是否存在,不存在就新增
      • 如果存在,查看設定
      • 如果內部沒設定,插入程式碼

這個設定叫 AI 做應該很快的。

結論

有 AI 你不需要記住很多指令,但是還是要瞭解這些指令代表什麼意思,因為,就算 MCP 是 Anthoropic 發明的,但它自家的 Claude 都搞不定,你看到它在做什麼時,你知道某些是胡扯,有些根本做錯了,可以及時回頭。

然後,因為有 AI,其實你可以叫它把你常用的功能做成一個 MCP,那就很快了。這是為什麼你需要略懂什麼是 MCP 的原因。

如果你會用 n8n,會突然理解 MCP Server Trigger 和 MCP Client Tool 的用途吧?原本是很複雜的觀念。

恭喜你,現在可以開始 AI First 的生活了!

讓我們保持聯繫

推送 Push:有個資疑慮的您,按下網址列左方「鎖頭」開啟「通知」會收到通知

電子報 Subscribe:在上方框或側邊欄框中訂閱電子報,我會看到信箱,但不會發垃圾郵件。

合作 Cooperation:行銷、課程合作 請到 About 中填寫表單,留言、臉書專頁聯繫也可以

臉書專頁:疑問或聊天,請留言,或到臉書專頁「Simpro 學習控」關注及留言

訂閱電子報

約雙週更新,絕無垃圾郵件|記得到信箱查看驗證信

最有人氣

探索更多來自 Uncle6 Automatia 六叔自動症 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading