Skip to main content
Glama
acquo

LINE Bot MCP Server (SSE Support)

by acquo

日本語版 READMEはこちら

LINE Bot MCP Server (with SSE Support)

npmjs Docker Hub

Model Context Protocol (MCP) server implementation that integrates the LINE Messaging API to connect an AI Agent to the LINE Official Account.

NOTE

This repository is afork of the official LINE Bot MCP Server with additional SSE (Server-Sent Events) transport support. The original repository only supports stdio transport.

🔄 Fork Information

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.

Related MCP server: LINE Bot MCP Server

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.

If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following this instructions.

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.

  • 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.

  • MCP_TRANSPORT: (optional) Transport protocol to use. Options: stdio (default), sse

  • MCP_PORT: (optional) Port for SSE transport. Default: 3000

Using stdio transport (default)

{
  "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

{
  "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)

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

# 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.

If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following this instructions.

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

Clone this repository:

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

Build the Docker image:

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.

  • 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.

  • 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

{
  "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

{
  "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 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

Contributing

Please check CONTRIBUTING 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.

Available Tools

10 tools
broadcast_flex_messageA

Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that this message will be sent to all users.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the broadcast nature ('sent to all users') and mentions support for bubble/carousel layouts, but lacks details about permissions, rate limits, confirmation steps, or what happens on failure. The warning about broadcasting is helpful but incomplete for behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. First sentence establishes purpose and capabilities, second provides crucial behavioral warning. Every word earns its place, and the most important information (broadcast nature) is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a broadcast tool with no annotations, no output schema, and complex nested parameters, the description is moderately complete. It covers the broadcast scope and basic layout options but misses details about authentication requirements, error handling, response format, and the full complexity of the flex message structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions bubble/carousel layouts which correspond to the 'type' enum in the nested schema, but doesn't explain the 'altText' parameter or the complex 'contents' structure beyond basic layout types. This leaves significant gaps in parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('broadcast'), resource ('flex message'), and platform ('LINE to all users who have added your LINE Official Account'). It distinguishes from siblings like 'broadcast_text_message' by specifying the message type and from 'push_flex_message' by indicating broadcast vs targeted push.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: for sending flex messages to all LINE Official Account users. It implicitly distinguishes from sibling tools like 'broadcast_text_message' (text vs flex) and 'push_flex_message' (broadcast vs targeted), though it doesn't explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

broadcast_text_messageA

Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending plain text messages without formatting. Please be aware that this message will be sent to all users.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the broadcast nature ('sent to all users') which is crucial behavioral context, but doesn't mention rate limits, authentication requirements, message delivery guarantees, or potential costs/quotas. For a broadcast tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized (3 sentences) and front-loaded with the core purpose. Every sentence adds value: first states the action, second specifies text-only limitation, third warns about broadcast scope. No wasted words, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a broadcast tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It doesn't cover error conditions, response format, rate limits, or authentication requirements. The warning about 'sent to all users' is helpful but insufficient for safe operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds no parameter-specific information beyond what's implied by the tool name and purpose. The single parameter (message object with text field) is documented only in the schema. The description doesn't explain the message structure, text length constraints, or provide examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('broadcast a simple text message via LINE'), the target resource ('all users who have followed your LINE Official Account'), and distinguishes it from siblings by specifying 'plain text messages without formatting' (unlike broadcast_flex_message or push_flex_message which likely involve formatting).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('for sending plain text messages without formatting'), but doesn't explicitly state when NOT to use it or name specific alternatives (like push_text_message for targeted messages vs broadcast). It implies this is for mass communication to all followers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_rich_menu_defaultB

Cancel the default rich menu.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'Cancel' implies a mutation operation, but the description doesn't specify whether this requires special permissions, what happens after cancellation (e.g., does it revert to a previous state?), or potential side effects. This leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is minimally adequate but incomplete. It states what the tool does but lacks behavioral context (permissions, effects, return values) that would be helpful given the tool's complexity as a system configuration change.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for this zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('cancel') and target resource ('default rich menu'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'delete_rich_menu' or 'set_rich_menu_default', which would require explicit comparison to achieve a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'set_rich_menu_default' or 'delete_rich_menu'. There's no mention of prerequisites, context, or exclusions, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_rich_menuC

Delete a rich menu from your LINE Official Account.

ParametersJSON Schema
NameRequiredDescriptionDefault
richMenuIdYesThe ID of the rich menu to delete.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Delete') but doesn't mention permissions required, whether deletion is permanent/reversible, rate limits, or what happens to associated data. For a destructive operation with zero annotation coverage, this leaves critical gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose with no wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain behavioral implications (e.g., permanence, side effects) or return values, leaving the agent with incomplete context for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'richMenuId' fully documented in the schema. The description doesn't add any parameter details beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Delete') and resource ('a rich menu from your LINE Official Account'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'cancel_rich_menu_default' or 'set_rich_menu_default', which would require explicit comparison to earn a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'cancel_rich_menu_default' or 'set_rich_menu_default', nor are prerequisites or exclusions mentioned. The description only states what the tool does, not when it should be selected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_message_quotaA

Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It clearly indicates this is a read-only operation ('Get') and specifies the data returned (quota and consumption), but does not disclose behavioral traits like rate limits, authentication needs, error conditions, or data freshness. It adds basic context but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste: the first states the purpose, and the second elaborates on the returned data. It is front-loaded and every sentence adds value without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose and output semantics, but lacks context on usage scenarios, error handling, or integration with sibling tools, leaving gaps for an agent to infer operational details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, maintaining focus on the tool's purpose. A baseline of 4 is applied as it efficiently handles the parameter-free case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get') and resource ('message quota and consumption of the LINE Official Account'), with explicit details about what information is retrieved ('monthly message limit and current usage'). It distinguishes itself from sibling tools that focus on messaging, broadcasting, or database operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for monitoring message usage on LINE Official Accounts, but provides no explicit guidance on when to use this tool versus alternatives (e.g., for checking limits before sending messages) or any exclusions. It lacks named alternatives or contextual boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileB

Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoThe user ID to get a profile. Defaults to DESTINATION_USER_ID.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what information is returned but doesn't mention important behavioral aspects: whether this requires specific permissions/authentication, rate limits, error conditions, or what happens when userId is omitted (defaults to DESTINATION_USER_ID per schema). For a user data retrieval tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the tool's purpose and scope. It lists the specific information returned without unnecessary elaboration. Every word earns its place, making it appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with 1 parameter (100% schema coverage) but no annotations or output schema, the description is adequate but incomplete. It specifies what data is returned but doesn't cover behavioral aspects like authentication requirements, error handling, or response format. Given the tool's low complexity, it's minimally viable but could provide more context about the operation's constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the userId parameter with its default behavior. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'LINE user' which provides domain context but no additional parameter semantics. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get detailed profile information of a LINE user' with specific attributes listed (display name, profile picture URL, status message, language). It distinguishes itself from siblings by focusing on user profile retrieval rather than messaging or rich menu operations. However, it doesn't explicitly contrast with potential similar tools like 'get_user' or 'get_user_info' if they existed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying it retrieves LINE user profiles, but provides no explicit guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like authentication requirements) or compare with other user-related operations. The context is clear but lacks specific when/when-not instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rich_menu_listB

Get the list of rich menus associated with your LINE Official Account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving a list but doesn't specify whether this is a read-only operation, if authentication is required, potential rate limits, or the format of the returned data. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that efficiently conveys the core functionality without any redundant information. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema), the description adequately covers the basic purpose. However, without annotations or output schema, it lacks details on behavioral aspects like authentication needs or return format, which could be important for an agent to use it correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose. A baseline of 4 is applied since no parameters exist to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get the list') and resource ('rich menus associated with your LINE Official Account'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'get_profile' or 'get_message_quota', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'set_rich_menu_default' or 'delete_rich_menu', nor does it mention prerequisites or context for usage. It simply states what the tool does without indicating appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

push_flex_messageC

Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoThe user ID to receive a message. Defaults to DESTINATION_USER_ID.
messageYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the message is 'highly customizable' and supports specific layouts, but doesn't cover critical aspects like authentication requirements, rate limits, error conditions, whether the operation is idempotent, or what happens on success/failure. For a messaging tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence states the core purpose, and the second adds essential detail about layout options. Every word earns its place, and the structure is front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a messaging tool with no annotations, no output schema, and incomplete parameter documentation (50% schema coverage), the description is inadequate. It doesn't explain what happens after pushing (e.g., success response, error handling), doesn't mention authentication or rate limits, and leaves key parameters like 'userId' under-explained. The description fails to provide the necessary context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'altText' and container 'type' have descriptions). The description adds some value by explaining bubble vs. carousel layouts, which clarifies the 'contents.type' enum. However, it doesn't explain the 'userId' parameter (beyond what the schema's default value implies) or provide additional context about the flexible container structure beyond what's in the schema. The description partially compensates but doesn't fully address the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('push'), the resource ('flex message'), and the target ('to a user via LINE'). It distinguishes from sibling tools like 'push_text_message' by specifying 'flex message' and mentioning bubble/carousel layouts. However, it doesn't explicitly differentiate from 'broadcast_flex_message' (which likely sends to multiple users).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description mentions bubble vs. carousel layouts but doesn't provide context for choosing between this tool and siblings like 'broadcast_flex_message' (for multiple users) or 'push_text_message' (for simpler text). No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

push_text_messageB

Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoThe user ID to receive a message. Defaults to DESTINATION_USER_ID.
messageYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the message type constraint ('plain text') but doesn't cover critical aspects like authentication requirements, rate limits, error conditions, or what happens after sending (e.g., delivery confirmation). For a messaging tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states the core functionality, the second provides usage guidance. Every word earns its place with zero redundancy or fluff, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a messaging tool with no annotations, no output schema, and incomplete parameter documentation (50% coverage), the description is insufficient. It doesn't address authentication, response format, error handling, or platform-specific constraints that an agent would need to use this tool effectively in context with its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'text' parameter has description). The description adds no parameter-specific information beyond what's implied by the tool's purpose. It doesn't explain 'userId' usage or the nested 'message' object structure, so it doesn't compensate for the schema coverage gap, resulting in a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Push'), resource ('text message'), target ('to a user via LINE'), and scope ('plain text messages without formatting'). It distinguishes from formatting-rich alternatives but doesn't explicitly name sibling tools like 'push_flex_message' for full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it ('for sending plain text messages without formatting'), suggesting alternatives exist for formatted messages. However, it doesn't explicitly state when NOT to use it or name specific alternatives like 'push_flex_message', leaving some ambiguity about usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_rich_menu_defaultC

Set a rich menu as the default rich menu.

ParametersJSON Schema
NameRequiredDescriptionDefault
richMenuIdYesThe ID of the rich menu to set as default.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool performs a 'set' action, implying mutation, but does not cover permissions needed, whether the change is reversible, error conditions, or what happens to the previous default. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized for a simple tool, with no wasted information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like side effects, return values, or error handling, which are critical for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with 'richMenuId' clearly documented. The description does not add any additional meaning beyond the schema, such as format examples or constraints, so it meets the baseline score for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('set') and the resource ('rich menu as the default rich menu'), making the purpose immediately understandable. However, it does not differentiate from sibling tools like 'cancel_rich_menu_default' or explain what 'default' means in this context, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'cancel_rich_menu_default' or 'get_rich_menu_list', nor are prerequisites or context for setting a default rich menu mentioned. The description lacks any usage instructions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.0.1-local
    • First observedbroadcast_flex_message
    • First observedbroadcast_text_message
    • First observedcancel_rich_menu_default
    • First observeddelete_rich_menu
    • First observedget_message_quota
    • First observedget_profile
    • First observedget_rich_menu_list
    • First observedpush_flex_message
    • First observedpush_text_message
    • First observedset_rich_menu_default

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Model Context Protocol server implementation that integrates the LINE Messaging API to connect AI agents with LINE Official Accounts, enabling agents to send messages to users.
    796 npm
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to send messages, manage rich menus, and interact with users through LINE Official Accounts via the LINE Messaging API. Supports both individual messaging and broadcasting to all followers with text and customizable flex messages.
    18
    796 npm
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    AI-powered MCP server for managing LINE Official Accounts. Send broadcasts, push messages, check analytics, manage rich menus — all through natural language via Claude, ChatGPT, or Cursor. 10 tools included: * Account info, friend count, message quota * Broadcast, push message, multicast * Delivery stats, user profiles, follower list * Rich menu management Supports 95M+ LINE users across Jap
    10
    MIT