nworks
CLI + servidor MCP do NAVER WORKS. 26 ferramentas para mensagens, calendário, drive, e-mail, tarefas e quadros.
Documentação
nworks
Destaque em awesome-mcp-servers
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 --userrequer 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/callbackcomo 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_userpara autenticar via navegador diretamente. O Client Secret e o caminho da Private Key devem ser pré-configurados via campoenvda configuração MCP ou variáveis de ambiente do sistema.
Ferramentas MCP (32)
| Ferramenta | Descrição | Autenticação |
|---|---|---|
| Configuração / Autenticação | ||
nworks_setup | Configurar credenciais da API (Client ID, etc.). Client Secret é definido via env | — |
nworks_login_user | Login no navegador via User OAuth (todos os escopos incluídos) | — |
nworks_logout | Excluir credenciais e tokens | — |
nworks_whoami | Verificar status de autenticação | — |
nworks_doctor | Diagnosticar conexão (autenticação, tokens, saúde da API) | — |
| Mensagens | ||
nworks_message_send | Enviar mensagem para usuário/canal | Service Account |
nworks_message_members | Listar membros do canal | Service Account |
nworks_directory_members | Listar membros da organização | Service Account |
| Calendário | ||
nworks_calendar_list | Listar eventos do calendário | User OAuth (calendar.read) |
nworks_calendar_create | Criar evento no calendário | User OAuth (calendar + calendar.read) |
nworks_calendar_update | Atualizar evento no calendário | User OAuth (calendar + calendar.read) |
nworks_calendar_delete | Excluir evento do calendário | User OAuth (calendar + calendar.read) |
| Drive | ||
nworks_drive_list | Listar arquivos/pastas do drive | User OAuth (file.read) |
nworks_drive_upload | Enviar arquivo para o drive | User OAuth (file) |
nworks_drive_download | Baixar arquivo (salva localmente se >5MB) | User OAuth (file.read) |
nworks_sharedrive_list | Listar drives compartilhados | User OAuth (file.read) |
nworks_sharedrive_files | Listar arquivos/pastas em um drive compartilhado | User OAuth (file.read) |
nworks_sharedrive_download | Baixar arquivo de drive compartilhado (salva localmente se >5MB) | User OAuth (file.read) |
nworks_mail_send | Enviar e-mail | User OAuth (mail) |
nworks_mail_list | Listar caixa de entrada | User OAuth (mail.read) |
nworks_mail_read | Ler detalhes do e-mail | User OAuth (mail.read) |
nworks_mail_download_attachment | Baixar anexo de e-mail (salva localmente se >5MB) | User OAuth (mail.read) |
| Tarefas | ||
nworks_task_list | Listar tarefas | User OAuth (task.read) |
nworks_task_create | Criar tarefa | User OAuth (task + user.read) |
nworks_task_update | Atualizar/concluir tarefa | User OAuth (task + user.read) |
nworks_task_delete | Excluir tarefa | User OAuth (task + user.read) |
| Boards | ||
nworks_board_list | Listar boards | User OAuth (board.read) |
nworks_board_posts | Listar posts do board | User OAuth (board.read) |
nworks_board_read | Ler detalhes do post do board | User OAuth (board.read) |
nworks_board_create | Criar post no board | User OAuth (board) |
| Contatos | ||
nworks_contact_list | Listar contatos | User OAuth (contact.read) |
nworks_contact_get | Obter detalhes do contato | User OAuth (contact.read) |
nworks_contact_create | Criar contato | User OAuth (contact) |
nworks_contact_update | Atualizar contato | User OAuth (contact) |
nworks_contact_delete | Excluir contato | User OAuth (contact) |
nworks_contact_list_tags | Listar tags de contato | User 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
--jsonpara análise via pipe/script/agente.message send,mail sendedrive uploadsuportam--dry-runpara 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 createrequercontactNameepermission;permission.accessibleMembersdeve listar pelo menos um membro (geralmente você mesmo). Obtenha seu próprio ID de usuário emnworks 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.
| Escopo | Finalidade | Autenticação | Necessário Para |
|---|---|---|---|
bot | Mensagens de bot | Service Account | message send |
bot.read | Leitura de canal/membros do bot | Service Account | message members |
calendar | Gravação no calendário | User OAuth | calendar create/update/delete (requer calendar.read) |
calendar.read | Leitura do calendário | User OAuth | calendar list, também necessário para gravação no calendário |
file | Leitura/gravação no drive | User OAuth | drive list/upload/download |
file.read | Drive somente leitura | User OAuth | drive list/download |
mail | Leitura/gravação de e-mail | User OAuth | mail send/list/read |
mail.read | E-mail somente leitura | User OAuth | mail list/read |
task | Leitura/gravação de tarefas | User OAuth | task create/update/delete (requer user.read) |
task.read | Tarefas somente leitura | User OAuth | task list |
user.read | Leitura de informações do usuário | Service Account / User OAuth | directory members, também necessário para gravação de tarefas |
board | Leitura/gravação de boards | User OAuth | board list/posts/read/create |
board.read | Boards somente leitura | User OAuth | board list/posts/read |
contact | Leitura/gravação de contatos | User OAuth | contact create/update/delete (requer contact.read) |
contact.read | Contatos somente leitura | User OAuth | contact 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 deall. 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