Premium MCP server for AI-powered LINE Official Account management
Project description
LineWhiz
Premium MCP server that lets AI agents manage LINE Official Accounts.
Users type natural language in Claude / ChatGPT / Cursor → LineWhiz calls the LINE Messaging API.
Features
| Tool | Tier | Description |
|---|---|---|
get_account_info |
Free | Get LINE OA info: name, plan, picture |
get_friend_count |
Free | Get follower count on a specific date |
get_message_quota |
Free | Get remaining message quota this month |
send_broadcast |
Pro | Send message to ALL friends |
send_push_message |
Pro | Send DM to a specific user |
send_multicast |
Pro | Send message to multiple users (max 500) |
get_message_delivery_stats |
Pro | Get delivery stats for a date |
get_user_profile |
Pro | Get user's display name, picture, etc. |
list_rich_menus |
Pro | List all rich menus for this LINE OA |
Quick Start
Prerequisites
- Python 3.11+
- uv package manager
- LINE Messaging API channel (create one here)
Setup
# Clone and install
cd linewhiz && uv sync
# Configure environment
cp .env.example .env
# Edit .env → fill in LINE_CHANNEL_ACCESS_TOKEN and LINE_CHANNEL_SECRET
# Run the server
uv run src/server.py
# Test with MCP Inspector
mcp dev src/server.py
# Run tests
uv run pytest
MCP Client Configuration
Add to your MCP client config (e.g., Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"linewhiz": {
"command": "uv",
"args": ["run", "src/server.py"],
"cwd": "/path/to/linewhiz",
"env": {
"LINE_CHANNEL_ACCESS_TOKEN": "your_token_here",
"LINE_CHANNEL_SECRET": "your_secret_here",
"LINEWHIZ_TIER": "pro"
}
}
}
}
Project Structure
linewhiz/
├── CLAUDE.md # AI coding spec (single source of truth)
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── src/
│ ├── server.py # MCP entry point + tool registration
│ ├── config.py # Env config via pydantic Settings
│ ├── auth/
│ │ ├── api_keys.py # Key validation (SHA-256)
│ │ └── tiers.py # Free/Pro/Business gating + rate limits
│ ├── tools/
│ │ ├── account.py # get_account_info, get_friend_count, get_message_quota
│ │ ├── messaging.py # send_broadcast, send_push, send_multicast
│ │ ├── richmenu.py # list/create/set/link rich menus
│ │ ├── insights.py # get_message_stats, get_user_profile
│ │ ├── automation.py # [future] auto-reply
│ │ └── reporting.py # [future] weekly report
│ ├── services/
│ │ ├── line_api.py # Async LINE API wrapper
│ │ └── flex_builder.py
│ ├── models/
│ │ ├── user.py # API key + tier models
│ │ └── usage.py # Usage log model
│ └── db/
│ └── database.py # SQLite async init + migrations
├── tests/
│ ├── conftest.py
│ ├── test_account.py
│ ├── test_messaging.py
│ ├── test_richmenu.py
│ └── test_auth.py
└── docs/
Tier System
| Tier | Price | Daily Calls | Tools |
|---|---|---|---|
| Free | $0/mo | 100 | Account info, friend count, quota |
| Pro | $15/mo | 5,000 | + Messaging, rich menus, insights |
| Business | $45/mo | Unlimited | All tools |
Docker
# Build and run
docker compose up --build
# Or build manually
docker build -t linewhiz .
docker run --env-file .env linewhiz
Development
# Install with dev dependencies
uv sync --all-extras
# Lint
uv run ruff check src/ tests/
# Type check
uv run mypy src/
# Test
uv run pytest -v
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file linewhiz-0.1.0.tar.gz.
File metadata
- Download URL: linewhiz-0.1.0.tar.gz
- Upload date:
- Size: 5.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7570f3eea2a008151d8c91dc9fa9dcdbc3af94e783fc6c20b73109c796742c29
|
|
| MD5 |
4b46cb4c6f8e03158cabbe0c15171f7c
|
|
| BLAKE2b-256 |
738f78fdd1bc54d38d0306cfd991eeee91d70c6b0b933a07bb26d104d38ca3ff
|
File details
Details for the file linewhiz-0.1.0-py3-none-any.whl.
File metadata
- Download URL: linewhiz-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71782e00bdbfa662c531825363ebe8252ea8d05d830e0ba403663cae6e3eef9
|
|
| MD5 |
a256331414850615259310adf79266ff
|
|
| BLAKE2b-256 |
7072104f2bc822f56a05c38f9379cde44a4c6384ccef8a6c0397870fb41e99f6
|