MCP server to control a LINE account from an AI assistant
LINE Self-Bot MCP
MCP (Model Context Protocol) server ที่ให้ AI assistant (Claude, ฯลฯ) ควบคุมบัญชี LINE ของคุณได้ — ดูรายการแชท, อ่าน/สรุปประวัติข้อความ, เช็คข้อความที่ยังไม่อ่าน, ส่ง/ตอบข้อความ, ดูรายชื่อสมาชิกกลุ่ม และอ่านรูปในแชท
⚠️ คำเตือน: เป็น self-bot (รันบนบัญชีผู้ใช้จริง ไม่ใช่ official account) — ผิด LINE Terms of Service และมีความเสี่ยงโดนแบนบัญชี แนะนำให้ใช้บัญชีรองสำหรับทดสอบเท่านั้น และเก็บ
storage.json(มี token) เป็นความลับ
ความสามารถ
- 🔐 Login ด้วย QR (เทอร์มินอล / เว็บ) หรือ authToken — token เก็บถาวร login ครั้งเดียวพอ
- 💬 ดูรายการแชท, อ่านประวัติ (ถอด E2EE อัตโนมัติ), เช็คข้อความที่ยังไม่อ่าน
- ✉️ ส่ง / ตอบข้อความ (รองรับ E2EE 1:1 และกลุ่ม)
- 📎 ส่งรูปภาพ / ไฟล์ / วิดีโอ / เสียง (จาก path, url หรือ base64)
- 👥 ดูรายชื่อสมาชิกในกลุ่ม
- 🖼️ อ่าน/ดาวน์โหลดรูปในแชท (ส่งให้ AI ดูเนื้อหาได้)
- 📡 รับข้อความเรียลไทม์
ติดตั้ง
ต้องมี Deno v2+:
curl -fsSL https://deno.land/install.sh | sh
clone แล้วติดตั้ง dependency:
git clone <repo-url> line-self-bot-mcp
cd line-self-bot-mcp
deno install
เข้าสู่ระบบ
Login ครั้งเดียว — token จะถูกเซฟใน storage.json แล้ว MCP server หยิบไปใช้ต่ออัตโนมัติ (รวมถึง sync E2EE key ให้เองตอน login กันปัญหา "invalid sender key")
สแกน QR ในเทอร์มินอล (ง่ายสุด):
deno task login
สแกน QR ผ่านหน้าเว็บ (เปิดเบราว์เซอร์ให้อัตโนมัติ, เหมาะกับเครื่อง remote):
deno task login:web # เปิด http://localhost:8770
เครื่อง remote: forward port ก่อน —
ssh -L 8770:localhost:8770 user@host
เปิดแอป LINE บนมือถือ → เพิ่มเพื่อน → QR code → สแกน เสร็จแล้วใช้งานได้เลย
เชื่อมกับ Claude
ใช้ absolute path ของ main.ts และ path เต็มของ deno (เผื่อ PATH ไม่เจอ)
Claude Code:
claude mcp add -s user line -- /path/to/deno run -A /abs/path/to/line-self-bot-mcp/main.ts
Claude Desktop — เพิ่มใน claude_desktop_config.json:
{
"mcpServers": {
"line": {
"command": "/path/to/deno",
"args": ["run", "-A", "/abs/path/to/line-self-bot-mcp/main.ts"]
}
}
}
ถ้ายังไม่ได้ login ไว้ก่อน สามารถ login ผ่าน tool ได้เลย:
line_login_web(เปิดเว็บ+เบราว์เซอร์),line_login(คืน QR เป็นรูป), หรือline_login_token
Tools
| Tool | หน้าที่ |
|------|---------|
เข้าสู่ระบบ
| Tool | หน้าที่ |
|------|---------|
| line_login | สแกน QR เข้าสู่ระบบ (คืนรูป QR inline) |
| line_login_web | เปิดหน้าเว็บ + เบราว์เซอร์ให้สแกน QR อัตโนมัติ |
| line_login_token | เข้าสู่ระบบด้วย authToken ที่มีอยู่แล้ว |
| line_status | เช็คสถานะ login + โปรไฟล์ |
อ่าน
| Tool | หน้าที่ |
|------|---------|
| line_list_chats | รายการแชท (กลุ่ม+เพื่อน) พร้อมข้อความล่าสุด |
| line_refresh_chats | sync เพื่อน/กลุ่มสดจาก server (เมื่อเพิ่งแอด/เข้ากลุ่มใหม่) |
| line_unread | แชทที่ยังไม่อ่าน + จำนวนข้อความค้าง |
| line_get_history | ประวัติข้อความย้อนหลัง (ถอด E2EE, อัปเดตล่าสุดเสมอ) |
| line_recent_messages | ข้อความเรียลไทม์ที่เข้ามาหลัง server เริ่ม |
| line_group_members | รายชื่อสมาชิกในกลุ่ม (+ ผู้สร้าง / คนที่ถูกเชิญ) |
| line_get_image | อ่าน/ดาวน์โหลดรูปในแชท ให้ AI ดูเนื้อหาได้ |
ส่ง
| Tool | หน้าที่ |
|------|---------|
| line_send_message | ส่ง / ตอบข้อความ (รองรับ replyTo) |
| line_send_image | ส่งรูปภาพ (จาก path / url / base64) |
| line_send_file | ส่งไฟล์ เอกสาร/วิดีโอ/เสียง (จาก path / url / base64) |
| line_send_flex | ส่ง Flex Message (ใช้ได้เฉพาะ official account — บัญชีผู้ใช้ทั่วไปส่งไม่ได้) |
ตั้งค่าเสียง (เตรียมสำหรับโทร)
| Tool | หน้าที่ |
|------|---------|
| line_audio_list | ตรวจไมค์/ลำโพงในเครื่องแบบไดนามิก (PulseAudio/PipeWire) |
| line_audio_set | เลือกไมค์/ลำโพงที่จะใช้ (ใส่ชื่อเต็มหรือบางส่วน) |
| line_audio_test | ทดสอบ — เล่นโทนออกลำโพง / วัดระดับไมค์ |
💡 ให้ AI ช่วยตั้งค่าเสียงได้: "ดูอุปกรณ์เสียงในเครื่อง" → "ใช้ headset เป็นไมค์กับลำโพง" → "ทดสอบเสียงหน่อย"
ตัวอย่างคำสั่งกับ AI
- "เช็คแชท LINE ที่ยังไม่อ่าน"
- "อ่านแชทกับ [ชื่อ] แล้วสรุปให้หน่อย"
- "ตอบ [ชื่อ] ว่า ..."
- "ส่งรูป /path/to/pic.jpg ไปหา [ชื่อ]"
- "ดูสมาชิกกลุ่ม [ชื่อกลุ่ม]"
โครงสร้าง
main.ts entry point — สร้าง server + service แล้ว connect stdio
login.ts ตัวช่วย login แบบสแกน QR (เทอร์มินอล / เว็บ)
storage.json session/token (ห้าม commit — อยู่ใน .gitignore)
src/
types.ts type ที่ใช้ร่วมกัน
config.ts path, port, ค่าคงที่ (media kind ฯลฯ)
browser.ts เปิดเบราว์เซอร์ข้าม OS
line/service.ts service layer — login, แชท, ประวัติ, ส่ง, E2EE, polling
web/login-page.ts หน้าเว็บ login (QR)
tools/ นิยาม MCP tools แยกตามหมวด
index.ts ลงทะเบียน tools ทั้งหมด
helpers.ts ok / json / guard
format.ts จัดรูปแบบข้อความ (เวลา, transcript)
login.ts tools: login / status
chats.ts tools: list / unread / history / group members
messages.ts tools: send / flex / recent
media.ts tools: get image
รัน / ทดสอบ
deno task start # รัน MCP server (stdio)
deno task inspect # เปิด MCP Inspector ทดสอบ tools แบบ interactive
ข้อจำกัด
- Flex Message ส่งจากบัญชีผู้ใช้ไม่ได้ — LINE จำกัดให้เฉพาะ official account (
INCOMPATIBLE_APP_VERSION) - เป็น unofficial client — โครงสร้าง LINE protocol อาจเปลี่ยนได้ตลอด
License
MIT