MCP 使用說明
讓 Claude、ChatGPT、Grok 陪你練資安考題,交卷積分直接累積
這是什麼
MCP(Model Context Protocol)是讓 AI 助手呼叫外部工具的標準。本站開了一個 MCP 端點,接上之後,你可以直接跟 AI 說「出一份入門難度的題目給我」,它會去站上拿題目(不含答案)、等你作答、幫你交卷,再依解析講解你錯在哪。
- 端點:
https://blog.powerup.com.tw/api/mcp(Streamable HTTP,只收 POST,不開 SSE) - 授權:HTTP header
Authorization: Bearer bnmcp_… - 題目分三個難度:
easy入門、medium進階、hard挑戰
第一步:取得金鑰
練習用(會員):登入會員頁,在「AI 助手金鑰(MCP)」按建立。金鑰只能看題目、交卷、查自己的積分與讀文章摘要,不能改任何資料;90 天到期,每人最多 3 把。交卷的積分直接記到你的帳號。
編題用(編輯部):由管理員在後台發,可以多開編題與發布權限,只給自己人的代理用。
金鑰只在建立當下顯示一次,請當密碼保管。外流了就到會員頁按撤銷,立即失效。
Claude
Claude Code(終端機)
一行加進去,之後在對話裡直接用:
claude mcp add --transport http breach-notes https://blog.powerup.com.tw/api/mcp \
--header "Authorization: Bearer bnmcp_你的金鑰"加完用 claude mcp list 確認狀態是 connected。
Claude 網頁版與桌面版:自訂連接器
設定 → 連接器(Connectors)→ 新增自訂連接器(Add custom connector),網址填 https://blog.powerup.com.tw/api/mcp。如果對話框有「Request headers」區塊,新增一個 header:名稱 Authorization、值 Bearer bnmcp_你的金鑰(要自己打 Bearer 和空格)。
這個 Request headers 功能目前還是 Beta,不是每個帳號都看得到。看不到的話,桌面版可以改用下面的 mcp-remote 橋接。
Claude 桌面版:用 mcp-remote 橋接
需要電腦上有 Node.js。編輯 Claude 桌面版的 claude_desktop_config.json(設定 → 開發者 → 編輯設定),加入:
{
"mcpServers": {
"breach-notes": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://blog.powerup.com.tw/api/mcp", "--header", "Authorization:${BN_MCP_AUTH}"],
"env": { "BN_MCP_AUTH": "Bearer bnmcp_你的金鑰" }
}
}
}header 寫成 Authorization:${BN_MCP_AUTH}、冒號後面不留空格,把 Bearer 和金鑰放在 env 裡,可以避開 Windows 上參數被空格切開的問題。存檔後重開 Claude。
ChatGPT
ChatGPT 網頁版的「開發者模式」自訂連接器,目前主要支援 OAuth 或不驗證;本站用的是固定金鑰,網頁版接不上的機率很高,我們不建議硬試。建議改用 OpenAI API 的 Responses API,它可以直接帶金鑰呼叫遠端 MCP:
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"tools": [{
"type": "mcp",
"server_label": "breach_notes",
"server_url": "https://blog.powerup.com.tw/api/mcp",
"authorization": "bnmcp_你的金鑰",
"allowed_tools": ["list_quizzes", "get_quiz", "submit_quiz", "my_points"],
"require_approval": "never"
}],
"input": "列出入門難度的資安題目,挑一份出給我,一題一題問,我回答完再幫我交卷"
}'model 換成你帳號能用的模型。authorization 填金鑰本身就好;本站同時接受有沒有 Bearer 前綴的寫法,也可以改用 "headers": { "Authorization": "Bearer …" }。只給練習用的工具時可以設 require_approval: never;如果用的是有編題權限的 token,建議改成 always,每次寫入前讓你按確認。
Grok
xAI 的 API 支援遠端 MCP(只收 Streamable HTTP 與 SSE),在 Responses API 的 tools 裡加一個 mcp 項目:
curl https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4",
"tools": [{
"type": "mcp",
"server_label": "breach_notes",
"server_url": "https://blog.powerup.com.tw/api/mcp",
"authorization": "bnmcp_你的金鑰",
"allowed_tools": ["list_quizzes", "get_quiz", "submit_quiz", "my_points"]
}],
"input": "給我一份挑戰難度的資安題目,先不要告訴我答案"
}'xAI 目前不支援 require_approval,所以給 Grok 的金鑰請只開練習權限。用 xAI 原生 SDK 時,欄位名稱是 allowed_tool_names 與 extra_headers。model 換成你帳號能用的 Grok 模型。
可以叫 AI 做什麼
- 「列出有挑戰題的問卷,挑最新的一份考我」
- 「只出入門題,一題一題問,我答完再交卷」
- 「交卷後把我答錯的題目,用文章裡的解析講一次」
- 「我現在幾分?離 10,000 分還差多少?」
我們在伺服器說明裡要求 AI 不替你猜答案;但它看得到題目,想作弊還是做得到。積分是給自己的,請自己作答。
工具清單
AI 只會看到金鑰權限範圍內的工具。
| 工具 | 做什麼 | 需要的權限 |
|---|---|---|
list_articles | 列出文章(唯讀) | article:read |
get_article_summary | 文章摘要(唯讀) | article:read |
list_quizzes | 列出可作答的問卷(唯讀) | quiz:play |
get_quiz | 取得題目(不含答案)(唯讀) | quiz:play |
submit_quiz | 交卷計分 | quiz:play |
my_points | 我的積分(唯讀) | quiz:play |
get_quiz_full | 取得完整題目(含答案)(唯讀) | quiz:edit |
generate_quiz_draft | 產生問卷草稿 | quiz:edit |
update_quiz_questions | 修改題目與難易度 | quiz:edit |
set_quiz_status | 發布或退回問卷 | quiz:publish |
| 權限(scope) | 內容 | 誰能拿到 |
|---|---|---|
quiz:play | 考題練習:看已發布題目(不含答案)、交卷計分、查積分 | 會員自建金鑰 |
article:read | 文章列表與摘要(不含全文) | 會員自建金鑰 |
quiz:edit | 編題:看答案、產生草稿、改題目與難易度 | 只有管理員能發 |
quiz:publish | 發布/退回問卷 | 只有管理員能發 |
安全須知
- 金鑰等同密碼:不要貼進公開的 repo、截圖或分享的對話。外流就撤銷,再建一把。
- 每把金鑰每分鐘最多 60 次呼叫、交卷每分鐘最多 10 次。
- 每次呼叫都會記錄時間、工具、結果與來源 IP,管理員在後台看得到,用來排查濫用。
- 文章工具只回摘要,不回全文;要讀全文請開文章網址。
- 我們這個站寫的就是金鑰外洩的事件,請不要讓它變成下一篇的素材。
疑難排解
- 401:金鑰打錯、已撤銷或已過期。到會員頁確認狀態,必要時重建。
- 看不到某個工具:金鑰沒有那個權限。會員金鑰只能練習與讀摘要。
- 429:呼叫太頻繁,等一分鐘。
- 405:用了 GET 或 SSE。本站只收 POST(Streamable HTTP)。
- 交卷沒加分:同一份重作時,原本答對的題目不再給分;或這把金鑰沒有綁會員(管理員發的 token 可能沒綁),交卷會回一組序號,傳到官方 LINE 才計分。