Skip to main content
Glama

Line Chrome MCP

Local gateway that turns the LINE Chrome Extension UI into a stable automation surface:

  • REST API (/v1)

  • Server-Sent Events for gateway events (/v1/events)

  • MCP Streamable HTTP (/mcp, including SSE streaming when the protocol uses a stream)

  • MCP stdio (line-mcp) implemented as a thin proxy over the local REST gateway

The DOM/CDP adapter is intentionally hidden behind the messaging core. MCP clients and REST callers never depend on LINE CSS class names or DOM implementation details.

Status

This is an initial working prototype built from the observed LINE Extension DOM contract. It supports:

  • chat listing/search

  • reading text/image/sticker message metadata

  • virtualized chat/message scrolling

  • incoming message events for the currently rendered active chat

  • visible chat-list change events

  • queued/idempotent text sending with post-send message-ID verification

  • REST + MCP stdio + MCP Streamable HTTP

Not yet implemented: reply sending, file/image upload, reactions, durable storage, and full background message capture for chats that are never rendered by the LINE UI.

Related MCP server: monkeysee

Requirements

  • Node.js 20+

  • Chromium/Chrome with the LINE Chrome Extension installed and logged in

  • a dedicated Chrome profile launched with DevTools remote debugging enabled

Chrome 136+ does not allow remote debugging against the normal default user-data directory. Use a dedicated profile.

Example:

google-chrome \
  --user-data-dir="$HOME/.line-mcp-profile" \
  --remote-debugging-port=9222

Open LINE in that profile and log in.

The adapter connects to Chrome through CDP; it does not discover a standalone LINE process. The LINE page must be an actual chrome-extension://... page in the remotely-debugged profile. A view-source:chrome-extension://... tab is a DevTools/source wrapper and is not a usable LINE target.

Install

npm install
npm run build

Export .env.example values in the gateway process or process manager as needed. This prototype reads process.env directly and does not load a .env file automatically. The defaults are:

LINE_CDP_URL=http://127.0.0.1:9222
LINE_EXTENSION_ID=ophjlpahpchlmihnnnihgmmeilfjmjjc
LINE_GATEWAY_HOST=127.0.0.1
LINE_GATEWAY_PORT=8787

LINE_EXTENSION_ID can be omitted; the adapter will then look for a Chrome extension page containing LINE-specific ARIA/DOM markers.

Run the test suite before starting the gateway:

npm run check

Start the gateway

npm start

Development mode:

npm run dev

Endpoints:

REST API:           http://127.0.0.1:8787/v1
OpenAPI metadata:   http://127.0.0.1:8787/openapi.json
Event SSE:          http://127.0.0.1:8787/v1/events
MCP HTTP:           http://127.0.0.1:8787/mcp

Codex CLI registration

The stdio server is a proxy and requires the gateway to be running first. Add it to Codex with an absolute Node.js path so it does not depend on an interactive shell loading NVM:

codex mcp add line \
  --env LINE_GATEWAY_URL=http://127.0.0.1:8787 \
  -- /absolute/path/to/node /absolute/path/to/Line-Chrome-MCP/dist/src/mcp/stdio.js

codex mcp get line

If Chrome uses another CDP port, restart the gateway with the matching URL:

LINE_CDP_URL=http://127.0.0.1:9223 npm start

The gateway port and the Chrome CDP port are independent. LINE_GATEWAY_URL points the stdio proxy at the gateway; LINE_CDP_URL points the gateway at Chrome.

REST API

Health / status

curl http://127.0.0.1:8787/v1/health
curl http://127.0.0.1:8787/v1/status
curl http://127.0.0.1:8787/v1/capabilities

Chats

curl 'http://127.0.0.1:8787/v1/chats?limit=50'
curl 'http://127.0.0.1:8787/v1/chats?q=Pai'
curl 'http://127.0.0.1:8787/v1/chats?unread=true'

line_search_chats and /v1/chats?q=... search chat titles only. They do not perform a global full-text search across every message. To inspect message content, first resolve a chat ID and then call the messages endpoint. If a name matches multiple chats, keep the candidates and ask the user to disambiguate.

Messages

curl 'http://127.0.0.1:8787/v1/chats/CHAT_ID/messages?limit=50'

Older page:

curl 'http://127.0.0.1:8787/v1/chats/CHAT_ID/messages?limit=50&before=MESSAGE_ID'

Send text

curl -X POST 'http://127.0.0.1:8787/v1/chats/CHAT_ID/messages' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: workflow-run-123' \
  -d '{"text":"ทดสอบส่งจาก API"}'

The request returns 202 Accepted with an operation. Poll it:

curl http://127.0.0.1:8787/v1/operations/OPERATION_ID

UI write operations are serialized so two agents cannot switch LINE chats and type at the same time.

Gateway event SSE

curl -N http://127.0.0.1:8787/v1/events

Current event families include:

message.created
message.sent
chat.updated
operation.created
operation.started
operation.succeeded
operation.failed

message.created is generated for newly rendered messages in the active chat. chat.updated is generated when a visible chat-row preview/unread state changes.

MCP Streamable HTTP

Use:

http://127.0.0.1:8787/mcp

This uses the current MCP Streamable HTTP server entry. Streaming responses use SSE when required by MCP. It is not the deprecated legacy standalone HTTP+SSE transport.

Tools:

line_get_status
line_get_capabilities
line_search_chats
line_get_messages
line_send_message
line_get_operation

MCP stdio

The stdio process does not own Chrome or LINE. It calls the already-running gateway over localhost, so multiple MCP hosts do not create competing LINE sessions.

LINE_GATEWAY_URL=http://127.0.0.1:8787 node dist/src/mcp/stdio.js

Example MCP host configuration:

{
  "mcpServers": {
    "line": {
      "command": "node",
      "args": ["/absolute/path/to/Line-Chrome-MCP/dist/src/mcp/stdio.js"],
      "env": {
        "LINE_GATEWAY_URL": "http://127.0.0.1:8787"
      }
    }
  }
}

The compiled entry points live under dist/src/ because the TypeScript project includes both src/ and test/ with rootDir set to .. Use the package scripts and bin entries rather than assuming dist/index.js or dist/mcp/stdio.js.

Diagnostics and troubleshooting

Check all three layers independently:

curl http://127.0.0.1:9222/json/version
curl http://127.0.0.1:9222/json/list
curl http://127.0.0.1:8787/v1/health
curl http://127.0.0.1:8787/v1/status

Interpret /v1/status as follows:

  • ready: true: the gateway found a LINE page and its expected DOM markers.

  • connected: true, ready: false: CDP is reachable, but the target is not a usable LINE page. Check the profile, port, login state, and page URL.

  • connected: false: the gateway cannot connect to the configured CDP URL.

The LINE extension normally appears as renderer/extension child processes of Chrome, not as a process named line. Process listings alone cannot prove that the gateway can use it; /json/list must expose the extension page and the gateway must be pointed at that same Chrome instance.

For the incident-driven setup notes and recovery checklist, see docs/lessons-learned.md.

Authentication / remote binding

By default the service binds to 127.0.0.1 without authentication.

If LINE_GATEWAY_HOST is changed to a non-loopback address, startup is refused unless LINE_GATEWAY_TOKEN is set.

Then use:

Authorization: Bearer <token>

The same token is used by line-mcp via LINE_GATEWAY_TOKEN.

Architecture

LINE Chrome Extension
        │
        │ DOM / CDP
        ▼
ChromeLineAdapter
        │
        ▼
MessagingGateway
  ├─ serialized UI queue
  ├─ operations + idempotency
  └─ event bus
        │
        ├─ REST /v1
        ├─ SSE /v1/events
        └─ MCP /mcp

MCP stdio client
        │ stdin/stdout
        ▼
line-mcp thin proxy
        │ REST localhost
        ▼
MessagingGateway

DOM strategy

The adapter avoids generated CSS module names wherever possible and targets observed semantic markers such as:

button[aria-label="Go chatroom"]
div[data-is-dropzone="true"][data-mid]
[data-message-id]
[data-message-select-id]
[data-timestamp]
[data-is-message-text="true"]
textarea-ex[placeholder="Enter a message"]

LINE uses virtualized lists, so chat enumeration and history reads scroll and deduplicate by stable IDs instead of assuming the entire history exists in document.body at once.

Security note

This project automates an already logged-in personal LINE client. Treat the gateway as sensitive local software. Do not expose it to a network without authentication and additional access controls appropriate to your environment.

Available Tools

6 tools
line_get_capabilitiesA

Get capabilities currently implemented by the active LINE adapter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral burden. It does convey that the result depends on the active adapter and is 'currently implemented', implying a dynamic, read-only query. However, it does not describe output shape, possible side effects, authentication requirements, or error behavior, leaving some behavioral ambiguity.

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, focused sentence with no filler or repetition. It states the action, the target, and the relevant qualifier ('active') while remaining highly compact.

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

Completeness4/5

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

For a zero-parameter introspection tool, this is nearly complete. The main gap is that the description does not specify the return format or example capability values, and with no output schema the agent must assume the shape. Still, the tool is simple enough that the description gives adequate context for invocation.

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 zero parameters and the schema is fully self-explanatory, so the baseline is 4. The description does not need to add parameter details because there are none to clarify.

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 uses a specific verb ('Get') and resource ('capabilities currently implemented by the active LINE adapter'), clearly distinguishing this from siblings like line_get_status, line_get_messages, and line_send_message. An agent can immediately understand what the tool returns and what scope it applies to.

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 given for when to use this tool versus its siblings. The description does not mention scenarios, prerequisites, or alternatives, so the agent must infer usage from the tool name and description alone.

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

line_get_messagesA

Read messages from a LINE chat. Use before as a cursor for older history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
beforeNo
chat_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. 'Read' clearly signals a non-mutating operation, and the cursor note reveals pagination behavior. Still, it does not disclose rate limits, authentication needs, default ordering, or whether messages are marked as read.

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 short sentences with no filler. The core purpose is front-loaded, and the pagination hint earns its place without verbosity.

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?

The description covers the essential purpose and one parameter's behavior, which is enough for basic invocation. However, with no output schema and no annotations, it leaves the return shape, message ordering, and default limit behavior unspecified.

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 for all parameters. It only explains 'before' as a cursor for older history; 'chat_id' and 'limit' receive no semantic explanation beyond their names and schema constraints.

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 uses a specific verb and resource: 'Read messages from a LINE chat.' This clearly distinguishes the tool from siblings like line_send_message, line_get_status, and line_search_chats, which perform different 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 gives one concrete usage hint: 'Use before as a cursor for older history,' which helps agents paginate. However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions, so tool-selection guidance is mostly implied.

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

line_get_operationB

Get the current state and result of an asynchronous gateway operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes

TDQS

B3.3/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 a read/query operation ('Get') and describes what is returned ('current state and result'), but it does not disclose polling semantics, error behavior, idempotency, or what occurs when the operation_id is invalid or unknown.

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 one concise, front-loaded sentence with no filler or redundant repetition of the tool name. It efficiently communicates the core action and target resource.

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 single-parameter read operation this is close to adequate, but it omits guidance about how operation_id is acquired and what shape or semantics the returned 'state and result' have. There is no output schema to fill that gap, so the description leaves meaningful ambiguity for an agent.

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?

The schema describes operation_id only as a string with minLength 1, and the description adds no explanation of what operation_id represents, where it comes from, or how to obtain it. Since schema description coverage is 0%, the description should have compensated, but the parameter is only weakly self-explanatory by name.

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 states a specific verb ('Get') and resource ('asynchronous gateway operation'), and clarifies that it returns 'current state and result'. It is reasonably distinct from siblings like line_get_status by focusing on an operation, though it does not explicitly contrast with them.

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 word 'asynchronous' implies this tool should be used when an agent needs the current state or result of an in-flight gateway operation, which provides some usage context. However, there is no explicit guidance about when to prefer this over sibling tools such as line_get_status, nor any mention of 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.

line_get_statusA

Get the LINE gateway, Chrome CDP, and active LINE page status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden of disclosing behavior. The verb 'Get' reasonably implies a read-only, non-destructive operation, but the description does not explicitly state that it does not modify state, nor does it mention failure behavior or whether it requires a connected Chrome/gateway. This is a minimal but not rich disclosure.

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, front-loaded sentence with no filler. Every word contributes to identifying the exact subject of the status check. It is appropriately sized for a tool with no parameters and no complex configuration.

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?

The tool is simple with no parameters, but there is no output schema and no annotations. The description names the three status areas, which helps, but it does not describe what the returned status looks like or what possible values might be reported. This leaves some ambiguity about how to interpret the result.

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 zero parameters, and the input schema is empty with 100% effective coverage. The description correctly adds nothing about parameters, and no parameter documentation is needed. The baseline of 4 for zero-parameter tools applies.

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 names a specific verb ('Get') and a concrete resource ('the LINE gateway, Chrome CDP, and active LINE page status'), which clearly distinguishes this tool from siblings that handle capabilities, chats, messages, sending, and operations. An agent can tell what this tool does without inspecting schemas.

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 gives no guidance on when to call this tool versus alternatives, nor does it mention prerequisites or conditions like 'use this when checking connectivity' or 'no setup required'. The agent must infer usage entirely from the tool name and description.

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

line_search_chatsB

List or search LINE chats. Chat IDs returned here are used by message tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
unread_onlyNo

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 must carry the behavioral disclosure burden. It only says the tool lists/searches chats and returns IDs; it does not mention pagination, filtering semantics, side effects, authentication requirements, or any limitations. For a no-annotation tool, 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 short sentences with the core purpose front-loaded and no filler. The downstream usefulness of the returned chat IDs is a valuable addition without any wasted words.

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 zero annotations, no output schema, and 0% parameter coverage, the description is too minimal. It explains what the tool returns conceptually but omits parameter semantics, result shape, and behavioral details, leaving an agent under-informed for correct invocation.

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

Parameters1/5

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

The schema has 0% description coverage and the description does not mention any of the three parameters (limit, query, unread_only). The agent receives no guidance on how these parameters affect the search or list behavior, so the description adds no parameter-level meaning.

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 states a clear action and resource: 'List or search LINE chats.' It also differentiates from sibling tools by clarifying that returned chat IDs are inputs for message tools, which distinguishes it from line_get_messages, line_send_message, and status/capability tools.

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 phrase 'Chat IDs returned here are used by message tools' provides clear context for when to use this tool: before message-related operations. However, it does not explicitly name alternative tools or state when not to use it, so it falls just short of a 5.

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

line_send_messageA

Queue a text message to a LINE chat. Returns an operation that can be polled with line_get_operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
chat_idYes
reply_toNo
idempotency_keyNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description must carry behavioral disclosure. It does a good job by explicitly stating the asynchronous nature ('Queue') and the return type ('an operation that can be polled'). This tells the agent that the action is not immediate and provides a follow-up mechanism. It does not disclose side effects, permissions, or failure modes, but the core behavior is covered.

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 short sentences, each earning their place. The first states the primary action, and the second provides the crucial return/polling behavior. No redundant wording and the most important information is 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?

The description covers the essential send-and-poll workflow but is incomplete overall. It does not explain optional parameters, potential side effects, or what should be provided for 'reply_to' and 'idempotency_key.' Given there is no output schema and no annotations, more guidance would be needed for fully confident invocation.

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 does not explicitly explain any parameters. It implies 'text' and 'chat_id' by the phrase 'text message to a LINE chat,' but 'reply_to' and 'idempotency_key' are left entirely unexplained. The parameter names are somewhat self-explanatory, but the description adds little semantic value.

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 states a clear verb and resource: 'Queue a text message to a LINE chat.' This precisely identifies the tool's action and target, and because all siblings are retrieval/status tools, it is unambiguously distinguished as the send operation.

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 this tool: when a text message needs to be sent to a LINE chat. However, it does not explicitly state when not to use it or mention any alternatives, though the sibling tools are all read-related and clearly not send alternatives. This is sufficient but not robust.

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. 6 tool updatesv0.1.0
    • First observedline_get_capabilities
    • First observedline_get_messages
    • First observedline_get_operation
    • First observedline_get_status
    • First observedline_search_chats
    • First observedline_send_message

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct concern: status, capabilities, chat search, message reading, message sending, and async operation polling. Even get_status and get_capabilities are clearly separated by describing gateway/CDP state versus adapter feature implementation.

Naming Consistency5/5

All tools share the line_ prefix and follow a consistent verb_noun snake_case pattern: get_status, get_capabilities, search_chats, get_messages, send_message, get_operation. This makes the toolset highly predictable.

Tool Count5/5

Six tools is well-scoped for a LINE automation adapter: status, capabilities, chat discovery, message retrieval, sending, and async operation tracking. Each tool earns its place without redundancy or bloat.

Completeness4/5

The toolset covers the core LINE automation workflow: discover chats, read messages, send messages, and track async operations. Minor gaps exist around live message subscription/streaming and cancellation of queued operations, but these are not fatal for the apparent purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI tools to read and send messages through LINE Desktop via MCP, supporting manual or automatic sending without official LINE API tokens.
    23 npm
    114
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to drive a real, logged-in Chrome browser for web automation tasks like navigation, clicking, typing, and screenshotting.
    4 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation over MCP using a real Chrome browser with existing profile, supporting real tabs, downloads, cookies, and RPA workflows.
    83 npm
    MIT