/ 디렉터리 / 플레이그라운드 / LINE Bot
● 공식 line 🔑 본인 키 필요

LINE Bot

제작: line · line/line-bot-mcp-server

LINE Messaging API를 통해 사용자 또는 그룹에 LINE 메시지, 리치 Flex 버블, 이미지를 전송합니다 — JP/TW/TH 알림 흐름에 이상적입니다.

LINE의 공식 MCP는 LINE Messaging API를 감싸고 있습니다. 텍스트, 스티커, 이미지 및 Flex Message 버블을 userId로 사용자에게 또는 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이 표준 페이저인 JP/TW 기반 SRE 팀 ⏱ ~25 min intermediate

언제 쓸까: Sentry/Prometheus 알림이 깔끔한 Flex 카드로 LINE에서 특정 엔지니어를 핑하도록 하려면, 벽처럼 쌓인 텍스트 대신.

사전 조건
  • LINE Official Account + 채널 액세스 토큰 — developers.line.biz → Channel → Messaging API → Issue token
  • 엔지니어의 userId(봇의 웹훅 이벤트에서)follow 또는 message 이벤트에서 userId를 캡처하여 사용자 DB에 저장
흐름
  1. Flex 버블 디자인
    Sentry 알림에 대한 Flex Message 버블 설계: 헤더(이슈 제목), 본문(이벤트 수, 릴리스, 영향받은 사용자), 버튼(Sentry에서 열기, 승인).✓ 복사됨
    → Claude가 검증할 수 있는 유효한 Flex JSON
  2. 대기 중인 사용자에게 푸시
    이 Flex 메시지를 userId U1234567890abcdef로 altText 'Sentry alert: <title>'와 함께 푸시합니다.✓ 복사됨
    → messageId 반환됨, 400 없음
  3. 사용자가 봇을 차단한 경우 폴백 처리
    푸시가 400(사용자 차단됨)로 실패하면, 대신 보조 대기 사용자 ID로 멀티캐스트하고 원래 실패를 기록합니다.✓ 복사됨
    → 우아한 폴백 경로

결과: 기본 이벤트로부터 2초 이내에 LINE에서 세련되고 실행 가능한 알림.

함정
  • altText 필수이며 400자로 제한됨 — 없으면 푸시가 자동으로 실패함 — 항상 altText를 포함하세요; Flex를 요약하여 400자 이내로 유지하세요
  • 사용자가 봇의 친구가 아닌 상태에서 푸시하면 400 실패 — 실제 웹훅 이벤트에서 캡처한 userId에만 푸시하세요 — 추측할 수 없습니다
함께 쓰기: sentry

모든 팔로워에게 월간 제품 업데이트 브로드캐스트

👤 LINE OA 존재감이 있는 마케팅 팀 ⏱ ~20 min intermediate

언제 쓸까: 한 달에 한 번, 3개의 주요 항목과 딥 링크가 포함된 다이제스트를 모든 팔로워에게 전송합니다.

사전 조건
  • 충분한 메시징 할당량 — getMessageQuota로 현재 할당량 확인; LINE Push Messages는 플랜별로 측정됨
흐름
  1. 전송 전 할당량 확인
    현재 메시지 할당량 사용량과 남은 양 조회. 최소 <follower_count>개 메시지가 남아 있는지 확인하세요.✓ 복사됨
    → 남은 할당량 수
  2. Flex 캐러셀 작성
    3개 버블(제목, 이미지, CTA 버튼)이 있는 Flex 캐러셀 빌드. 입력: [주제, 이미지 URL, 링크] × 3.✓ 복사됨
    → 유효한 Flex 캐러셀 JSON
  3. 브로드캐스트
    이 캐러셀을 altText '<brand> monthly update'와 함께 모든 팔로워에게 브로드캐스트합니다.✓ 복사됨
    → 200 OK, 감시를 위한 requestId

결과: 리다이렉트 링크를 통한 클릭 추적이 포함된 브랜드 월간 브로드캐스트를 전체 팔로워에게 전달합니다.

함정
  • 브로드캐스트는 비싸다 — 큰 목록은 한 번에 무료 티어를 초과할 수 있음 — 긴급하지 않은 콘텐츠의 경우 세그먼트가 있는 나로우캐스트를 고려하세요; 또는 전송 전 플랜을 업그레이드하세요

Claude가 팀의 LINE 그룹에 스탠드업 요약을 게시하도록 허용

👤 일일 스탠드업이 LINE 그룹에 있는 팀 ⏱ ~20 min intermediate

언제 쓸까: 매일 아침 9시에 어제의 Linear/Sentry 활동을 요약하고 짧은 요약을 게시합니다.

사전 조건
  • 대상 채팅의 groupId — 봇이 그룹에 추가될 때 join 또는 message 이벤트에서 캡처
흐름
  1. 상류에서 요약 조합
    어제의 Linear 병합된 PR과 상위 새 Sentry 이슈를 가져옵니다. 5개 항목으로 요약하세요.✓ 복사됨
    → 깔끔한 5개 항목 마크다운
  2. 그룹으로 푸시
    마크다운이 없는 텍스트 메시지(LINE은 마크다운을 렌더링하지 않음)를 groupId Cxxxxx로 5개 항목을 일반 줄로 푸시합니다.✓ 복사됨
    → 200 OK
  3. 실패를 크게 승인
    푸시 실패(봇이 그룹에서 제거됨) 시 실패를 /logs/line-standup.log에 작성하고 이메일로 알립니다.✓ 복사됨
    → 실패 시 감시 추적

결과: 조용히 자가 치유되고 손상되면 알림을 주는 안정적인 일일 스탠드업 요약.

함정
  • 그룹에서 제거된 봇은 조용히 푸시 실패leave 웹훅 이벤트를 구독하고 DB에서 그룹을 비활성으로 표시하세요
  • LINE 텍스트 메시지는 Markdown 또는 HTML을 렌더링하지 않음 — 이모지가 있는 일반 텍스트를 사용하거나, 리치 포맷팅을 위해 Flex 메시지로 전환하세요
함께 쓰기: sentry · linear

지역별 또는 행동별 세그먼트로 캠페인 나로우캐스트

👤 타겟팅된 푸시를 실행하는 성장 팀 ⏱ ~20 min advanced

언제 쓸까: 전체 목록이 아닌 오직 도쿄 지역 팔로워만 오프라인 이벤트에 대해 핑하려면.

사전 조건
  • LINE Official Account Manager에 정의된 오디언스 — OA Manager UI에서 오디언스(지역, 태그, 업로드된 userId 목록) 생성
흐름
  1. 오디언스 나열
    우리 LINE OA의 모든 오디언스를 나열합니다. 이름, 크기, 마지막 업데이트를 표시하세요.✓ 복사됨
    → 오디언스 카탈로그
  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으로 레이블되면 groupId Cxxxx로 제목과 URL이 포함된 텍스트 메시지를 푸시합니다.✓ 복사됨
line-bot + monday

오늘 기한인 monday.com 항목의 일일 요약 푸시

매일 아침 9시에 오늘 기한인 monday.com 항목을 수집하고, Flex 캐러셀로 형식화하여 내 LINE 사용자에게 푸시합니다.✓ 복사됨

도구

이 MCP가 노출하는 것

도구입력언제 호출비용
push_message to: userId|groupId|roomId, messages: Message[] 알려진 수신자 id로 전송 1개 메시지 요금
multicast to: userId[], messages: Message[] <=500명의 특정 사용자에게 동일 메시지 수신자당 1개 요금
broadcast messages: Message[] 모든 팔로워에게 블래스트; 먼저 할당량 확인 팔로워당 1개 요금
narrowcast messages, recipient (audience object), filter? 오디언스별 타겟팅된 전송 수신자당 1개 요금
get_profile userId 사용자의 표시 이름으로 메시지 개인화 무료
get_message_quota 브로드캐스트/나로우캐스트 전 무료

비용 및 제한

운영 비용

API 쿼터
LINE API는 요청이 아닌 메시지로 측정됩니다. 무료 티어: 월 500개 무료 푸시 메시지(개발자 평가판) 또는 월 200개(라이트 플랜).
호출당 토큰
텍스트 메시지: ~200 토큰 요청. Flex 메시지: 버블 복잡도에 따라 500–2000 토큰.
금액
라이트 플랜 무료(월 200개 메시지), 표준 ¥5,000/월(최대 30k개 메시지), Pro ¥15,000/월(45k개 이상).
가능한 한 reply_message를 사용하세요 — 회신은 무료입니다. replyToken이 없을 때만 푸시하세요.

보안

권한, 시크릿, 파급범위

최소 스코프: 채널 액세스 토큰(장기, Messaging API)
자격 증명 저장: CHANNEL_ACCESS_TOKENCHANNEL_SECRET을 환경 변수에서
데이터 외부 송신: api.line.me 및 api-data.line.me에 대한 모든 호출
절대 부여 금지: 클라이언트측 코드에 채널 시크릿을 부여하지 마세요 — 웹훅 서명 검증 전용입니다

문제 해결

자주 발생하는 오류와 해결

401 Invalid channel access token

토큰이 만료되었거나 취소되었습니다. developers.line.biz → Channel → 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에 있음(대부분 유럽/NA)다른 오디언스; LINE은 JP/TW/TH 소비자에게 우위
Telegram MCP봇 대상이 Telegram 사용자다른 지역 지배; OA/브로드캐스트 할당량 없음
WhatsApp Cloud API MCPSEA/LATAM 소비자에게 도달해야 함더 무거운 BSP 온보딩; 더 엄격한 템플릿 승인

더 보기

리소스

📖 GitHub에서 공식 README 읽기

🐙 열린 이슈 보기

🔍 400+ MCP 서버 및 Skills 전체 보기