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 才計分。