LineWhiz
# 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.
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io)
[](https://opensource.org/licenses/MIT)
## 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](https://docs.astral.sh/uv/) package manager
- LINE Messaging API channel ([create one here](https://developers.line.biz/))
### Setup
```bash
# 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`):
```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
```bash
# Build and run
docker compose up --build
# Or build manually
docker build -t linewhiz .
docker run --env-file .env linewhiz
```
## Development
```bash
# 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
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose targeting specific LINE Official Account operations. For example, get_followers retrieves user IDs, get_friend_count provides counts, and send_* tools handle different message delivery methods with clear boundaries. No tools appear to overlap or cause confusion.
All tools follow a consistent verb_noun naming pattern using snake_case throughout. Examples include get_account_info, send_broadcast, and list_rich_menus, with no deviations in style or convention.
With 10 tools, the set is well-scoped for managing a LINE Official Account, covering account info, user data, messaging, and analytics. Each tool earns its place without feeling excessive or insufficient for the domain.
The tools provide strong coverage for core LINE OA workflows, including account management, user profiling, and message sending. A minor gap exists in operations like updating or deleting rich menus, but agents can work around this with the available tools.