MCP 與 Skills 擴充系統
MCP 是什麼?
💡 比喻:手機的 App Store AI 本身就像一支剛買的新手機——功能有限。 MCP(Model Context Protocol)就像 App Store, 讓你安裝各種「插件」,讓 AI 能做更多事。
沒裝 App 的手機:只能打電話、傳簡訊 裝了 App 的手機:能叫車、點餐、付款、拍照修圖
沒有 MCP 的 AI:只能讀文字、寫文字 有 MCP 的 AI:能開瀏覽器、讀檔案、查資料庫、控制應用程式
沒有 MCP vs 有 MCP
沒有 MCP:
你:"幫我看桌面上有什麼檔案"
AI:"抱歉,我無法存取你的檔案系統"
有 MCP(filesystem):
你:"幫我看桌面上有什麼檔案"
AI:"你的桌面有以下檔案:
- project.docx
- notes.txt
- photo.jpg"
沒有 MCP:
你:"幫我打開 Google 搜尋 ASP.NET Core 教學"
AI:"抱歉,我無法操作瀏覽器"
有 MCP(Chrome):
你:"幫我打開 Google 搜尋 ASP.NET Core 教學"
AI:[打開瀏覽器] → [輸入搜尋] → [回傳結果]
常用 MCP 介紹
1. Filesystem MCP(檔案系統)
功能:讀寫本機檔案和資料夾
用途:讓 AI 能操作你電腦上的檔案
可以做的事:
- 讀取檔案內容
- 建立新檔案
- 修改現有檔案
- 列出資料夾內容
- 搜尋檔案
2. Memory MCP(跨對話記憶)
功能:建立跨 session 的知識圖譜
用途:讓 AI 記住跨對話的資訊
可以做的事:
- 儲存實體和關係
- 搜尋已儲存的知識
- 跨專案共享記憶
3. Chrome MCP(瀏覽器自動化)
功能:控制 Chrome 瀏覽器
用途:讓 AI 能瀏覽網頁、截圖、填表單
可以做的事:
- 開啟網頁
- 截取螢幕截圖
- 點擊按鈕和連結
- 填寫表單
- 讀取頁面內容
4. GitHub MCP(代碼管理)
功能:操作 GitHub Repository
用途:讓 AI 能管理你的 GitHub
可以做的事:
- 建立 Pull Request
- 查看 Issues
- 管理 Branch
- Code Review
如何安裝 MCP
MCP 的設定檔是 .mcp.json,可以放在專案根目錄或使用者設定。
專案級設定(.mcp.json)
放在專案根目錄,只對這個專案生效:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "C:/Users/user/Desktop"]
}
}
}
全域設定(~/.claude/settings.local.json)
放在使用者設定,所有專案都能用:
{
"mcpServers": {
"memory": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@anthropic-ai/memory-mcp"]
},
"filesystem": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "C:/Users/user/projects"]
}
}
}
Windows 特別注意
⚠️ Windows 上一定要用 "cmd" + "/c" 來包裝 npx!
❌ 錯誤(Linux/Mac 的寫法):
"command": "npx"
→ Windows 上會報錯:spawn npx ENOENT
✅ 正確(Windows 的寫法):
"command": "cmd"
"args": ["/c", "npx", "-y", "..."]
→ 用 cmd /c 來執行 npx
安裝完成後
# 重啟 Claude Code 讓設定生效
# 在專案目錄重新啟動
claude
# 啟動時會看到 MCP 載入訊息
# 如果成功,會顯示可用的 MCP 工具列表
Skills 是什麼?
💡 比喻:巨集(Macro) 如果 MCP 是「讓 AI 有手腳」, Skills 就是「預寫好的動作指令」。 就像 Excel 的巨集——錄好一次,以後一鍵執行。
Skills 的概念
Skills 是預寫好的 Prompt 指令,存在 .claude/skills/ 資料夾中。
.claude/
└── skills/
├── deploy/
│ └── SKILL.md # 部署技能
├── setup-project/
│ └── SKILL.md # 專案初始化技能
└── fix-css/
└── SKILL.md # CSS 修復技能
SKILL.md 格式範例
---
description: 自動部署到 Railway
command: deploy
---
# 部署流程
請執行以下步驟:
1. 執行 `dotnet build -c Release` 確認編譯成功
2. 執行 `dotnet test` 確認測試通過
3. 建立 git commit(訊息:"deploy: auto deploy via skill")
4. 執行 `git push origin main`
5. 確認 Railway 自動部署啟動
如果任何步驟失敗,停下來回報錯誤,不要繼續。
使用 Skill
# 在 Claude Code 中輸入 slash command
> /deploy
# AI 會自動載入 SKILL.md 的內容並執行
# 就像按了一個「一鍵部署」的按鈕
更多 Skill 範例
---
description: 新增一個 CRUD Controller
command: new-crud
---
# 建立 CRUD Controller
請依照以下步驟:
1. 詢問使用者 Model 名稱
2. 在 Models/ 建立 Model 檔案(Id + 使用者指定的欄位)
3. 在 ApplicationDbContext 加上 DbSet
4. 建立 Controller(所有 CRUD action,async/await)
5. 建立 Views/(Index, Details, Create, Edit, Delete)
6. 建立 Migration 並更新資料庫
7. 執行 dotnet build 確認編譯成功
Hooks:事件觸發自動執行
💡 比喻:自動門 你不需要手動推門,走到門前它就自動開了。 Hooks 就是「自動門」——當某個事件發生時,自動執行指定的動作。
什麼是 Hooks?
Hooks 是在特定事件發生時自動執行的腳本。
可用的 Hook 事件:
- Stop:每次 AI 回應結束後觸發
- PreToolUse:AI 使用工具前觸發
- PostToolUse:AI 使用工具後觸發
- Notification:通知事件觸發
設定 Hooks
在 settings.local.json 中設定:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "cd /path/to/project && dotnet build"
}
]
}
]
}
}
實用 Hook 範例:對話結束後自動 Build
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "cd C:/Users/user/GuitarSchool && dotnet build -c Release"
}
]
}
]
}
}
這樣每次 AI 回應結束後,都會自動跑 dotnet build,確保程式碼沒有編譯錯誤。
完整設定流程:MCP + Skill + Hook
Step 1:建立 MCP 設定
在專案根目錄建立 .mcp.json:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "C:/Users/user/GuitarSchool"]
}
}
}
Step 2:建立 Skill
建立 .claude/skills/deploy/SKILL.md:
---
description: 一鍵部署到 Railway
command: deploy
---
# 部署流程
1. 執行 dotnet build -c Release
2. 執行 dotnet test(如果有測試的話)
3. git add -A && git commit -m "deploy: auto deploy"
4. git push origin main
5. 回報部署狀態
Step 3:設定 Hook
在 ~/.claude/settings.local.json 加上:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo 'AI 回應結束'"
}
]
}
]
}
}
Step 4:重啟 Claude Code
# 關閉目前的 Claude Code
# 重新啟動
claude
bypassPermissions:免問許可
Claude Code 預設會在執行某些操作前問你「可以嗎?」,
如果你信任 AI 的操作,可以設定 bypassPermissions 跳過確認。
設定方式
在 ~/.claude/settings.local.json:
{
"permissions": {
"allow": [
"Bash(dotnet build*)",
"Bash(dotnet run*)",
"Bash(dotnet test*)",
"Bash(git *)",
"Read(*)",
"Write(*.cs)",
"Write(*.cshtml)"
]
}
}
allow 清單說明:
- "Bash(dotnet build*)" → 允許執行 dotnet build 相關指令
- "Read(*)" → 允許讀取任何檔案
- "Write(*.cs)" → 允許寫入 .cs 檔案
- "Bash(git *)" → 允許執行 git 指令
⚠️ 注意:不要加 "Bash(rm *)" 或 "Bash(del *)"!
讓 AI 有刪除權限很危險。
🤔 常見錯誤
錯誤 1:Windows 上忘記用 cmd /c
❌ 錯誤:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
→ 錯誤訊息:spawn npx ENOENT
✅ 正確:
{
"mcpServers": {
"filesystem": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
錯誤 2:.mcp.json 放錯位置
❌ 放在 src/ 子目錄
❌ 放在 home 目錄(那是給 settings.local.json 的)
❌ 檔名打錯(mcp.json 少了前面的點)
✅ 專案級:放在專案根目錄 → /path/to/project/.mcp.json
✅ 全域級:放在 ~/.claude/settings.local.json 的 mcpServers 裡
錯誤 3:沒有重啟讓設定生效
❌ 改了 .mcp.json 但沒有重啟 Claude Code
→ 新設定不會載入,MCP 不會生效
✅ 改完設定後:
1. 關閉 Claude Code(Ctrl+C 或輸入 /exit)
2. 重新啟動 Claude Code
3. 確認 MCP 工具列表有顯示新的 MCP
本章重點整理
| 概念 | 說明 |
|---|---|
| MCP | 讓 AI 有手腳的插件系統 |
| .mcp.json | MCP 設定檔,放在專案根目錄 |
| Skills | 預寫好的 Prompt 指令(巨集) |
| Hooks | 事件觸發自動執行的腳本 |
| bypassPermissions | 跳過 AI 操作確認 |
| cmd /c | Windows 上執行 npx 的必要包裝 |