nworks

CLI + servidor MCP do NAVER WORKS. 26 ferramentas para mensagens, calendário, drive, e-mail, tarefas e quadros.

Documentação

nworks

npm version license npm downloads nworks MCP server

Destaque em awesome-mcp-servers

🇺🇸 English | 🇰🇷 한국어 | 🇯🇵 日本語

nworks demo

Servidor MCP completo para LINE WORKS (NAVER WORKS). CLI + servidor MCP — 36 ferramentas cobrindo mensagens, calendário, drive, e-mail, tarefas e boards.

O nworks permite que agentes de IA externos (Claude, Cursor) e seu terminal operem o LINE WORKS de fora — complementar à IA integrada do LINE WORKS (AiStudio, WORKS AI), não um substituto. Não oficial e mantido pela comunidade; não afiliado ao LINE WORKS / NAVER WORKS.

Início Rápido

npm install -g nworks
nworks login --user
nworks calendar list

Primeira vez? Você primeiro precisa de um aplicativo no Developer Console (Client ID/Secret), uma URL de redirecionamento registrada e — para mensagens de bot — aprovação do administrador. Consulte o Guia de Onboarding e Configuração de Admin.

Como os Agentes de IA Realmente Usam Isso

User: Show me today's schedule

Claude → nworks_calendar_list
  → 3 events: Standup (10:00), Lunch meeting (12:00), Code review (15:00)

User: Send a deploy complete message to the team channel

Claude → nworks_message_send
  { "channel": "C001", "text": "v1.2.0 deploy complete" }
  → 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"

Instalação

npx nworks             # Run directly
npm install -g nworks  # Global install

Login

# 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 requer apenas CLIENT_ID + CLIENT_SECRET. Valores já definidos via variáveis de ambiente ou configuração existente não serão solicitados novamente.

Developer Console: Para usar User OAuth, registre http://localhost:9876/callback como URL de Redirecionamento no Developer Console.


Integração com Agentes de IA (Servidor MCP)

Funciona com Claude Desktop, Cursor e outros clientes compatíveis com MCP.

Configuração

Faça login primeiro:

nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"

Depois adicione à sua configuração MCP (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "nworks": {
      "command": "nworks",
      "args": ["mcp"]
    }
  }
}

Um único login habilita todas as 36 ferramentas. Nenhuma configuração extra de ambiente é necessária.

Sem login via CLI, um agente de IA pode chamar nworks_setup → nworks_login_user para autenticar via navegador diretamente. O Client Secret e o caminho da Private Key devem ser pré-configurados via campo env da configuração MCP ou variáveis de ambiente do sistema.

Ferramentas MCP (32)

FerramentaDescriçãoAutenticação
Configuração / Autenticação
nworks_setupConfigurar credenciais da API (Client ID, etc.). Client Secret é definido via env—
nworks_login_userLogin no navegador via User OAuth (todos os escopos incluídos)—
nworks_logoutExcluir credenciais e tokens—
nworks_whoamiVerificar status de autenticação—
nworks_doctorDiagnosticar conexão (autenticação, tokens, saúde da API)—
Mensagens
nworks_message_sendEnviar mensagem para usuário/canalService Account
nworks_message_membersListar membros do canalService Account
nworks_directory_membersListar membros da organizaçãoService Account
Calendário
nworks_calendar_listListar eventos do calendárioUser OAuth (calendar.read)
nworks_calendar_createCriar evento no calendárioUser OAuth (calendar + calendar.read)
nworks_calendar_updateAtualizar evento no calendárioUser OAuth (calendar + calendar.read)
nworks_calendar_deleteExcluir evento do calendárioUser OAuth (calendar + calendar.read)
Drive
nworks_drive_listListar arquivos/pastas do driveUser OAuth (file.read)
nworks_drive_uploadEnviar arquivo para o driveUser OAuth (file)
nworks_drive_downloadBaixar arquivo (salva localmente se >5MB)User OAuth (file.read)
nworks_sharedrive_listListar drives compartilhadosUser OAuth (file.read)
nworks_sharedrive_filesListar arquivos/pastas em um drive compartilhadoUser OAuth (file.read)
nworks_sharedrive_downloadBaixar arquivo de drive compartilhado (salva localmente se >5MB)User OAuth (file.read)
E-mail
nworks_mail_sendEnviar e-mailUser OAuth (mail)
nworks_mail_listListar caixa de entradaUser OAuth (mail.read)
nworks_mail_readLer detalhes do e-mailUser OAuth (mail.read)
nworks_mail_download_attachmentBaixar anexo de e-mail (salva localmente se >5MB)User OAuth (mail.read)
Tarefas
nworks_task_listListar tarefasUser OAuth (task.read)
nworks_task_createCriar tarefaUser OAuth (task + user.read)
nworks_task_updateAtualizar/concluir tarefaUser OAuth (task + user.read)
nworks_task_deleteExcluir tarefaUser OAuth (task + user.read)
Boards
nworks_board_listListar boardsUser OAuth (board.read)
nworks_board_postsListar posts do boardUser OAuth (board.read)
nworks_board_readLer detalhes do post do boardUser OAuth (board.read)
nworks_board_createCriar post no boardUser OAuth (board)
Contatos
nworks_contact_listListar contatosUser OAuth (contact.read)
nworks_contact_getObter detalhes do contatoUser OAuth (contact.read)
nworks_contact_createCriar contatoUser OAuth (contact)
nworks_contact_updateAtualizar contatoUser OAuth (contact)
nworks_contact_deleteExcluir contatoUser OAuth (contact)
nworks_contact_list_tagsListar tags de contatoUser OAuth (contact.read)

Exemplo de Uso com Agente de IA

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"

Uso via CLI

Todos os comandos suportam --json para análise via pipe/script/agente. message send, mail send e drive upload suportam --dry-run para teste sem envio.

Mensagens (API de Bot)

# Send text to user
nworks message send --to <userId> --text "Hello"

# Send text to channel
nworks message send --channel <channelId> --text "Announcement"

# Button message
nworks message send --to <userId> --type button --text "PR review request" \
  --actions '[{"type":"message","label":"Approve","postback":"approve"}]'

# List message
nworks message send --to <userId> --type list --text "Today's tasks" \
  --elements '[{"title":"Code review","subtitle":"PR #382"}]'

# List channel members
nworks message members --channel <channelId>

Diretório

nworks directory members   # List organization members

Calendário (User OAuth)

# List today's events
nworks calendar list

# Specify date range
nworks calendar list --from "2026-03-14T00:00:00+09:00" --until "2026-03-14T23:59:59+09:00"

# Create event
nworks calendar create --title "Meeting" --start "2026-03-14T14:00+09:00" --end "2026-03-14T15:00+09:00"

# With location/description
nworks calendar create --title "Lunch" --start "2026-03-14T12:00+09:00" --end "2026-03-14T13:00+09:00" \
  --location "Conference Room" --description "Quarterly review"

# With attendees + notification
nworks calendar create --title "Team meeting" --start "2026-03-14T10:00+09:00" --end "2026-03-14T11:00+09:00" \
  --attendees "user1@example.com,user2@example.com" --notify

# Update event
nworks calendar update --id <eventId> --title "Updated title"

# Delete event
nworks calendar delete --id <eventId>

Drive (User OAuth)

# List files/folders
nworks drive list

# Upload file
nworks drive upload --file ./report.pdf

# Upload to specific folder
nworks drive upload --file ./report.pdf --folder <folderId>

# Download file
nworks drive download --file-id <fileId>

# Specify output path/name
nworks drive download --file-id <fileId> --out ./downloads --name report.pdf

# List shared drives
nworks drive sharedrive-list

# List files in a shared drive (root)
nworks drive sharedrive-files --sharedrive <sharedriveId>

# List files in a shared drive folder
nworks drive sharedrive-files --sharedrive <sharedriveId> --folder <fileId>

# Download a shared drive file
nworks drive sharedrive-download --sharedrive <sharedriveId> --file-id <fileId>

E-mail (User OAuth)

# Send mail
nworks mail send --to "user@example.com" --subject "Subject" --body "Body"

# With CC/BCC
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "Subject" --body "Body"

# List inbox
nworks mail list

# Unread only
nworks mail list --unread

# Read mail detail
nworks mail read --id <mailId>

# Download a mail attachment
nworks mail download-attachment --id <mailId> --attachment-id <attachmentId>

# Specify output path/name
nworks mail download-attachment --id <mailId> --attachment-id <attachmentId> --out ./downloads --name invoice.pdf

Tarefas (User OAuth)

# List tasks
nworks task list

# Incomplete only
nworks task list --status TODO

# Create task
nworks task create --title "Code review" --body "Review PR #382"

# With due date
nworks task create --title "Deploy" --due 2026-03-20

# Mark as done
nworks task update --id <taskId> --status done

# Delete task
nworks task delete --id <taskId>

Boards (User OAuth)

# List boards
nworks board list

# List posts
nworks board posts --board <boardId>

# Read post detail
nworks board read --board <boardId> --post <postId>

# Create post
nworks board create --board <boardId> --title "Announcement" --body "Content"

# With notification + disable comments
nworks board create --board <boardId> --title "Notice" --body "Content" --notify --no-comment

Contatos (User OAuth)

# List contacts
nworks contact list

# Filter by tag
nworks contact list --tag <contactTagId>

# Get contact detail
nworks contact get --id <contactId>

# Create contact
nworks contact create --payload '{"contactName":{"lastName":"Kim","firstName":"Chulsoo"},"emails":[{"email":"chulsoo@example.com","primary":true}],"permission":{"accessibleRange":"MEMBER","isCoEditing":false,"accessibleMembers":[{"id":"<yourUserId>","type":"USER"}]}}'

# Update contact
nworks contact update --id <contactId> --payload '{"telephones":[{"type":"CELLPHONE","telephone":"010-1234-5678","primary":true}]}'

# Delete contact
nworks contact delete --id <contactId>

# List contact tags
nworks contact list-tags

contact create requer contactName e permission; permission.accessibleMembers deve listar pelo menos um membro (geralmente você mesmo). Obtenha seu próprio ID de usuário em nworks whoami.

Notificação de Deploy em CI/CD

# Notify team channel after deployment in GitHub Actions
nworks message send --channel $CHANNEL_ID --text "v${VERSION} deployed"

Script de Automação de Equipe

# Send daily standup reminder to all members
for userId in $(nworks directory members --json | jq -r '.users[].userId'); do
  nworks message send --to "$userId" --text "Standup at 10:00 today"
done

Escopos OAuth

Adicione os escopos necessários no LINE WORKS Developer Console.

EscopoFinalidadeAutenticaçãoNecessário Para
botMensagens de botService Accountmessage send
bot.readLeitura de canal/membros do botService Accountmessage members
calendarGravação no calendárioUser OAuthcalendar create/update/delete (requer calendar.read)
calendar.readLeitura do calendárioUser OAuthcalendar list, também necessário para gravação no calendário
fileLeitura/gravação no driveUser OAuthdrive list/upload/download
file.readDrive somente leituraUser OAuthdrive list/download
mailLeitura/gravação de e-mailUser OAuthmail send/list/read
mail.readE-mail somente leituraUser OAuthmail list/read
taskLeitura/gravação de tarefasUser OAuthtask create/update/delete (requer user.read)
task.readTarefas somente leituraUser OAuthtask list
user.readLeitura de informações do usuárioService Account / User OAuthdirectory members, também necessário para gravação de tarefas
boardLeitura/gravação de boardsUser OAuthboard list/posts/read/create
board.readBoards somente leituraUser OAuthboard list/posts/read
contactLeitura/gravação de contatosUser OAuthcontact create/update/delete (requer contact.read)
contact.readContatos somente leituraUser OAuthcontact list/get/list-tags

Presets são mais simples do que listar escopos:

nworks login --user --preset all       # padrão: funcionalidade completa em um único login
nworks login --user --preset readonly  # escopos somente leitura

default é um alias de all. O envio de mensagens usa a Service Account (bot), então funciona independentemente do preset. Re-login nunca reduz o acesso — escopos recém-solicitados são mesclados com o token existente, então alternar presets apenas adiciona capacidade. Para um conjunto personalizado, use --scope "calendar calendar.read".


Variáveis de Ambiente

Defina variáveis de ambiente para usar o nworks sem nworks login (útil para CI/agentes).

# 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

Servidor MCP com Variáveis de Ambiente

Valores sensíveis (Client Secret, caminho da Private Key) devem ser definidos via campo env da configuração MCP. Valores não sensíveis, como Client ID, podem ser configurados pelo agente de IA através da ferramenta nworks_setup.

{
  "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)>"
      }
    }
  }
}

Licença

Apache-2.0