Labsco
yjcho9317 logo

nworks

β˜… 19

from yjcho9317

NAVER WORKS CLI + MCP server. 26 tools for messages, calendar, drive, mail, tasks, and boards.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredAdvanced setup

nworks

npm version license npm downloads nworks MCP server

Featured in awesome-mcp-servers

πŸ‡ΊπŸ‡Έ English | πŸ‡°πŸ‡· ν•œκ΅­μ–΄ | πŸ‡―πŸ‡΅ ζ—₯本θͺž

<p align="center"> <img src="assets/demo.gif" width="600" alt="nworks demo"> </p>

Full-featured MCP server for LINE WORKS (NAVER WORKS). CLI + MCP server β€” 26 tools covering messages, calendar, drive, mail, tasks, and boards.

Login

Copy & paste β€” that's it
# User OAuth (calendar, drive, mail, tasks, boards)
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"

# Bot messaging (Service Account)
nworks login

# Check auth status
nworks whoami

# Logout
nworks logout

nworks login --user only requires CLIENT_ID + CLIENT_SECRET. Values already set via environment variables or existing config won't be asked again.

Developer Console: To use User OAuth, register http://localhost:9876/callback as a Redirect URL in the Developer Console.


AI Agent Integration (MCP Server)

Works with Claude Desktop, Cursor, and other MCP-compatible clients.

Setup

Login first:

Copy & paste β€” that's it
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"

Then add to your MCP config (~/.config/claude/claude_desktop_config.json):

Copy & paste β€” that's it
{
  "mcpServers": {
    "nworks": {
      "command": "nworks",
      "args": ["mcp"]
    }
  }
}

One login enables all 26 tools. No extra env setup needed.

Without CLI login, an AI agent can call nworks_setup β†’ nworks_login_user to authenticate via browser directly. Client Secret and Private Key path must be pre-configured via MCP config env field or system environment variables.

MCP Tools (26)

ToolDescriptionAuth
Setup / Auth
nworks_setupConfigure API credentials (Client ID, etc.). Client Secret is set via envβ€”
nworks_login_userUser OAuth browser login (all scopes included)β€”
nworks_logoutDelete credentials and tokensβ€”
nworks_whoamiCheck auth statusβ€”
nworks_doctorDiagnose connection (auth, tokens, API health)β€”
Messages
nworks_message_sendSend message to user/channelService Account
nworks_message_membersList channel membersService Account
nworks_directory_membersList organization membersService Account
Calendar
nworks_calendar_listList calendar eventsUser OAuth (calendar.read)
nworks_calendar_createCreate calendar eventUser OAuth (calendar + calendar.read)
nworks_calendar_updateUpdate calendar eventUser OAuth (calendar + calendar.read)
nworks_calendar_deleteDelete calendar eventUser OAuth (calendar + calendar.read)
Drive
nworks_drive_listList drive files/foldersUser OAuth (file.read)
nworks_drive_uploadUpload file to driveUser OAuth (file)
nworks_drive_downloadDownload file (saves locally if >5MB)User OAuth (file.read)
Mail
nworks_mail_sendSend mailUser OAuth (mail)
nworks_mail_listList mailboxUser OAuth (mail.read)
nworks_mail_readRead mail detailUser OAuth (mail.read)
Tasks
nworks_task_listList tasksUser OAuth (task.read)
nworks_task_createCreate taskUser OAuth (task + user.read)
nworks_task_updateUpdate/complete taskUser OAuth (task + user.read)
nworks_task_deleteDelete taskUser OAuth (task + user.read)
Boards
nworks_board_listList boardsUser OAuth (board.read)
nworks_board_postsList board postsUser OAuth (board.read)
nworks_board_readRead board post detailUser OAuth (board.read)
nworks_board_createCreate board postUser OAuth (board)

AI Agent Usage Example

Copy & paste β€” that's it
User: Schedule a meeting tomorrow at 2pm and notify the team channel

Claude β†’ nworks_calendar_create
  { "summary": "Meeting", "start": "2026-03-15T14:00:00", "end": "2026-03-15T15:00:00" }
  β†’ Event created

Claude β†’ nworks_message_send
  { "channel": "C001", "text": "Meeting scheduled tomorrow at 14:00" }
  β†’ Message sent

User: Check my unread emails and summarize them

Claude β†’ nworks_mail_list (unread)
  β†’ 3 unread emails
Claude β†’ nworks_mail_read (each)
  β†’ "3 unread: 1) Deploy approval from CTO, 2) Meeting invite for Friday, 3) Weekly report reminder"

OAuth Scopes

Add the required scopes in the LINE WORKS Developer Console.

ScopePurposeAuthRequired For
botBot messagingService Accountmessage send
bot.readBot channel/member readService Accountmessage members
calendarCalendar writeUser OAuthcalendar create/update/delete (requires calendar.read)
calendar.readCalendar readUser OAuthcalendar list, also needed for calendar write
fileDrive read/writeUser OAuthdrive list/upload/download
file.readDrive read-onlyUser OAuthdrive list/download
mailMail read/writeUser OAuthmail send/list/read
mail.readMail read-onlyUser OAuthmail list/read
taskTasks read/writeUser OAuthtask create/update/delete (requires user.read)
task.readTasks read-onlyUser OAuthtask list
user.readUser info readService Account / User OAuthdirectory members, also needed for task write
boardBoards read/writeUser OAuthboard list/posts/read/create
board.readBoards read-onlyUser OAuthboard list/posts/read

Tip: After changing scopes, reissue your token:

Copy & paste β€” that's it
nworks logout && nworks login --user --scope "..."

Environment Variables

Set environment variables to use nworks without nworks login (useful for CI/agents).

Copy & paste β€” that's it
# Required
NWORKS_CLIENT_ID=
NWORKS_CLIENT_SECRET=

# Bot messaging only (not needed for User OAuth)
NWORKS_SERVICE_ACCOUNT=
NWORKS_PRIVATE_KEY_PATH=
NWORKS_BOT_ID=

# Optional
NWORKS_DOMAIN_ID=
NWORKS_SCOPE=              # default: bot bot.read user.read
NWORKS_VERBOSE=1           # debug logging

MCP Server with Environment Variables

Sensitive values (Client Secret, Private Key path) must be set via MCP config env field. Non-sensitive values like Client ID can be configured by the AI agent through the nworks_setup tool.

Copy & paste β€” that's it
{
  "mcpServers": {
    "nworks": {
      "command": "npx",
      "args": ["-y", "nworks", "mcp"],
      "env": {
        "NWORKS_CLIENT_SECRET": "<Client Secret>",
        "NWORKS_PRIVATE_KEY_PATH": "<Private Key file absolute path (for Service Account)>"
      }
    }
  }
}

License

Apache-2.0