LINE Bot MCP Server教學:讓AI代理操作LINE官方帳號
LINE官方開源的LINE Bot MCP Server,讓Claude Desktop等AI代理替你的LINE官方帳號傳訊息、群發、讀取個人檔案、管理圖文選單。本文說明工具清單、npx與Docker設定、訊息則數、安全性與限制。

#LINE Bot MCP Server能做什麼
LINE Bot MCP Server是LINE官方開源、連接AI代理與LINE官方帳號的MCP伺服器。把它加進Claude Desktop等MCP用戶端後,只要用一般的話說「傳訊息給這位使用者」「群發給所有好友」「這個月還剩多少則」「建立一個圖文選單」,AI代理就會替你呼叫Messaging API。經營LINE的LY Corporation於2025年4月在GitHub以line/line-bot-mcp-server公開,採Apache 2.0授權。截至2026年10月,npm上的最新版本是0.5.0,README仍標示為供試用的預覽版。
先說清楚誰提供什麼:這個MCP伺服器是LINE的工具;LineBot.pro沒有MCP伺服器,也沒有提供MCP整合。本文說明LINE的伺服器如何運作、如何安全設定、有哪些做不到的事,最後再介紹我們這類工具可以怎麼搭配。
#它是什麼、不是什麼
- 它是讓你或團隊成員透過AI助理操作LINE官方帳號的方式:傳訊息、群發、讀取部分帳號資料、管理圖文選單。
- 它不是聊天機器人。伺服器沒有Webhook,因此收不到顧客的訊息,只在有人對AI代理下指令時才動作。要自動回覆顧客,仍需要以Webhook運作的機器人(見為LINE機器人與LIFF應用加入AI功能),或現成的LINE AI聊天機器人。
- 它還沒完成。 LINE的公告表示目前為試行公開,尚未支援Messaging API的所有功能。
#什麼是Model Context Protocol(MCP)
Model Context Protocol(MCP)是把AI應用程式連接到外部系統的開放標準。Anthropic於2024年11月25日開源釋出,目前已有許多AI應用與開發工具支援,例如Claude、ChatGPT、Visual Studio Code和Cursor(modelcontextprotocol.io,2026年10月資料)。
需要知道的角色有三個:
| 角色 | 是什麼 | 在本文中 |
|---|---|---|
| MCP主機(host) | 你對話的AI應用程式 | Claude Desktop或其他MCP用戶端 |
| MCP用戶端(client) | 主機與每個伺服器之間建立的連線 | 由Claude Desktop自動建立 |
| MCP伺服器(server) | 提供工具(tools)、資源與提示的程式 | LINE Bot MCP Server |
主機會詢問每個伺服器提供哪些工具;當模型決定使用某個工具時,主機把呼叫送到伺服器,再把結果交回模型。MCP定義了兩種傳輸方式:由主機啟動、在你自己電腦上執行的stdio,以及給遠端伺服器使用的Streamable HTTP。LINE Bot MCP Server使用stdio:它在你的電腦上執行,Channel access token只存在你本機的設定檔中。
你 → AI應用程式(MCP主機,例如Claude Desktop)
│ stdio
▼
LINE Bot MCP Server(在你的電腦上執行)
│ HTTPS + channel access token
▼
LINE Messaging API → 你的LINE官方帳號 → 好友
#工具清單與必要條件
npm上的0.5.0版提供以下工具(2026年10月14日查閱README與套件內容):
| 工具 | 功能 | 主要輸入 | 是否消耗訊息則數 |
|---|---|---|---|
| push_text_message | 傳文字訊息給一位使用者 | userId(或DESTINATION_USER_ID)、message.text | 是,1則 |
| push_flex_message | 傳Flex訊息(單一泡泡或輪播)給一位使用者 | userId、message.altText、message.contents | 是,1則 |
| broadcast_text_message | 傳文字訊息給所有好友 | message.text | 是,每位收到的好友1則 |
| broadcast_flex_message | 傳Flex訊息給所有好友 | message.altText、message.contents | 是,每位收到的好友1則 |
| get_profile | 取得使用者的顯示名稱、大頭貼網址、狀態消息與語言 | userId | 否 |
| get_message_quota | 取得每月訊息上限與目前用量 | 無 | 否 |
| get_rich_menu_list | 列出帳號的圖文選單 | 無 | 否 |
| create_rich_menu | 用1到6個動作建立圖文選單,產生並上傳簡單的圖片,再設為預設 | chatBarText、actions | 否 |
| delete_rich_menu | 刪除圖文選單 | richMenuId | 否 |
| set_rich_menu_default | 把圖文選單設為預設 | richMenuId | 否 |
| cancel_rich_menu_default | 取消預設圖文選單 | 無 | 否 |
| get_follower_ids | 分頁取得好友的使用者ID | start、limit | 否 |
GitHub上的README另列出get_group_summary(取得群組聊天的名稱與圖示),但我們查閱時npm的0.5.0套件尚未包含,預計會在之後的版本加入。
使用前要知道的事:
- 推播與群發會消耗每月訊息則數。 群發時,每位收到的好友算1則。LINE的回覆訊息不計則數,但這個伺服器沒有Webhook、拿不到回覆權杖(reply token),所以無法回覆。
- get_follower_ids只有認證帳號或進階帳號能使用,這是Messaging API本身的限制。
- create_rich_menu會用內建範本加上你的按鈕名稱畫出簡單的圖片,並把這個選單設為所有人的預設,取代目前的預設選單。此外,透過Messaging API設定的預設圖文選單,優先順序高於在LINE官方帳號管理後台設定的選單(Messaging API參考文件)。請先用測試帳號試。
- push_flex_message與broadcast_flex_message的Flex JSON由模型撰寫。 送出前先檢查,或把已驗證過的JSON交給AI代理。
#必要條件
- 使用npx時需要Node.js 22以上,或改用Docker。
- 已啟用Messaging API的LINE官方帳號。
- 該帳號的長期Channel access token;測試時可另外準備自己的使用者ID作為預設收件人(選填)。
#在Claude Desktop設定的步驟
#步驟1:啟用Messaging API
在LINE官方帳號管理後台開啟設定 → Messaging API並啟用。系統會在LINE Developers Console的提供者(Provider)底下建立Messaging API頻道。還沒有帳號的話,先參考LINE官方帳號申請與設定教學。實驗時請使用與正式帳號分開的測試帳號。
#步驟2:取得Channel access token與你的使用者ID
在LINE Developers Console開啟頻道:
- Messaging API分頁:發行Channel access token (long-lived),這就是CHANNEL_ACCESS_TOKEN。
- Basic settings分頁:複製Your user ID(以U開頭),設為DESTINATION_USER_ID,測試訊息就會傳給你自己。
#步驟3:把伺服器加進Claude Desktop
在Claude Desktop開啟Settings → Developer → Edit Config,會開啟claude_desktop_config.json(macOS位於~/Library/Application Support/Claude/,Windows位於%APPDATA%\Claude\)。加入LINE README中的設定:
{
"mcpServers": {
"line-bot": {
"command": "npx",
"args": ["@line/line-bot-mcp-server"],
"env": {
"NPM_CONFIG_IGNORE_SCRIPTS": "true",
"CHANNEL_ACCESS_TOKEN": "FILL_HERE",
"DESTINATION_USER_ID": "FILL_HERE"
}
}
}
}
| 變數 | 必填 | 說明 |
|---|---|---|
| CHANNEL_ACCESS_TOKEN | 是 | 步驟2發行的長期Channel access token |
| DESTINATION_USER_ID | 否 | 工具呼叫未指定userId時的預設收件人 |
| NPM_CONFIG_IGNORE_SCRIPTS | 否(LINE的範例有加) | 讓npm在npx下載套件時不執行安裝腳本 |
npx每次都會抓最新版。由於專案仍是預覽版,可以固定版本,例如"@line/line-bot-mcp-server@0.5.0",再有計畫地升級。
#另一種方式:Docker
LINE的README是從原始碼自行建置映像檔,並未列出現成的映像檔:
git clone https://github.com/line/line-bot-mcp-server.git
cd line-bot-mcp-server
docker build -t line/line-bot-mcp-server .
{
"mcpServers": {
"line-bot": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "CHANNEL_ACCESS_TOKEN",
"-e", "DESTINATION_USER_ID",
"line/line-bot-mcp-server"
],
"env": {
"CHANNEL_ACCESS_TOKEN": "FILL_HERE",
"DESTINATION_USER_ID": "FILL_HERE"
}
}
}
}
#步驟4:重新啟動並測試
完全結束Claude Desktop再重新開啟,LINE的工具會出現在Connectors中。接著試試:
用LINE傳「Claude向你問好」給我。
Claude會在執行工具前請你核准,接著以DESTINATION_USER_ID呼叫push_text_message。訊息會送到你的LINE,並計入帳號1則訊息。
如果工具沒有出現,請查看MCP記錄檔(macOS為~/Library/Logs/Claude,Windows為%APPDATA%\Claude\logs)。想不透過Claude測試工具,可依LINE的README使用MCP Inspector:
# inside a clone of line/line-bot-mcp-server
npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.js \
-e CHANNEL_ACCESS_TOKEN="YOUR_CHANNEL_ACCESS_TOKEN" \
-e DESTINATION_USER_ID="YOUR_USER_ID"
#可以請AI代理做哪些事
| 你說 | AI代理呼叫的工具 | 是否消耗則數 |
|---|---|---|
| 「這個月還能傳幾則?」 | get_message_quota | 否 |
| 「告訴U1234…今天店裡6點打烊。」 | push_text_message | 是,1則 |
| 「做一張拿鐵買一送一的卡片,附菜單按鈕,先傳給我看。」 | push_flex_message | 是,1則 |
| 「群發:週一國定假日公休。」 | broadcast_text_message | 是,每位好友1則 |
| 「這位顧客的LINE語言設定是什麼?」 | get_profile | 否 |
| 「我們有哪些圖文選單?哪個是預設?」 | get_rich_menu_list | 否 |
| 「建立一個有菜單、預約、地圖按鈕的圖文選單。」 | create_rich_menu | 否,但會取代預設選單 |
#Flex訊息
使用push_flex_message與broadcast_flex_message時,AI代理會把Flex容器(單一泡泡或輪播)放在message.contents,並附上顯示在通知中的altText。最精簡的泡泡範例:
{
"type": "bubble",
"hero": {
"type": "image",
"url": "https://example.com/latte.jpg",
"size": "full",
"aspectRatio": "20:13",
"aspectMode": "cover"
},
"body": {
"type": "box",
"layout": "vertical",
"contents": [
{ "type": "text", "text": "Iced latte: buy 1 get 1", "weight": "bold", "size": "lg", "wrap": true },
{ "type": "text", "text": "Today until 6 pm", "size": "sm", "color": "#666666" }
]
},
"footer": {
"type": "box",
"layout": "vertical",
"contents": [
{ "type": "button", "style": "primary", "action": { "type": "uri", "label": "See menu", "uri": "https://example.com/menu" } }
]
}
}
圖片必須是LINE能存取的HTTPS網址。先傳給自己確認,再群發。
#適合的用法
- 老闆與店長的工作: 活動前確認剩餘則數、傳一次性的訊息給提出需求的顧客、公告臨時公休。
- 製作與測試: 請AI代理做一則Flex訊息,推播到自己的帳號,在手機上確認效果。
- 帳號整理: 列出圖文選單、切換預設、刪除舊選單。
不適合:自動回覆顧客、預約發送活動、只發給部分受眾。這個伺服器沒有Webhook、沒有排程,也沒有分眾發送(narrowcast)。
#加入自己的MCP工具
LINE的工具是通用型的:例如push_text_message會傳給模型指定的任何使用者ID。用在營運上時,自己寫一個小型MCP伺服器,讓每個工具只做一件事、收件人從你的資料庫查出來,通常更安全。模型可以要求「傳送訂單A1024的狀態」,但不能決定誰收到。
// shop-line-tools.ts: your own MCP server, next to LINE's
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
import { messagingApi } from "@line/bot-sdk"
import { z } from "zod"
import { findOrder } from "./orders" // your own database code
const line = new messagingApi.MessagingApiClient({
channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN!,
})
const server = new McpServer({ name: "shop-line-tools", version: "1.0.0" })
server.registerTool(
"send_order_status",
{
title: "Send order status",
description: "Look up an order and push its current status to the customer who placed it.",
inputSchema: { orderId: z.string().describe("Order number, for example A1024") },
annotations: { destructiveHint: true },
},
async ({ orderId }) => {
const order = await findOrder(orderId)
if (!order?.lineUserId) {
return { content: [{ type: "text", text: "Order not found, or the customer isn't linked to LINE." }], isError: true }
}
// The recipient comes from your database, never from the model.
await line.pushMessage({
to: order.lineUserId,
messages: [{ type: "text", text: "Order " + orderId + ": " + order.statusLabel }],
})
return { content: [{ type: "text", text: "Sent the status of order " + orderId + "." }] }
},
)
await server.connect(new StdioServerTransport())
這個範例的重點:
- 使用官方的@line/bot-sdk(第11版需要Node.js 22以上)與TypeScript版MCP SDK。LINE自己的伺服器也是用registerTool與stdio傳輸方式寫成的。
- 以ES模組執行(使用頂層await),記錄請輸出到stderr而不是stdout,因為在stdio中stdout用來傳遞協定內容。
- 這個工具推播的訊息,和一般推播一樣會消耗則數。
在同一個設定檔中,和LINE的伺服器並列註冊:
{
"mcpServers": {
"line-bot": {
"command": "npx",
"args": ["@line/line-bot-mcp-server"],
"env": {
"NPM_CONFIG_IGNORE_SCRIPTS": "true",
"CHANNEL_ACCESS_TOKEN": "FILL_HERE",
"DESTINATION_USER_ID": "FILL_HERE"
}
},
"shop-line-tools": {
"command": "node",
"args": ["/absolute/path/to/dist/shop-line-tools.js"],
"env": { "CHANNEL_ACCESS_TOKEN": "FILL_HERE" }
}
}
}
#雙向的機器人仍需要Webhook
MCP伺服器只在AI代理呼叫時才動作。要回應顧客的訊息(用不計則數的回覆API在幾秒內回覆),需要一個會驗證LINE簽章並回覆的Webhook端點。那是另一種架構,請見為LINE機器人與LIFF應用加入AI功能與LINE聊天機器人開發教學。
#安全性、訊息則數與使用建議
| 風險 | 做法 |
|---|---|
| Channel access token外洩,任何人都能以你的帳號名義發訊息 | 存放在本機設定檔或密鑰管理服務,不要放進程式碼庫或共用的提示中。外洩時到LINE Developers Console重新發行。 |
| AI代理傳錯或群發錯內容 | 保持「執行工具前需核准」。LINE把傳送類與圖文選單類工具標記為破壞性操作(destructiveHint),讓用戶端能提醒你。已送出的訊息無法編輯或刪除。 |
| 一次群發就用完每月則數 | 先請它執行get_message_quota。群發時每位收到的好友算1則。 |
| create_rich_menu取代顧客看到的選單 | 在另一個LINE官方帳號測試,並記下你設計好的選單ID,以便用set_rich_menu_default換回來。 |
| 顧客資料留在AI對話中 | get_profile會回傳名稱、大頭貼與狀態消息。只取必要的資料,並遵守當地個資法規(台灣與泰國的個人資料保護法、日本的個人資訊保護法)。 |
| 預覽版軟體會變動 | 固定npm版本,升級前先閱讀版本說明。 |
值得養成的習慣:
- 用測試用的LINE官方帳號實驗(免費方案就夠)。
- 顧客會看到的文字,請明確指定內容,並要求AI代理在送出前先給你看。
- 團隊經常執行的操作,改用功能單一的自訂工具,而不是通用工具。
#LineBot.pro的角色
LineBot.pro沒有MCP伺服器,本文的步驟也都不需要LineBot.pro。不過在LINE伺服器的周邊,有三個地方用得上:
- 設計好的Flex訊息。 AI圖文訊息產生器會做出一張Flex卡片(1200 × 675 px主圖、標題、內文與按鈕)和它的JSON,每張8點。複製JSON,請AI代理用push_flex_message送出,就不必讓模型即興排版。
- 設計好的圖文選單。 create_rich_menu畫的是簡單的範本圖片;AI圖文選單產生器會產生符合品牌風格的1到6格圖片與JSON,每次10點,再由你在LINE官方帳號管理後台上傳。
- 不寫程式的群發。 如果只是要發活動訊息,LineBot.pro的活動功能會用AI做出訊息,群發給所有好友或你貼上的使用者ID清單,可立即或預約發送。發送本身0點,LINE的則數照常計算。
需要自訂MCP工具、以Webhook運作的機器人,或與自家系統串接?請洽LINE API客製開發。新帳號送50點,點數為無月費的單次購買點數包。
#常見問題
Q: LINE Bot MCP Server是LINE官方的嗎?
是。由經營LINE的LY Corporation在GitHub的line組織下公開,並於2025年4月在LINE Developers網站公告,目前仍是預覽版。
Q: 要付費嗎?
伺服器本身是開源軟體(Apache 2.0),可以免費執行。不過它推播或群發的訊息會計入LINE官方帳號的每月則數,你使用的AI應用程式也可能另外收費。
Q: 可以用它自動回覆顧客嗎?
不行。它沒有Webhook,看不到傳進來的訊息,只在你對AI代理下指令時才動作。自動回覆需要以Webhook運作的機器人。
Q: 哪些AI應用程式能用?
能在本機啟動stdio伺服器的MCP用戶端都可以。LINE的README提供了Claude Desktop與Cline的設定範例。
Q: LineBot.pro有MCP伺服器嗎?
沒有。LineBot.pro用AI製作圖文選單、Flex訊息與橫幅,提供關鍵字機器人與活動群發。你可以把LineBot.pro產生的Flex JSON交給LINE的MCP伺服器發送;自訂MCP工具則以客製開發方式承接。
Q: 把Channel access token交給AI代理安全嗎?
權杖存放在你本機的設定檔,伺服器也在你的電腦上執行;但任何能使用這個權杖的程式,都能傳訊息給你的好友。請先用測試帳號、保持執行前核准,並在外洩時立即重新發行。
下一步:
- 到LINE的GitHub README查看最新工具
- 用為LINE機器人與LIFF應用加入AI功能打造Webhook機器人
- 製作Flex訊息卡片,交給AI代理發送
- 洽詢LINE API客製開發
關於 LineBot.pro
LineBot.pro 是專為 LINE 官方帳號打造的 AI 工具,可製作圖文選單、圖文訊息與橫幅,群發行銷活動,並依關鍵字自動回覆。這些指南由我們的團隊根據 LINE Messaging API 的實務經驗撰寫。
聯絡我們相關文章

為LINE機器人與LIFF應用加入AI功能:架構與程式碼(2026)
給開發者的LINE AI實作指南:符合LINE限制的Webhook架構、用@google/genai產生有資料依據的Gemini回答、讓AI挑選核准過的回覆、顧客傳來的照片、LIFF與LINE MINI App的安全性、成本,以及正式環境的真實案例。
閱讀更多
LINE Bot 開發教學 2026:Node.js 與 Python 實作
用 Messaging API 一步步開發 LINE Bot:啟用 Channel、驗證 Webhook 簽章、用 Flex Message 與快速回覆回應、以 postback 完成預約流程、加入只根據 FAQ 回答的 AI,最後部署上線。附 Node.js(@line/bot-sdk v11)與 Python(line-bot-sdk v3)程式碼。
閱讀更多
@line/bot-sdk Express 中介軟體實作範例(v11)
@line/bot-sdk v11 的 Express + TypeScript Webhook 完整範例:middleware() 該放哪裡、validateSignature 在 Node.js、Python、PHP 的用法、搭配 Flex Message 的 replyMessage、sentMessages 與引用 token,以及實際會遇到的錯誤。
閱讀更多