nworks 1.1.0 β 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +395 -0
- package/README.ko.md +395 -0
- package/README.md +201 -200
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/nworks)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
[](https://www.npmjs.com/package/nworks)
|
|
6
|
+
[](https://glama.ai/mcp/servers/yjcho9317/nworks)
|
|
7
|
+
|
|
8
|
+
Featured in [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers)
|
|
9
|
+
|
|
10
|
+
πΊπΈ English | [π°π· νκ΅μ΄](README.ko.md) | [π―π΅ ζ₯ζ¬θͺ](README.ja.md)
|
|
6
11
|
|
|
7
12
|
<p align="center">
|
|
8
13
|
<img src="assets/demo.gif" width="600" alt="nworks demo">
|
|
9
14
|
</p>
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
**Automate messages, calendar, drive, mail, tasks, and boards β from CLI or AI agents.**
|
|
16
|
+
Full-featured MCP server for LINE WORKS (NAVER WORKS).
|
|
17
|
+
CLI + MCP server β 26 tools covering messages, calendar, drive, mail, tasks, and boards.
|
|
15
18
|
|
|
16
19
|
## Quickstart
|
|
17
20
|
|
|
@@ -21,64 +24,70 @@ nworks login --user
|
|
|
21
24
|
nworks calendar list
|
|
22
25
|
```
|
|
23
26
|
|
|
24
|
-
### AI
|
|
27
|
+
### AI Agents Actually Use It Like This
|
|
25
28
|
|
|
26
29
|
```
|
|
27
|
-
User:
|
|
30
|
+
User: Show me today's schedule
|
|
28
31
|
|
|
29
32
|
Claude β nworks_calendar_list
|
|
30
|
-
β 3
|
|
33
|
+
β 3 events: Standup (10:00), Lunch meeting (12:00), Code review (15:00)
|
|
31
34
|
|
|
32
|
-
User:
|
|
35
|
+
User: Send a deploy complete message to the team channel
|
|
33
36
|
|
|
34
37
|
Claude β nworks_message_send
|
|
35
|
-
{ "channel": "C001", "text": "v1.2.0
|
|
36
|
-
β
|
|
38
|
+
{ "channel": "C001", "text": "v1.2.0 deploy complete" }
|
|
39
|
+
β Message sent
|
|
40
|
+
|
|
41
|
+
User: Check my unread emails and summarize them
|
|
42
|
+
|
|
43
|
+
Claude β nworks_mail_list (unread)
|
|
44
|
+
β 3 unread emails
|
|
45
|
+
Claude β nworks_mail_read (each)
|
|
46
|
+
β "3 unread: 1) Deploy approval from CTO, 2) Meeting invite for Friday, 3) Weekly report reminder"
|
|
37
47
|
```
|
|
38
48
|
|
|
39
49
|
## Install
|
|
40
50
|
|
|
41
51
|
```bash
|
|
42
|
-
npx nworks
|
|
43
|
-
npm install -g nworks #
|
|
52
|
+
npx nworks # Run directly
|
|
53
|
+
npm install -g nworks # Global install
|
|
44
54
|
```
|
|
45
55
|
|
|
46
|
-
##
|
|
56
|
+
## Login
|
|
47
57
|
|
|
48
58
|
```bash
|
|
49
|
-
# User OAuth (
|
|
50
|
-
nworks login --user --scope "calendar
|
|
59
|
+
# User OAuth (calendar, drive, mail, tasks, boards)
|
|
60
|
+
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
51
61
|
|
|
52
|
-
#
|
|
62
|
+
# Bot messaging (Service Account)
|
|
53
63
|
nworks login
|
|
54
64
|
|
|
55
|
-
#
|
|
65
|
+
# Check auth status
|
|
56
66
|
nworks whoami
|
|
57
67
|
|
|
58
|
-
#
|
|
68
|
+
# Logout
|
|
59
69
|
nworks logout
|
|
60
70
|
```
|
|
61
71
|
|
|
62
|
-
> `nworks login --user
|
|
72
|
+
> `nworks login --user` only requires CLIENT_ID + CLIENT_SECRET. Values already set via environment variables or existing config won't be asked again.
|
|
63
73
|
|
|
64
|
-
> **Developer Console
|
|
74
|
+
> **Developer Console**: To use User OAuth, register `http://localhost:9876/callback` as a Redirect URL in the [Developer Console](https://dev.worksmobile.com/en/).
|
|
65
75
|
|
|
66
76
|
---
|
|
67
77
|
|
|
68
|
-
##
|
|
78
|
+
## AI Agent Integration (MCP Server)
|
|
69
79
|
|
|
70
|
-
Claude Desktop, Cursor
|
|
71
|
-
λ©μμ§ μ μ‘, μΌμ κ΄λ¦¬, νμΌ μ
λ‘λ, λ©μΌ, ν μΌ, κ²μνκΉμ§ β AI μμ΄μ νΈκ° NAVER WORKS μν¬νλ‘μ°λ₯Ό μλνν©λλ€.
|
|
80
|
+
Works with Claude Desktop, Cursor, and other MCP-compatible clients.
|
|
72
81
|
|
|
73
|
-
###
|
|
82
|
+
### Setup
|
|
74
83
|
|
|
75
|
-
|
|
84
|
+
Login first:
|
|
76
85
|
|
|
77
86
|
```bash
|
|
78
|
-
nworks login --user --scope "calendar
|
|
87
|
+
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
79
88
|
```
|
|
80
89
|
|
|
81
|
-
|
|
90
|
+
Then add to your MCP config (`~/.config/claude/claude_desktop_config.json`):
|
|
82
91
|
|
|
83
92
|
```json
|
|
84
93
|
{
|
|
@@ -91,273 +100,276 @@ nworks login --user --scope "calendar,calendar.read,file,file.read,mail,mail.rea
|
|
|
91
100
|
}
|
|
92
101
|
```
|
|
93
102
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
>
|
|
97
|
-
|
|
98
|
-
### MCP
|
|
99
|
-
|
|
100
|
-
|
|
|
101
|
-
|
|
102
|
-
|
|
|
103
|
-
| `nworks_setup` | API
|
|
104
|
-
| `nworks_login_user` | User OAuth
|
|
105
|
-
| `nworks_logout` |
|
|
106
|
-
| `nworks_whoami` |
|
|
107
|
-
| `nworks_doctor` |
|
|
108
|
-
|
|
|
109
|
-
| `nworks_message_send` |
|
|
110
|
-
| `nworks_message_members` |
|
|
111
|
-
| `nworks_directory_members` |
|
|
112
|
-
|
|
|
113
|
-
| `nworks_calendar_list` |
|
|
114
|
-
| `nworks_calendar_create` |
|
|
115
|
-
| `nworks_calendar_update` |
|
|
116
|
-
| `nworks_calendar_delete` |
|
|
117
|
-
|
|
|
118
|
-
| `nworks_drive_list` |
|
|
119
|
-
| `nworks_drive_upload` |
|
|
120
|
-
| `nworks_drive_download` |
|
|
121
|
-
|
|
|
122
|
-
| `nworks_mail_send` |
|
|
123
|
-
| `nworks_mail_list` |
|
|
124
|
-
| `nworks_mail_read` |
|
|
125
|
-
|
|
|
126
|
-
| `nworks_task_list` |
|
|
127
|
-
| `nworks_task_create` |
|
|
128
|
-
| `nworks_task_update` |
|
|
129
|
-
| `nworks_task_delete` |
|
|
130
|
-
|
|
|
131
|
-
| `nworks_board_list` |
|
|
132
|
-
| `nworks_board_posts` |
|
|
133
|
-
| `nworks_board_read` |
|
|
134
|
-
| `nworks_board_create` |
|
|
135
|
-
|
|
136
|
-
### AI
|
|
103
|
+
One login enables all 26 tools. No extra env setup needed.
|
|
104
|
+
|
|
105
|
+
> Without CLI login, an AI agent can call `nworks_setup` β `nworks_login_user` to authenticate via browser directly.
|
|
106
|
+
|
|
107
|
+
### MCP Tools (26)
|
|
108
|
+
|
|
109
|
+
| Tool | Description | Auth |
|
|
110
|
+
|------|-------------|------|
|
|
111
|
+
| **Setup / Auth** | | |
|
|
112
|
+
| `nworks_setup` | Configure API credentials (Client ID/Secret) | β |
|
|
113
|
+
| `nworks_login_user` | User OAuth browser login (all scopes included) | β |
|
|
114
|
+
| `nworks_logout` | Delete credentials and tokens | β |
|
|
115
|
+
| `nworks_whoami` | Check auth status | β |
|
|
116
|
+
| `nworks_doctor` | Diagnose connection (auth, tokens, API health) | β |
|
|
117
|
+
| **Messages** | | |
|
|
118
|
+
| `nworks_message_send` | Send message to user/channel | Service Account |
|
|
119
|
+
| `nworks_message_members` | List channel members | Service Account |
|
|
120
|
+
| `nworks_directory_members` | List organization members | Service Account |
|
|
121
|
+
| **Calendar** | | |
|
|
122
|
+
| `nworks_calendar_list` | List calendar events | User OAuth (calendar.read) |
|
|
123
|
+
| `nworks_calendar_create` | Create calendar event | User OAuth (calendar + calendar.read) |
|
|
124
|
+
| `nworks_calendar_update` | Update calendar event | User OAuth (calendar + calendar.read) |
|
|
125
|
+
| `nworks_calendar_delete` | Delete calendar event | User OAuth (calendar + calendar.read) |
|
|
126
|
+
| **Drive** | | |
|
|
127
|
+
| `nworks_drive_list` | List drive files/folders | User OAuth (file.read) |
|
|
128
|
+
| `nworks_drive_upload` | Upload file to drive | User OAuth (file) |
|
|
129
|
+
| `nworks_drive_download` | Download file (saves locally if >5MB) | User OAuth (file.read) |
|
|
130
|
+
| **Mail** | | |
|
|
131
|
+
| `nworks_mail_send` | Send mail | User OAuth (mail) |
|
|
132
|
+
| `nworks_mail_list` | List mailbox | User OAuth (mail.read) |
|
|
133
|
+
| `nworks_mail_read` | Read mail detail | User OAuth (mail.read) |
|
|
134
|
+
| **Tasks** | | |
|
|
135
|
+
| `nworks_task_list` | List tasks | User OAuth (task.read) |
|
|
136
|
+
| `nworks_task_create` | Create task | User OAuth (task + user.read) |
|
|
137
|
+
| `nworks_task_update` | Update/complete task | User OAuth (task + user.read) |
|
|
138
|
+
| `nworks_task_delete` | Delete task | User OAuth (task + user.read) |
|
|
139
|
+
| **Boards** | | |
|
|
140
|
+
| `nworks_board_list` | List boards | User OAuth (board.read) |
|
|
141
|
+
| `nworks_board_posts` | List board posts | User OAuth (board.read) |
|
|
142
|
+
| `nworks_board_read` | Read board post detail | User OAuth (board.read) |
|
|
143
|
+
| `nworks_board_create` | Create board post | User OAuth (board) |
|
|
144
|
+
|
|
145
|
+
### AI Agent Usage Example
|
|
137
146
|
|
|
138
147
|
```
|
|
139
|
-
User:
|
|
148
|
+
User: Schedule a meeting tomorrow at 2pm and notify the team channel
|
|
140
149
|
|
|
141
150
|
Claude β nworks_calendar_create
|
|
142
|
-
{ "summary": "
|
|
143
|
-
β
|
|
151
|
+
{ "summary": "Meeting", "start": "2026-03-15T14:00:00", "end": "2026-03-15T15:00:00" }
|
|
152
|
+
β Event created
|
|
144
153
|
|
|
145
154
|
Claude β nworks_message_send
|
|
146
|
-
{ "channel": "C001", "text": "
|
|
147
|
-
β
|
|
155
|
+
{ "channel": "C001", "text": "Meeting scheduled tomorrow at 14:00" }
|
|
156
|
+
β Message sent
|
|
157
|
+
|
|
158
|
+
User: Check my unread emails and summarize them
|
|
159
|
+
|
|
160
|
+
Claude β nworks_mail_list (unread)
|
|
161
|
+
β 3 unread emails
|
|
162
|
+
Claude β nworks_mail_read (each)
|
|
163
|
+
β "3 unread: 1) Deploy approval from CTO, 2) Meeting invite for Friday, 3) Weekly report reminder"
|
|
148
164
|
```
|
|
149
165
|
|
|
150
166
|
---
|
|
151
167
|
|
|
152
|
-
## CLI
|
|
168
|
+
## CLI Usage
|
|
153
169
|
|
|
154
|
-
>
|
|
170
|
+
> All commands support `--json` for pipe/script/agent parsing. `message send`, `mail send`, and `drive upload` support `--dry-run` for testing without sending.
|
|
155
171
|
|
|
156
|
-
###
|
|
172
|
+
### Messages (Bot API)
|
|
157
173
|
|
|
158
174
|
```bash
|
|
159
|
-
#
|
|
160
|
-
nworks message send --to <userId> --text "
|
|
175
|
+
# Send text to user
|
|
176
|
+
nworks message send --to <userId> --text "Hello"
|
|
161
177
|
|
|
162
|
-
#
|
|
163
|
-
nworks message send --channel <channelId> --text "
|
|
178
|
+
# Send text to channel
|
|
179
|
+
nworks message send --channel <channelId> --text "Announcement"
|
|
164
180
|
|
|
165
|
-
#
|
|
166
|
-
nworks message send --to <userId> --type button --text "PR
|
|
167
|
-
--actions '[{"type":"message","label":"
|
|
181
|
+
# Button message
|
|
182
|
+
nworks message send --to <userId> --type button --text "PR review request" \
|
|
183
|
+
--actions '[{"type":"message","label":"Approve","postback":"approve"}]'
|
|
168
184
|
|
|
169
|
-
#
|
|
170
|
-
nworks message send --to <userId> --type list --text "
|
|
171
|
-
--elements '[{"title":"
|
|
185
|
+
# List message
|
|
186
|
+
nworks message send --to <userId> --type list --text "Today's tasks" \
|
|
187
|
+
--elements '[{"title":"Code review","subtitle":"PR #382"}]'
|
|
172
188
|
|
|
173
|
-
#
|
|
189
|
+
# List channel members
|
|
174
190
|
nworks message members --channel <channelId>
|
|
175
191
|
```
|
|
176
192
|
|
|
177
|
-
###
|
|
193
|
+
### Directory
|
|
178
194
|
|
|
179
195
|
```bash
|
|
180
|
-
nworks directory members #
|
|
196
|
+
nworks directory members # List organization members
|
|
181
197
|
```
|
|
182
198
|
|
|
183
|
-
###
|
|
199
|
+
### Calendar (User OAuth)
|
|
184
200
|
|
|
185
201
|
```bash
|
|
186
|
-
#
|
|
202
|
+
# List today's events
|
|
187
203
|
nworks calendar list
|
|
188
204
|
|
|
189
|
-
#
|
|
205
|
+
# Specify date range
|
|
190
206
|
nworks calendar list --from "2026-03-14T00:00:00+09:00" --until "2026-03-14T23:59:59+09:00"
|
|
191
207
|
|
|
192
|
-
#
|
|
193
|
-
nworks calendar create --title "
|
|
208
|
+
# Create event
|
|
209
|
+
nworks calendar create --title "Meeting" --start "2026-03-14T14:00+09:00" --end "2026-03-14T15:00+09:00"
|
|
194
210
|
|
|
195
|
-
#
|
|
196
|
-
nworks calendar create --title "
|
|
197
|
-
--location "
|
|
211
|
+
# With location/description
|
|
212
|
+
nworks calendar create --title "Lunch" --start "2026-03-14T12:00+09:00" --end "2026-03-14T13:00+09:00" \
|
|
213
|
+
--location "Conference Room" --description "Quarterly review"
|
|
198
214
|
|
|
199
|
-
#
|
|
200
|
-
nworks calendar create --title "
|
|
215
|
+
# With attendees + notification
|
|
216
|
+
nworks calendar create --title "Team meeting" --start "2026-03-14T10:00+09:00" --end "2026-03-14T11:00+09:00" \
|
|
201
217
|
--attendees "user1@example.com,user2@example.com" --notify
|
|
202
218
|
|
|
203
|
-
#
|
|
204
|
-
nworks calendar update --id <eventId> --title "
|
|
219
|
+
# Update event
|
|
220
|
+
nworks calendar update --id <eventId> --title "Updated title"
|
|
205
221
|
|
|
206
|
-
#
|
|
222
|
+
# Delete event
|
|
207
223
|
nworks calendar delete --id <eventId>
|
|
208
224
|
```
|
|
209
225
|
|
|
210
|
-
###
|
|
226
|
+
### Drive (User OAuth)
|
|
211
227
|
|
|
212
228
|
```bash
|
|
213
|
-
#
|
|
229
|
+
# List files/folders
|
|
214
230
|
nworks drive list
|
|
215
231
|
|
|
216
|
-
#
|
|
232
|
+
# Upload file
|
|
217
233
|
nworks drive upload --file ./report.pdf
|
|
218
234
|
|
|
219
|
-
#
|
|
235
|
+
# Upload to specific folder
|
|
220
236
|
nworks drive upload --file ./report.pdf --folder <folderId>
|
|
221
237
|
|
|
222
|
-
#
|
|
238
|
+
# Download file
|
|
223
239
|
nworks drive download --file-id <fileId>
|
|
224
240
|
|
|
225
|
-
#
|
|
241
|
+
# Specify output path/name
|
|
226
242
|
nworks drive download --file-id <fileId> --out ./downloads --name report.pdf
|
|
227
243
|
```
|
|
228
244
|
|
|
229
|
-
###
|
|
245
|
+
### Mail (User OAuth)
|
|
230
246
|
|
|
231
247
|
```bash
|
|
232
|
-
#
|
|
233
|
-
nworks mail send --to "user@example.com" --subject "
|
|
248
|
+
# Send mail
|
|
249
|
+
nworks mail send --to "user@example.com" --subject "Subject" --body "Body"
|
|
234
250
|
|
|
235
|
-
# CC/BCC
|
|
236
|
-
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "
|
|
251
|
+
# With CC/BCC
|
|
252
|
+
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "Subject" --body "Body"
|
|
237
253
|
|
|
238
|
-
#
|
|
254
|
+
# List inbox
|
|
239
255
|
nworks mail list
|
|
240
256
|
|
|
241
|
-
#
|
|
257
|
+
# Unread only
|
|
242
258
|
nworks mail list --unread
|
|
243
259
|
|
|
244
|
-
#
|
|
260
|
+
# Read mail detail
|
|
245
261
|
nworks mail read --id <mailId>
|
|
246
262
|
```
|
|
247
263
|
|
|
248
|
-
###
|
|
264
|
+
### Tasks (User OAuth)
|
|
249
265
|
|
|
250
266
|
```bash
|
|
251
|
-
#
|
|
267
|
+
# List tasks
|
|
252
268
|
nworks task list
|
|
253
269
|
|
|
254
|
-
#
|
|
270
|
+
# Incomplete only
|
|
255
271
|
nworks task list --status TODO
|
|
256
272
|
|
|
257
|
-
#
|
|
258
|
-
nworks task create --title "
|
|
273
|
+
# Create task
|
|
274
|
+
nworks task create --title "Code review" --body "Review PR #382"
|
|
259
275
|
|
|
260
|
-
#
|
|
261
|
-
nworks task create --title "
|
|
276
|
+
# With due date
|
|
277
|
+
nworks task create --title "Deploy" --due 2026-03-20
|
|
262
278
|
|
|
263
|
-
#
|
|
279
|
+
# Mark as done
|
|
264
280
|
nworks task update --id <taskId> --status done
|
|
265
281
|
|
|
266
|
-
#
|
|
282
|
+
# Delete task
|
|
267
283
|
nworks task delete --id <taskId>
|
|
268
284
|
```
|
|
269
285
|
|
|
270
|
-
###
|
|
286
|
+
### Boards (User OAuth)
|
|
271
287
|
|
|
272
288
|
```bash
|
|
273
|
-
#
|
|
289
|
+
# List boards
|
|
274
290
|
nworks board list
|
|
275
291
|
|
|
276
|
-
#
|
|
292
|
+
# List posts
|
|
277
293
|
nworks board posts --board <boardId>
|
|
278
294
|
|
|
279
|
-
#
|
|
295
|
+
# Read post detail
|
|
280
296
|
nworks board read --board <boardId> --post <postId>
|
|
281
297
|
|
|
282
|
-
#
|
|
283
|
-
nworks board create --board <boardId> --title "
|
|
298
|
+
# Create post
|
|
299
|
+
nworks board create --board <boardId> --title "Announcement" --body "Content"
|
|
284
300
|
|
|
285
|
-
#
|
|
286
|
-
nworks board create --board <boardId> --title "
|
|
301
|
+
# With notification + disable comments
|
|
302
|
+
nworks board create --board <boardId> --title "Notice" --body "Content" --notify --no-comment
|
|
287
303
|
```
|
|
288
304
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
## OAuth Scope μ€μ
|
|
292
|
-
|
|
293
|
-
[NAVER WORKS Developer Console](https://dev.worksmobile.com)μμ μ±μ OAuth Scopeλ₯Ό μΆκ°ν΄μΌ ν©λλ€.
|
|
294
|
-
|
|
295
|
-
| Scope | μ©λ | μΈμ¦ λ°©μ | νμν λͺ
λ Ήμ΄ |
|
|
296
|
-
|-------|------|----------|--------------|
|
|
297
|
-
| `bot` | Bot λ©μμ§ μ μ‘ | Service Account | `message send` |
|
|
298
|
-
| `bot.read` | Bot μ±λ/ꡬμ±μ μ‘°ν | Service Account | `message members` |
|
|
299
|
-
| `calendar` | μΊλ¦°λ μ°κΈ° | User OAuth | `calendar create/update/delete` (calendar.readλ ν¨κ» νμ) |
|
|
300
|
-
| `calendar.read` | μΊλ¦°λ μ½κΈ° | User OAuth | `calendar list`, `calendar create/update/delete`μ μμ‘΄μ± |
|
|
301
|
-
| `file` | λλΌμ΄λΈ μ½κΈ°/μ°κΈ° | User OAuth | `drive list/upload/download` |
|
|
302
|
-
| `file.read` | λλΌμ΄λΈ μ½κΈ° μ μ© | User OAuth | `drive list/download` |
|
|
303
|
-
| `mail` | λ©μΌ μ½κΈ°/μ°κΈ° | User OAuth | `mail send/list/read` |
|
|
304
|
-
| `mail.read` | λ©μΌ μ½κΈ° μ μ© | User OAuth | `mail list/read` |
|
|
305
|
-
| `task` | ν μΌ μ½κΈ°/μ°κΈ° | User OAuth | `task create/update/delete` (user.readλ ν¨κ» νμ) |
|
|
306
|
-
| `task.read` | ν μΌ μ½κΈ° μ μ© | User OAuth | `task list` |
|
|
307
|
-
| `user.read` | μ¬μ©μ μ 보 μ‘°ν | Service Account / User OAuth | `directory members`, `task create/update/delete`μ μμ‘΄μ± |
|
|
308
|
-
| `board` | κ²μν μ½κΈ°/μ°κΈ° | User OAuth | `board list/posts/read/create` |
|
|
309
|
-
| `board.read` | κ²μν μ½κΈ° μ μ© | User OAuth | `board list/posts/read` |
|
|
310
|
-
|
|
311
|
-
> **Tip**: scopeλ₯Ό λ³κ²½ν νμλ ν ν°μ μ¬λ°κΈν΄μΌ ν©λλ€.
|
|
312
|
-
> ```bash
|
|
313
|
-
> nworks logout && nworks login --user --scope "..."
|
|
314
|
-
> ```
|
|
315
|
-
|
|
316
|
-
## μ¬μ© μλ리μ€
|
|
317
|
-
|
|
318
|
-
### CI/CD λ°°ν¬ μλ¦Ό
|
|
305
|
+
### CI/CD Deploy Notification
|
|
319
306
|
|
|
320
307
|
```bash
|
|
321
|
-
#
|
|
322
|
-
nworks message send --channel $CHANNEL_ID --text "v${VERSION}
|
|
308
|
+
# Notify team channel after deployment in GitHub Actions
|
|
309
|
+
nworks message send --channel $CHANNEL_ID --text "v${VERSION} deployed"
|
|
323
310
|
```
|
|
324
311
|
|
|
325
|
-
###
|
|
312
|
+
### Team Automation Script
|
|
326
313
|
|
|
327
314
|
```bash
|
|
328
|
-
#
|
|
315
|
+
# Send daily standup reminder to all members
|
|
329
316
|
for userId in $(nworks directory members --json | jq -r '.users[].userId'); do
|
|
330
|
-
nworks message send --to "$userId" --text "
|
|
317
|
+
nworks message send --to "$userId" --text "Standup at 10:00 today"
|
|
331
318
|
done
|
|
332
319
|
```
|
|
333
320
|
|
|
334
321
|
---
|
|
335
322
|
|
|
336
|
-
##
|
|
323
|
+
## OAuth Scopes
|
|
324
|
+
|
|
325
|
+
Add the required scopes in the [LINE WORKS Developer Console](https://dev.worksmobile.com/en/).
|
|
326
|
+
|
|
327
|
+
| Scope | Purpose | Auth | Required For |
|
|
328
|
+
|-------|---------|------|-------------|
|
|
329
|
+
| `bot` | Bot messaging | Service Account | `message send` |
|
|
330
|
+
| `bot.read` | Bot channel/member read | Service Account | `message members` |
|
|
331
|
+
| `calendar` | Calendar write | User OAuth | `calendar create/update/delete` (requires calendar.read) |
|
|
332
|
+
| `calendar.read` | Calendar read | User OAuth | `calendar list`, also needed for calendar write |
|
|
333
|
+
| `file` | Drive read/write | User OAuth | `drive list/upload/download` |
|
|
334
|
+
| `file.read` | Drive read-only | User OAuth | `drive list/download` |
|
|
335
|
+
| `mail` | Mail read/write | User OAuth | `mail send/list/read` |
|
|
336
|
+
| `mail.read` | Mail read-only | User OAuth | `mail list/read` |
|
|
337
|
+
| `task` | Tasks read/write | User OAuth | `task create/update/delete` (requires user.read) |
|
|
338
|
+
| `task.read` | Tasks read-only | User OAuth | `task list` |
|
|
339
|
+
| `user.read` | User info read | Service Account / User OAuth | `directory members`, also needed for task write |
|
|
340
|
+
| `board` | Boards read/write | User OAuth | `board list/posts/read/create` |
|
|
341
|
+
| `board.read` | Boards read-only | User OAuth | `board list/posts/read` |
|
|
342
|
+
|
|
343
|
+
> **Tip**: After changing scopes, reissue your token:
|
|
344
|
+
> ```bash
|
|
345
|
+
> nworks logout && nworks login --user --scope "..."
|
|
346
|
+
> ```
|
|
347
|
+
|
|
348
|
+
---
|
|
337
349
|
|
|
338
|
-
|
|
350
|
+
## Environment Variables
|
|
339
351
|
|
|
340
|
-
|
|
352
|
+
Set environment variables to use nworks without `nworks login` (useful for CI/agents).
|
|
341
353
|
|
|
342
354
|
```bash
|
|
343
|
-
#
|
|
344
|
-
NWORKS_CLIENT_ID=
|
|
345
|
-
NWORKS_CLIENT_SECRET=
|
|
346
|
-
|
|
347
|
-
#
|
|
348
|
-
NWORKS_SERVICE_ACCOUNT=
|
|
349
|
-
NWORKS_PRIVATE_KEY_PATH=
|
|
350
|
-
NWORKS_BOT_ID=
|
|
351
|
-
|
|
352
|
-
#
|
|
353
|
-
NWORKS_DOMAIN_ID=
|
|
354
|
-
NWORKS_SCOPE= #
|
|
355
|
-
NWORKS_VERBOSE=1 #
|
|
355
|
+
# Required
|
|
356
|
+
NWORKS_CLIENT_ID=
|
|
357
|
+
NWORKS_CLIENT_SECRET=
|
|
358
|
+
|
|
359
|
+
# Bot messaging only (not needed for User OAuth)
|
|
360
|
+
NWORKS_SERVICE_ACCOUNT=
|
|
361
|
+
NWORKS_PRIVATE_KEY_PATH=
|
|
362
|
+
NWORKS_BOT_ID=
|
|
363
|
+
|
|
364
|
+
# Optional
|
|
365
|
+
NWORKS_DOMAIN_ID=
|
|
366
|
+
NWORKS_SCOPE= # default: bot bot.read user.read
|
|
367
|
+
NWORKS_VERBOSE=1 # debug logging
|
|
356
368
|
```
|
|
357
369
|
|
|
358
|
-
### MCP
|
|
370
|
+
### MCP Server with Environment Variables
|
|
359
371
|
|
|
360
|
-
`nworks login
|
|
372
|
+
Instead of `nworks login`, you can pass credentials directly:
|
|
361
373
|
|
|
362
374
|
```json
|
|
363
375
|
{
|
|
@@ -374,21 +386,10 @@ NWORKS_VERBOSE=1 # optional, λλ²κ·Έ λ‘κΉ
|
|
|
374
386
|
}
|
|
375
387
|
```
|
|
376
388
|
|
|
377
|
-
|
|
389
|
+
Add `NWORKS_SERVICE_ACCOUNT`, `NWORKS_PRIVATE_KEY_PATH`, and `NWORKS_BOT_ID` for bot messaging.
|
|
378
390
|
|
|
379
391
|
---
|
|
380
392
|
|
|
381
|
-
## Roadmap
|
|
382
|
-
|
|
383
|
-
- ~~**v0.1** β λ©μμ§, μ‘°μ§ κ΅¬μ±μ, MCP μλ²~~
|
|
384
|
-
- ~~**v0.2** β μΊλ¦°λ μΌμ μ‘°ν + User OAuth~~
|
|
385
|
-
- ~~**v0.3** β λλΌμ΄λΈ νμΌ μ‘°ν/μ
λ‘λ/λ€μ΄λ‘λ~~
|
|
386
|
-
- ~~**v0.4** β λ©μΌ (`mail send/list/read`)~~
|
|
387
|
-
- ~~**v0.5** β ν μΌ (`task list/create/update/delete`)~~
|
|
388
|
-
- ~~**v0.6** β μΊλ¦°λ μ°κΈ° (`calendar create/update/delete`)~~
|
|
389
|
-
- ~~**v0.7** β κ²μν (`board list/posts/read/create`)~~
|
|
390
|
-
- ~~**v1.0** β User OAuth λ¨λ
λ‘κ·ΈμΈ, MCP/CLI μΈμ¦ UX κ°μ , AI μμ΄μ νΈ μ μ© μ€μ flow (nworks_setup β nworks_login_user), scope μλ νμ₯, νκ΅μ΄ μλ¬ μλ΄, nworks doctor~~
|
|
391
|
-
|
|
392
393
|
## License
|
|
393
394
|
|
|
394
395
|
Apache-2.0
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nworks",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "CLI and MCP server for NAVER WORKS β control messages, calendar, drive, mail, tasks, and boards from terminal or AI agents (Claude, Cursor)",
|
|
3
|
+
"version": "1.1.2",
|
|
4
|
+
"description": "CLI and MCP server for NAVER WORKS / LINE WORKS β control messages, calendar, drive, mail, tasks, and boards from terminal or AI agents (Claude, Cursor)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"nworks": "./dist/index.js"
|