Skip to main content
Glama
acquo

LINE Bot MCP Server (SSE Support)

by acquo
README.md
[日本語版 READMEはこちら](README.ja.md)

# LINE Bot MCP Server (with SSE Support)

[![npmjs](https://badge.fury.io/js/%40line%2Fline-bot-mcp-server.svg)](https://www.npmjs.com/package/@line/line-bot-mcp-server)
[![Docker Hub](https://img.shields.io/docker/pulls/acquojp/line-bot-mcp-server-sse)](https://hub.docker.com/r/acquojp/line-bot-mcp-server-sse)

[Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) server implementation that integrates the LINE Messaging API to connect an AI Agent to the LINE Official Account.

![](/assets/demo.png)

> [!NOTE]
> This repository is a **fork** of the official [LINE Bot MCP Server](https://github.com/line/line-bot-mcp-server) with **additional SSE (Server-Sent Events) transport support**. The original repository only supports stdio transport.

## 🔄 Fork Information

- **Original Repository**: [line/line-bot-mcp-server](https://github.com/line/line-bot-mcp-server)
- **Fork Enhancement**: Added SSE transport support for web-based integrations
- **Docker Image**: Available on Docker Hub as [`acquojp/line-bot-mcp-server-sse:latest`](https://hub.docker.com/r/acquojp/line-bot-mcp-server-sse)

> [!NOTE]
> This repository is provided as a preview version. While we offer it for experimental purposes, please be aware that it may not include complete functionality or comprehensive support.

## Transport Support

This MCP server supports multiple transport protocols:

- **stdio** (default): Standard input/output for local integrations
- **SSE**: Server-Sent Events over HTTP for web-based integrations

## Tools

1. **push_text_message**
   - Push a simple text message to a user via LINE.
   - **Inputs:**
     - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set.
     - `message.text` (string): The plain text content to send to the user.
2. **push_flex_message**
   - Push a highly customizable flex message to a user via LINE.
   - **Inputs:**
     - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set.
     - `message.altText` (string): Alternative text shown when flex message cannot be displayed.
     - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message.
     - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.
3. **broadcast_text_message**
   - Broadcast a simple text message via LINE to all users who have followed your LINE Official Account.
   - **Inputs:**
     - `message.text` (string): The plain text content to send to the users.
4. **broadcast_flex_message**
   - Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account.
   - **Inputs:**
     - `message.altText` (string): Alternative text shown when flex message cannot be displayed.
     - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message.
     - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.
5. **get_profile**
   - Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.
   - **Inputs:**
     - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID.
6. **get_message_quota**
   - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.
   - **Inputs:**
     - None
7. **get_rich_menu_list**
   - Get the list of rich menus associated with your LINE Official Account.
   - **Inputs:**
     - None
8. **delete_rich_menu**
   - Delete a rich menu from your LINE Official Account.
   - **Inputs:**
     - `richMenuId` (string): The ID of the rich menu to delete.
9. **set_rich_menu_default**
    - Set a rich menu as the default rich menu.
    - **Inputs:**
      - `richMenuId` (string): The ID of the rich menu to set as default.
10. **cancel_rich_menu_default**
    - Cancel the default rich menu.
    - **Inputs:**
      - None

## Installation (Using npx)

requirements:
- Node.js v20 or later

### Step 1: Create LINE Official Account

This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa).

If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager).

### Step 2: Configure AI Agent

Please add the following configuration for an AI Agent like Claude Desktop or Cline.

Set the environment variables or arguments as follows:

- `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token).
- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id).
- `MCP_TRANSPORT`: (optional) Transport protocol to use. Options: `stdio` (default), `sse`
- `MCP_PORT`: (optional) Port for SSE transport. Default: `3000`

#### Using stdio transport (default)

```json
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "@line/line-bot-mcp-server"
      ],
      "env": {
        "CHANNEL_ACCESS_TOKEN" : "FILL_HERE",
        "DESTINATION_USER_ID" : "FILL_HERE"
      }
    }
  }
}
```

#### Using SSE transport

```json
{
  "mcpServers": {
    "line-bot": {
      "command": "npx",
      "args": [
        "@line/line-bot-mcp-server"
      ],
      "env": {
        "CHANNEL_ACCESS_TOKEN" : "FILL_HERE",
        "DESTINATION_USER_ID" : "FILL_HERE",
        "MCP_TRANSPORT" : "sse",
        "MCP_PORT" : "3000"
      }
    }
  }
}
```

For SSE transport, the server will start an HTTP server with the following endpoints:
- `GET /sse` - Establish SSE connection
- `POST /messages` - Send messages to the server
- `GET /health` - Health check endpoint

## Installation (Using Docker)

### Option A: Use Pre-built Docker Image (Recommended)

You can use the pre-built Docker image from Docker Hub without building locally:

```bash
# Pull the latest image
docker pull acquojp/line-bot-mcp-server-sse:latest

# Run directly
docker run --rm -p 3000:3000 \
  -e CHANNEL_ACCESS_TOKEN="your_token" \
  -e DESTINATION_USER_ID="your_user_id" \
  acquojp/line-bot-mcp-server-sse:latest
```

### Option B: Build from Source

### Step 1: Create LINE Official Account

This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa).

If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager).

### Step 2: Build line-bot-mcp-server image

Clone this repository:

```bash
git clone https://github.com/your-username/line-bot-mcp-server.git
```

Build the Docker image:

```bash
docker build -t line-bot-mcp-server-sse .
```

### Step 3: Configure AI Agent

Please add the following configuration for an AI Agent like Claude Desktop or Cline.

Set the environment variables or arguments as follows:

- `mcpServers.args`: (required) The path to `line-bot-mcp-server`.
- `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token).
- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required.
You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id).
- `MCP_TRANSPORT`: (optional) Transport protocol to use. Options: `stdio` (default), `sse`
- `MCP_PORT`: (optional) Port for SSE transport. Default: `3000`

#### Using SSE transport (default) - Docker Hub Image

```json
{
  "mcpServers": {
    "line-bot": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "3000:3000",
        "-e",
        "CHANNEL_ACCESS_TOKEN",
        "-e",
        "DESTINATION_USER_ID",
        "acquojp/line-bot-mcp-server-sse:latest"
      ],
      "env": {
        "CHANNEL_ACCESS_TOKEN" : "FILL_HERE",
        "DESTINATION_USER_ID" : "FILL_HERE"
      }
    }
  }
}
```

#### Using stdio transport - Docker Hub Image

```json
{
  "mcpServers": {
    "line-bot": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CHANNEL_ACCESS_TOKEN",
        "-e",
        "DESTINATION_USER_ID",
        "-e",
        "MCP_TRANSPORT",
        "acquojp/line-bot-mcp-server-sse:latest"
      ],
      "env": {
        "CHANNEL_ACCESS_TOKEN" : "FILL_HERE",
        "DESTINATION_USER_ID" : "FILL_HERE",
        "MCP_TRANSPORT" : "stdio"
      }
    }
  }
}
```

## Versioning

This project respects semantic versioning

See http://semver.org/

## Fork Information & Differences

This repository is a fork of the official [LINE Bot MCP Server](https://github.com/line/line-bot-mcp-server) with the following enhancements:

### ✨ Added Features

- **SSE (Server-Sent Events) Transport Support**: Enables web-based integrations and HTTP connections
- **Multi-Transport Architecture**: Supports both stdio (original) and SSE transports
- **Docker Hub Distribution**: Pre-built Docker images available for easy deployment
- **Production-Ready Configuration**: Optimized for both development and production environments

### 🔄 Transport Comparison

| Feature | stdio (Original) | SSE (Added) |
|---------|------------------|-------------|
| **Use Case** | Local CLI tools, direct process communication | Web applications, HTTP-based integrations |
| **Connection** | Standard input/output streams | HTTP + Server-Sent Events |
| **Deployment** | Process-based | Server-based (HTTP) |
| **Port** | Not required | Requires port (default: 3000) |
| **Scalability** | Single process | Multiple concurrent connections |

### 🐳 Docker Hub

- **Repository**: [`acquojp/line-bot-mcp-server-sse`](https://hub.docker.com/r/acquojp/line-bot-mcp-server-sse)
- **Architecture**: AMD64 (x86_64) - optimized for most cloud platforms
- **Tags**: `latest`, `v1.0.0`, `amd64`, `arm64`

## Contributing

Please check [CONTRIBUTING](./CONTRIBUTING.md) before making a contribution.

### Contributing to This Fork

If you'd like to contribute to the SSE transport features or other enhancements in this fork, please:

1. Fork this repository
2. Create a feature branch
3. Make your changes
4. Submit a pull request

For contributions to the original LINE Bot MCP Server, please visit the [official repository](https://github.com/line/line-bot-mcp-server).

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have distinct purposes, such as broadcast vs. push for mass vs. individual messaging, and flex vs. text for message types. However, cancel_rich_menu_default and delete_rich_menu could be slightly confusing as both involve removing rich menus, though their descriptions clarify one cancels a default setting while the other deletes the menu entirely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, such as broadcast_flex_message, get_profile, and set_rich_menu_default. This uniformity makes the tool set predictable and easy to navigate for an agent.

Tool Count5/5

With 10 tools, the count is well-scoped for a LINE Bot server, covering core messaging, user profile management, rich menu operations, and quota checking. Each tool serves a clear purpose without redundancy or bloat.

Completeness4/5

The tool set covers essential LINE Bot operations, including message broadcasting/pushing, user profile retrieval, rich menu management, and quota monitoring. A minor gap is the lack of tools for creating or updating rich menus, which might limit full lifecycle management, but agents can still handle common workflows effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues