LINE Bot MCP Server (SSE Support)
Integrates the LINE Messaging API to connect AI agents to LINE Official Accounts, enabling tools to send text and flex messages (push or broadcast), retrieve user profiles, manage message quotas, and configure rich menus.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LINE Bot MCP Server (SSE Support)send 'Your reservation is confirmed!' to user U123456789"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LINE Bot MCP Server (with SSE Support)
Model Context Protocol (MCP) server implementation that integrates the LINE Messaging API to connect an AI Agent to the LINE Official Account.

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
Original Repository: 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
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
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. Eitheruser_idorDESTINATION_USER_IDmust be set.message.text(string): The plain text content to send to the user.
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. Eitheruser_idorDESTINATION_USER_IDmust 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.
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.
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.
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.
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
get_rich_menu_list
Get the list of rich menus associated with your LINE Official Account.
Inputs:
None
delete_rich_menu
Delete a rich menu from your LINE Official Account.
Inputs:
richMenuId(string): The ID of the rich menu to delete.
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.
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 includeuser_id,DESTINATION_USER_IDis required. You can confirm this by following this instructions.MCP_TRANSPORT: (optional) Transport protocol to use. Options:stdio(default),sseMCP_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 connectionPOST /messages- Send messages to the serverGET /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:
# 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:latestOption 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.gitBuild 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 toline-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 includeuser_id,DESTINATION_USER_IDis required. You can confirm this by following this instructions.MCP_TRANSPORT: (optional) Transport protocol to use. Options:stdio(default),sseMCP_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
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
Repository:
acquojp/line-bot-mcp-server-sseArchitecture: AMD64 (x86_64) - optimized for most cloud platforms
Tags:
latest,v1.0.0,amd64,arm64
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:
Fork this repository
Create a feature branch
Make your changes
Submit a pull request
For contributions to the original LINE Bot MCP Server, please visit the official repository.
Available Tools
10 toolsbroadcast_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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
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.
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.
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.
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.
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.
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.
get_message_quotaA
Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | The user ID to get a profile. Defaults to DESTINATION_USER_ID. |
TDQS
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.
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | The user ID to receive a message. Defaults to DESTINATION_USER_ID. | |
| message | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | The user ID to receive a message. Defaults to DESTINATION_USER_ID. | |
| message | Yes |
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.0.1-local- First observed
broadcast_flex_message - First observed
broadcast_text_message - First observed
cancel_rich_menu_default - First observed
delete_rich_menu - First observed
get_message_quota - First observed
get_profile - First observed
get_rich_menu_list - First observed
push_flex_message - First observed
push_text_message - First observed
set_rich_menu_default
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceModel 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 npmApache 2.0
- AlicenseBqualityDmaintenanceEnables 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.18796 npmApache 2.0
- AlicenseAqualityDmaintenanceAI-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 Jap10MIT
- AlicenseAqualityCmaintenanceOperate your LINE Official Account from any AI agent through natural language.3785 npm98MIT