/ ディレクトリ / プレイグラウンド / LINE Bot
● 公式 line 🔑 自分のキーが必要

LINE Bot

作者 line · line/line-bot-mcp-server

LINE Messaging APIを通じて、ユーザーやグループにLINEメッセージ、リッチなFlexバブル、画像を送信できます。日本・台湾・タイ向けの通知フローに最適です。

LINE公式MCPはLINE Messaging APIをラップしています。テキスト、スタンプ、画像、Flex Messageバブルを、userIdによる個別ユーザーへの送信や、グループID・ルームIDへの送信が可能です。ブロードキャスト(全フォロワー向け)、ナローキャスト(セグメント配信)、プロフィール取得にも対応しています。無料枠を超えるとメッセージ送信料が発生します。

なぜ使うのか

主な機能

ライブデモ

実際の動作

line-bot.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "-y",
        "@line/line-bot-mcp-server"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "-y",
        "@line/line-bot-mcp-server"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "-y",
        "@line/line-bot-mcp-server"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "-y",
        "@line/line-bot-mcp-server"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "line-bot",
      "command": "npx",
      "args": [
        "-y",
        "@line/line-bot-mcp-server"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "line-bot": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@line/line-bot-mcp-server"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add line-bot -- npx -y @line/line-bot-mcp-server

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: LINE Bot

フォーマット済みの運用アラートをLINE経由でオンコールエンジニアに送信

👤 LINEを標準のページャーとして使用している日本・台湾のSREチーム ⏱ ~25 min intermediate

使うタイミング: Sentry/Prometheusのアラートを、テキストの壁ではなく整ったFlexカードで特定のエンジニアにLINEで通知したい場合。

前提条件
  • LINE公式アカウント + チャネルアクセストークン — developers.line.biz → チャネル → Messaging API → トークン発行
  • エンジニアのuserId(ボットのWebhookイベントから取得)followまたはmessageイベントからuserIdを取得し、ユーザーDBに保存
フロー
  1. Flexバブルを設計する
    Sentryアラート用のFlex Messageバブルを設計してください:ヘッダー(課題タイトル)、ボディ(イベント数、リリース、影響ユーザー数)、ボタン(Sentryで開く、Ack)。✓ コピーしました
    → Claudeが検証可能な有効なFlex JSON
  2. オンコールユーザーにプッシュ送信
    このFlexメッセージをuserId U1234567890abcdefに、altText 'Sentryアラート: <title>'でプッシュしてください。✓ コピーしました
    → messageIdが返却され、400エラーなし
  3. ユーザーがボットをブロックした場合のフォールバック処理
    プッシュが400(ユーザーがブロック)で失敗した場合、代わりにセカンダリオンコールのuserIdリストにマルチキャストし、元の失敗をログに記録してください。✓ コピーしました
    → グレースフルなフォールバックパス

結果: 元のイベント発生から2秒以内に、洗練されたアクション可能なアラートがLINEに届きます。

注意点
  • altTextは必須かつ400文字上限 — 未設定だとプッシュがサイレントに失敗する — 必ずaltTextを含め、Flexの要約として400文字以内に収める
  • ボットのフレンドでないユーザーへのプッシュは400エラーになる — 実際のWebhookイベントで取得したuserIdにのみプッシュする — userIdは推測できない
組み合わせ: sentry

月次プロダクトアップデートを全フォロワーにブロードキャスト

👤 LINE公式アカウントを運用しているマーケティングチーム ⏱ ~20 min intermediate

使うタイミング: 月に一度、3つのヘッドラインとディープリンクを含むダイジェストを全フォロワーに配信する場合。

前提条件
  • 十分なメッセージ配信枠 — getMessageQuotaで現在の配信枠を確認。LINEプッシュメッセージはプランごとに従量課金
フロー
  1. 送信前に配信枠を確認
    現在のメッセージ配信枠の消費量と残数を取得してください。少なくとも<follower_count>メッセージ分の残りがあることを確認してください。✓ コピーしました
    → 残り配信枠の数値
  2. Flexカルーセルを作成
    3つのバブル(タイトル、画像、CTAボタン)を持つFlexカルーセルを作成してください。入力: [トピック, 画像URL, リンク] × 3。✓ コピーしました
    → 有効なFlexカルーセルJSON
  3. ブロードキャスト送信
    このカルーセルをaltText '<brand>月次アップデート'で全フォロワーにブロードキャストしてください。✓ コピーしました
    → 200 OK、監査用のrequestId

結果: リダイレクトリンクによるクリックトラッキング付きで、ブランド統一された月次ブロードキャストが全フォロワーに届きます。

注意点
  • ブロードキャストはコストが高い — 大量のリストでは1回の送信で無料枠を使い切る可能性がある — 緊急でないコンテンツはセグメント付きナローキャストを検討するか、送信前にプランをアップグレード

チームのLINEグループにClaudeがスタンドアップサマリーを投稿

👤 デイリースタンドアップをLINEグループで行っているチーム ⏱ ~20 min intermediate

使うタイミング: 毎朝9時に、前日のLinear/Sentryのアクティビティを要約してショートダイジェストを投稿する場合。

前提条件
  • 対象チャットのgroupId — ボットがグループに追加された際のjoinまたはmessageイベントから取得
フロー
  1. 上流でダイジェストを組み立てる
    昨日のLinearのマージ済みPRとSentryの主要な新規課題を取得し、5つの箇条書きにまとめてください。✓ コピーしました
    → 整理された5項目のマークダウン
  2. グループにプッシュ送信
    テキストメッセージ(マークダウンなし。LINEはマークダウンをレンダリングしない)を、5つの箇条書きをプレーンテキスト行としてgroupId Cxxxxxにプッシュしてください。✓ コピーしました
    → 200 OK
  3. 失敗を明示的に通知
    プッシュが失敗した場合(ボットがグループから削除された場合)、失敗を/logs/line-standup.logに記録し、メールで通知してください。✓ コピーしました
    → 失敗時の監査証跡

結果: 障害時には自動復旧し、問題があればアラートを出す、信頼性の高いデイリースタンドアップダイジェスト。

注意点
  • ボットがグループから削除されるとプッシュがサイレントに失敗するleave Webhookイベントを購読し、DB上でそのグループを非アクティブにマーク
  • LINEのテキストメッセージはMarkdownやHTMLをレンダリングしない — 絵文字付きのプレーンテキストを使用するか、リッチフォーマットにはFlexメッセージに切り替え
組み合わせ: sentry · linear

地理的・行動セグメントにキャンペーンをナローキャスト配信

👤 ターゲットプッシュを実施するグロースチーム ⏱ ~20 min advanced

使うタイミング: 全リストではなく、東京エリアのフォロワーだけにオフラインイベントを通知したい場合。

前提条件
  • LINE Official Account Managerで定義済みのオーディエンス — OA Manager UIでオーディエンス(地域、タグ、またはuserIdリストのアップロード)を作成
フロー
  1. オーディエンス一覧を取得
    LINE公式アカウントの全オーディエンスを一覧表示してください。名前、サイズ、最終更新日を表示。✓ コピーしました
    → オーディエンスカタログ
  2. セグメント専用メッセージを作成
    東京ミートアップ用のFlexカードを作成してください — 場所、日時、CTA。東京エリアのユーザー向けにコピーを調整。✓ コピーしました
    → ターゲット向けFlex JSON
  3. ナローキャスト送信
    このFlexをaudienceId <id>にナローキャストしてください。リクエストが受理されたことを確認。✓ コピーしました
    → 202 Accepted + requestId

結果: インプレッション単価を抑え、クリック率を高めた精密なキャンペーン配信。

注意点
  • 50人未満のオーディエンスへのナローキャストはプライバシー上の理由で失敗する — セグメントが小さい場合は、ユーザーリストへの個別プッシュにフォールバック

組み合わせ

他のMCPと組み合わせて10倍の力を

line-bot + sentry

クリティカルなSentry課題が発生した際、オンコール担当にFlexアラートを自動プッシュ

プロジェクトweb-prodで新しいSentry課題が5分間に100イベントを超えた場合、オンコールのLINEユーザーにFlexアラートをプッシュしてください。✓ コピーしました
line-bot + linear

P0のLinear課題が作成された際にLINEグループに通知

Linear課題にP0ラベルが付いたら、タイトルとURLを含むテキストメッセージをgroupId Cxxxxにプッシュしてください。✓ コピーしました
line-bot + monday

本日期限のmonday.comアイテムのデイリーダイジェストをプッシュ

毎朝9時に、本日期限のmonday.comアイテムを収集し、Flexカルーセルにフォーマットして、私のLINEユーザーにプッシュしてください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
push_message to: userId|groupId|roomId, messages: Message[] 既知の受信者IDに送信 1 message charge
multicast to: userId[], messages: Message[] 同一メッセージを500人以下の特定ユーザーに送信 1 charge per recipient
broadcast messages: Message[] 全フォロワーに一斉配信。事前に配信枠を確認すること 1 charge per follower
narrowcast messages, recipient (audience object), filter? オーディエンス別のターゲット配信 1 charge per recipient
get_profile userId ユーザーの表示名でメッセージをパーソナライズ free
get_message_quota ブロードキャスト/ナローキャスト送信前に確認 free

コストと制限

運用コスト

APIクォータ
LINE APIはリクエスト数ではなくメッセージ数で従量課金されます。無料枠: 開発者トライアルで月500通、ライトプランで月200通の無料プッシュメッセージ。
呼び出しあたりのトークン
テキストメッセージ: リクエストあたり約200トークン。Flexメッセージ: バブルの複雑さに応じて500〜2000トークン。
金額
ライトプラン無料(月200通)、スタンダード月額¥5,000(最大3万通)、プロ月額¥15,000(4.5万通以上)。
ヒント
可能な限りreply_messageを使用してください — リプライは無料です。replyTokenがない場合のみプッシュを使用してください。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Channel access token (long-lived, Messaging API)
認証情報の保管: CHANNEL_ACCESS_TOKENCHANNEL_SECRETを環境変数に格納
データ送信先: すべてのリクエストはapi.line.meおよびapi-data.line.meへ送信
絶対に付与しない: Channel secret to client-side code — it's for webhook signature verification only

トラブルシューティング

よくあるエラーと対処法

401 Invalid channel access token

トークンが期限切れまたは無効化されています。developers.line.biz → チャネル → Messaging APIで再発行してください。

確認: curl -H 'Authorization: Bearer $CHANNEL_ACCESS_TOKEN' https://api.line.me/v2/bot/info
400 The property, altText, must be specified

テキスト以外のメッセージ(画像、Flex)にはaltTextが必須です。追加してください。

400 The user hasn't added the LINE Official Account as a friend

任意のuserIdにはプッシュできません — ボットにメッセージを送信またはフォローしたuserIdのみ有効です。この受信者にはreplyTokenを使用してください。

429 Monthly limit reached

プランの配信枠に到達しました。プランをアップグレードするか来月まで待ってください。リプライは引き続き無料です。

確認: Call get_message_quota

代替案

LINE Bot 他との比較

代替案代わりに使う場面トレードオフ
Slack MCPチームがSlackを利用している場合(主に欧州・北米)対象ユーザー層が異なる。日本・台湾・タイのコンシューマー向けにはLINEが優位
Telegram MCPボットの対象がTelegramユーザーの場合地域的な優位性が異なる。公式アカウント/ブロードキャスト枠の制約なし
WhatsApp Cloud API MCP東南アジア・中南米のコンシューマーにリーチする必要がある場合BSPオンボーディングが重い。テンプレート承認がより厳格

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る