你的社群網站最近是不是常被「MCP」這個詞洗版?以前以為「技術」是工程師的事,但 MCP 卻是少數跟你我關係密切的「技術」,因為 MCP 的功能是強化 AI,而你我不是每天都用 AI 嗎?
2 個月前我對它略懂,但現在我每天跟它相處十幾小時,還寫了個 管理 MCP 的 MCP,本文整理了 2 個月的研究和實作,如果你對 MCP 似懂非懂,讓我們細說從頭。
有人說:「我看不出 MCP 有什麼好,不就跟 API 一樣嗎?」,2 個月前的我也這麼想,但現在全改觀了。
本文目錄
理解篇
看圖說故事,什麼是 MCP ?
軟體、網站的架構就像餐廳,而 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/mcpBash
- 有的資料教你用「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"]
}
}
}BashUVX | 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/mcpBash問題是下指令後 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 serversPlaintextContext 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是否存在,不存在就新增 - 如果存在,查看設定
- 如果內部沒設定,插入程式碼
- 先偵測
- 統一管理:複製到 local mcp server:
這個設定叫 AI 做應該很快的。
結論
有 AI 你不需要記住很多指令,但是還是要瞭解這些指令代表什麼意思,因為,就算 MCP 是 Anthoropic 發明的,但它自家的 Claude 都搞不定,你看到它在做什麼時,你知道某些是胡扯,有些根本做錯了,可以及時回頭。
然後,因為有 AI,其實你可以叫它把你常用的功能做成一個 MCP,那就很快了。這是為什麼你需要略懂什麼是 MCP 的原因。
如果你會用 n8n,會突然理解 MCP Server Trigger 和 MCP Client Tool 的用途吧?原本是很複雜的觀念。
恭喜你,現在可以開始 AI First 的生活了!
