nworks 1.2.1 โ 1.2.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/LICENSE +190 -190
- package/README.ja.md +393 -393
- package/README.ko.md +393 -393
- package/README.md +393 -393
- package/dist/index.js +286 -85
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +269 -80
- package/dist/mcp.js.map +1 -1
- package/package.json +58 -58
package/README.ko.md
CHANGED
|
@@ -1,393 +1,393 @@
|
|
|
1
|
-
# nworks
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/nworks)
|
|
4
|
-
[](LICENSE)
|
|
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.md) | ๐ฐ๐ท ํ๊ตญ์ด | [๐ฏ๐ต ๆฅๆฌ่ช](README.ja.md)
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
<img src="assets/demo.gif" width="600" alt="nworks demo">
|
|
14
|
-
</p>
|
|
15
|
-
|
|
16
|
-
NAVER WORKS (LINE WORKS) ์ต์ด์ MCP ์๋ฒ.
|
|
17
|
-
๋ฉ์์ง, ์บ๋ฆฐ๋, ๋๋ผ์ด๋ธ, ๋ฉ์ผ, ํ ์ผ, ๊ฒ์ํ โ 26๊ฐ ๋๊ตฌ๋ฅผ CLI์ AI ์์ด์ ํธ์์ ์ธ ์ ์์ต๋๋ค.
|
|
18
|
-
|
|
19
|
-
## Quickstart
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
npm install -g nworks
|
|
23
|
-
nworks login --user
|
|
24
|
-
nworks calendar list
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### AI ์์ด์ ํธ๊ฐ ์ค์ ๋ก ์ด๋ ๊ฒ ์๋๋ค
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
User: ์ค๋ ์ผ์ ์๋ ค์ค
|
|
31
|
-
|
|
32
|
-
Claude โ nworks_calendar_list
|
|
33
|
-
โ 3๊ฑด: ์คํ ๋์
(10:00), ์ ์ฌ๋ฏธํ
(12:00), ์ฝ๋๋ฆฌ๋ทฐ(15:00)
|
|
34
|
-
|
|
35
|
-
User: ํ ์ฑ๋์ ๋ฐฐํฌ ์๋ฃ ๋ฉ์์ง ๋ณด๋ด์ค
|
|
36
|
-
|
|
37
|
-
Claude โ nworks_message_send
|
|
38
|
-
{ "channel": "C001", "text": "v1.2.0 ๋ฐฐํฌ ์๋ฃ" }
|
|
39
|
-
โ ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค
|
|
40
|
-
|
|
41
|
-
User: ์ฝ์ง ์์ ๋ฉ์ผ ํ์ธํ๊ณ ์์ฝํด์ค
|
|
42
|
-
|
|
43
|
-
Claude โ nworks_mail_list (unread)
|
|
44
|
-
โ ์ฝ์ง ์์ ๋ฉ์ผ 3ํต
|
|
45
|
-
Claude โ nworks_mail_read (๊ฐ๊ฐ)
|
|
46
|
-
โ "3ํต: 1) CTO ๋ฐฐํฌ ์น์ธ, 2) ๊ธ์์ผ ํ์ ์ด๋, 3) ์ฃผ๊ฐ ๋ณด๊ณ ๋ฆฌ๋ง์ธ๋"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Install
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx nworks # ๋ฐ๋ก ์คํ
|
|
53
|
-
npm install -g nworks # ๊ธ๋ก๋ฒ ์ค์น
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## ๋ก๊ทธ์ธ
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
# User OAuth (์บ๋ฆฐ๋, ๋๋ผ์ด๋ธ, ๋ฉ์ผ, ํ ์ผ, ๊ฒ์ํ)
|
|
60
|
-
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
61
|
-
|
|
62
|
-
# ๋ด ๋ฉ์์ง ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ (Service Account)
|
|
63
|
-
nworks login
|
|
64
|
-
|
|
65
|
-
# ์ธ์ฆ ํ์ธ
|
|
66
|
-
nworks whoami
|
|
67
|
-
|
|
68
|
-
# ๋ก๊ทธ์์
|
|
69
|
-
nworks logout
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
> `nworks login --user`๋ CLIENT_ID + CLIENT_SECRET๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. ํ๊ฒฝ๋ณ์๋ ๊ธฐ์กด ์ค์ ์ ์ด๋ฏธ ์๋ ๊ฐ์ ๋ค์ ๋ฌผ์ด๋ณด์ง ์์ต๋๋ค.
|
|
73
|
-
|
|
74
|
-
> **Developer Console ์ค์ **: User OAuth๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด [Developer Console](https://dev.worksmobile.com)์์ Redirect URL์ `http://localhost:9876/callback`์ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## AI ์์ด์ ํธ ์ฐ๋ (MCP ์๋ฒ)
|
|
79
|
-
|
|
80
|
-
Claude Desktop, Cursor ๋ฑ MCP ํธํ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
|
81
|
-
|
|
82
|
-
### ์ค์
|
|
83
|
-
|
|
84
|
-
๋จผ์ ๋ก๊ทธ์ธํฉ๋๋ค:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
๊ทธ๋ฆฌ๊ณ MCP ์ค์ ์ ์ถ๊ฐํฉ๋๋ค (`~/.config/claude/claude_desktop_config.json`):
|
|
91
|
-
|
|
92
|
-
```json
|
|
93
|
-
{
|
|
94
|
-
"mcpServers": {
|
|
95
|
-
"nworks": {
|
|
96
|
-
"command": "nworks",
|
|
97
|
-
"args": ["mcp"]
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
๋ก๊ทธ์ธ ํ ๋ฒ์ด๋ฉด 26๊ฐ ๋๊ตฌ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ. ๋ณ๋ env ์ค์ ๋ถํ์.
|
|
104
|
-
|
|
105
|
-
> **MCP์์ AI ์์ด์ ํธ๊ฐ ์ง์ ์ค์ ํ๊ธฐ**: CLI ๋ก๊ทธ์ธ ์์ด๋ AI ์์ด์ ํธ๊ฐ `nworks_setup` โ `nworks_login_user` ์์๋ก ํธ์ถํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ๋ง์ผ๋ก ์ ์ฒด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Client Secret๊ณผ Private Key ๊ฒฝ๋ก๋ MCP ์ค์ ์ `env` ํ๋ ๋๋ ์์คํ
ํ๊ฒฝ๋ณ์๋ก ๋ฏธ๋ฆฌ ์ค์ ํด์ผ ํฉ๋๋ค.
|
|
106
|
-
|
|
107
|
-
### MCP ๋๊ตฌ ๋ชฉ๋ก (26๊ฐ)
|
|
108
|
-
|
|
109
|
-
| ๋๊ตฌ | ์ค๋ช
| ํ์ ์ธ์ฆ |
|
|
110
|
-
|------|------|----------|
|
|
111
|
-
| **์ค์ /์ธ์ฆ** | | |
|
|
112
|
-
| `nworks_setup` | API ์ธ์ฆ ์ ๋ณด ์ค์ (Client ID ๋ฑ). Client Secret์ ํ๊ฒฝ๋ณ์๋ก ์ค์ | โ |
|
|
113
|
-
| `nworks_login_user` | User OAuth ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ (์ ์ฒด scope ์๋ ํฌํจ) | โ |
|
|
114
|
-
| `nworks_logout` | ์ธ์ฆ ์ ๋ณด ๋ฐ ํ ํฐ ์ญ์ | โ |
|
|
115
|
-
| `nworks_whoami` | ์ธ์ฆ ์ํ ํ์ธ | โ |
|
|
116
|
-
| `nworks_doctor` | ์ฐ๊ฒฐ ์ํ ์ง๋จ (์ธ์ฆ, ํ ํฐ, API ์ ๊ฒ) | โ |
|
|
117
|
-
| **๋ฉ์์ง** | | |
|
|
118
|
-
| `nworks_message_send` | ์ฌ์ฉ์/์ฑ๋์ ๋ฉ์์ง ์ ์ก | Service Account |
|
|
119
|
-
| `nworks_message_members` | ์ฑ๋ ๊ตฌ์ฑ์ ์กฐํ | Service Account |
|
|
120
|
-
| `nworks_directory_members` | ์กฐ์ง ๊ตฌ์ฑ์ ์กฐํ | Service Account |
|
|
121
|
-
| **์บ๋ฆฐ๋** | | |
|
|
122
|
-
| `nworks_calendar_list` | ์บ๋ฆฐ๋ ์ผ์ ์กฐํ | User OAuth (calendar.read) |
|
|
123
|
-
| `nworks_calendar_create` | ์บ๋ฆฐ๋ ์ผ์ ์์ฑ | User OAuth (calendar + calendar.read) |
|
|
124
|
-
| `nworks_calendar_update` | ์บ๋ฆฐ๋ ์ผ์ ์์ | User OAuth (calendar + calendar.read) |
|
|
125
|
-
| `nworks_calendar_delete` | ์บ๋ฆฐ๋ ์ผ์ ์ญ์ | User OAuth (calendar + calendar.read) |
|
|
126
|
-
| **๋๋ผ์ด๋ธ** | | |
|
|
127
|
-
| `nworks_drive_list` | ๋๋ผ์ด๋ธ ํ์ผ/ํด๋ ๋ชฉ๋ก | User OAuth (file.read) |
|
|
128
|
-
| `nworks_drive_upload` | ๋๋ผ์ด๋ธ ํ์ผ ์
๋ก๋ | User OAuth (file) |
|
|
129
|
-
| `nworks_drive_download` | ๋๋ผ์ด๋ธ ํ์ผ ๋ค์ด๋ก๋ (5MB ์ด๊ณผ ์ ๋ก์ปฌ ์ ์ฅ) | User OAuth (file.read) |
|
|
130
|
-
| **๋ฉ์ผ** | | |
|
|
131
|
-
| `nworks_mail_send` | ๋ฉ์ผ ์ ์ก | User OAuth (mail) |
|
|
132
|
-
| `nworks_mail_list` | ๋ฉ์ผ ๋ชฉ๋ก ์กฐํ | User OAuth (mail.read) |
|
|
133
|
-
| `nworks_mail_read` | ๋ฉ์ผ ์์ธ ์กฐํ | User OAuth (mail.read) |
|
|
134
|
-
| **ํ ์ผ** | | |
|
|
135
|
-
| `nworks_task_list` | ํ ์ผ ๋ชฉ๋ก ์กฐํ | User OAuth (task.read) |
|
|
136
|
-
| `nworks_task_create` | ํ ์ผ ์์ฑ | User OAuth (task + user.read) |
|
|
137
|
-
| `nworks_task_update` | ํ ์ผ ์์ /์๋ฃ | User OAuth (task + user.read) |
|
|
138
|
-
| `nworks_task_delete` | ํ ์ผ ์ญ์ | User OAuth (task + user.read) |
|
|
139
|
-
| **๊ฒ์ํ** | | |
|
|
140
|
-
| `nworks_board_list` | ๊ฒ์ํ ๋ชฉ๋ก ์กฐํ | User OAuth (board.read) |
|
|
141
|
-
| `nworks_board_posts` | ๊ฒ์ํ ๊ธ ๋ชฉ๋ก ์กฐํ | User OAuth (board.read) |
|
|
142
|
-
| `nworks_board_read` | ๊ฒ์ํ ๊ธ ์์ธ ์กฐํ | User OAuth (board.read) |
|
|
143
|
-
| `nworks_board_create` | ๊ฒ์ํ ๊ธ ์์ฑ | User OAuth (board) |
|
|
144
|
-
|
|
145
|
-
### AI ์์ด์ ํธ ์ฌ์ฉ ์์
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
User: ๋ด์ผ ์คํ 2์์ ํ์ ์ก๊ณ , ํ ์ฑ๋์ ์๋ ค์ค
|
|
149
|
-
|
|
150
|
-
Claude โ nworks_calendar_create
|
|
151
|
-
{ "summary": "ํ์", "start": "2026-03-15T14:00:00", "end": "2026-03-15T15:00:00" }
|
|
152
|
-
โ ์ผ์ ์ด ์์ฑ๋์์ต๋๋ค
|
|
153
|
-
|
|
154
|
-
Claude โ nworks_message_send
|
|
155
|
-
{ "channel": "C001", "text": "๋ด์ผ 14:00 ํ์๊ฐ ์กํ์ต๋๋ค" }
|
|
156
|
-
โ ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค
|
|
157
|
-
|
|
158
|
-
User: ์ฝ์ง ์์ ๋ฉ์ผ ํ์ธํ๊ณ ์์ฝํด์ค
|
|
159
|
-
|
|
160
|
-
Claude โ nworks_mail_list (unread)
|
|
161
|
-
โ ์ฝ์ง ์์ ๋ฉ์ผ 3ํต
|
|
162
|
-
Claude โ nworks_mail_read (๊ฐ๊ฐ)
|
|
163
|
-
โ "3ํต: 1) CTO ๋ฐฐํฌ ์น์ธ, 2) ๊ธ์์ผ ํ์ ์ด๋, 3) ์ฃผ๊ฐ ๋ณด๊ณ ๋ฆฌ๋ง์ธ๋"
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## CLI ์ฌ์ฉ๋ฒ
|
|
169
|
-
|
|
170
|
-
> ๋ชจ๋ ๋ช
๋ น์ด์ `--json` ์ง์ (ํ์ดํ, ์คํฌ๋ฆฝํธ, ์์ด์ ํธ ํ์ฑ ์ฉ์ด). `message send`, `mail send`, `drive upload`๋ `--dry-run`์ผ๋ก ์ค์ ์ ์ก ์์ด ํ
์คํธ ๊ฐ๋ฅ.
|
|
171
|
-
|
|
172
|
-
### ๋ฉ์์ง (Bot API)
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
# ์ฌ์ฉ์์๊ฒ ํ
์คํธ ๋ฉ์์ง
|
|
176
|
-
nworks message send --to <userId> --text "๋ฉ์์ง"
|
|
177
|
-
|
|
178
|
-
# ์ฑ๋์ ํ
์คํธ ๋ฉ์์ง
|
|
179
|
-
nworks message send --channel <channelId> --text "๋ฉ์์ง"
|
|
180
|
-
|
|
181
|
-
# ๋ฒํผ ๋ฉ์์ง
|
|
182
|
-
nworks message send --to <userId> --type button --text "PR ๋ฆฌ๋ทฐ ์์ฒญ" \
|
|
183
|
-
--actions '[{"type":"message","label":"์น์ธ","postback":"approve"}]'
|
|
184
|
-
|
|
185
|
-
# ๋ฆฌ์คํธ ๋ฉ์์ง
|
|
186
|
-
nworks message send --to <userId> --type list --text "์ค๋์ ํ ์ผ" \
|
|
187
|
-
--elements '[{"title":"์ฝ๋ ๋ฆฌ๋ทฐ","subtitle":"#382 PR"}]'
|
|
188
|
-
|
|
189
|
-
# ์ฑ๋ ๊ตฌ์ฑ์ ์กฐํ
|
|
190
|
-
nworks message members --channel <channelId>
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### ์กฐ์ง (Directory API)
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
nworks directory members # ์กฐ์ง ๊ตฌ์ฑ์ ๋ชฉ๋ก
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### ์บ๋ฆฐ๋ (User OAuth)
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
# ์ค๋ ์ผ์ ์กฐํ
|
|
203
|
-
nworks calendar list
|
|
204
|
-
|
|
205
|
-
# ๊ธฐ๊ฐ ์ง์
|
|
206
|
-
nworks calendar list --from "2026-03-14T00:00:00+09:00" --until "2026-03-14T23:59:59+09:00"
|
|
207
|
-
|
|
208
|
-
# ์ผ์ ์์ฑ
|
|
209
|
-
nworks calendar create --title "ํ์" --start "2026-03-14T14:00+09:00" --end "2026-03-14T15:00+09:00"
|
|
210
|
-
|
|
211
|
-
# ์ฅ์/์ค๋ช
ํฌํจ
|
|
212
|
-
nworks calendar create --title "์ ์ฌ ๋ฏธํ
" --start "2026-03-14T12:00+09:00" --end "2026-03-14T13:00+09:00" \
|
|
213
|
-
--location "๊ฐ๋จ ์๋น" --description "๋ถ๊ธฐ ๋ฆฌ๋ทฐ"
|
|
214
|
-
|
|
215
|
-
# ์ฐธ์์ ์ง์ + ์๋ฆผ
|
|
216
|
-
nworks calendar create --title "ํ ํ์" --start "2026-03-14T10:00+09:00" --end "2026-03-14T11:00+09:00" \
|
|
217
|
-
--attendees "user1@example.com,user2@example.com" --notify
|
|
218
|
-
|
|
219
|
-
# ์ผ์ ์์
|
|
220
|
-
nworks calendar update --id <eventId> --title "๋ณ๊ฒฝ๋ ์ ๋ชฉ"
|
|
221
|
-
|
|
222
|
-
# ์ผ์ ์ญ์
|
|
223
|
-
nworks calendar delete --id <eventId>
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### ๋๋ผ์ด๋ธ (User OAuth)
|
|
227
|
-
|
|
228
|
-
```bash
|
|
229
|
-
# ํ์ผ/ํด๋ ๋ชฉ๋ก
|
|
230
|
-
nworks drive list
|
|
231
|
-
|
|
232
|
-
# ํ์ผ ์
๋ก๋
|
|
233
|
-
nworks drive upload --file ./report.pdf
|
|
234
|
-
|
|
235
|
-
# ํน์ ํด๋์ ์
๋ก๋
|
|
236
|
-
nworks drive upload --file ./report.pdf --folder <folderId>
|
|
237
|
-
|
|
238
|
-
# ํ์ผ ๋ค์ด๋ก๋
|
|
239
|
-
nworks drive download --file-id <fileId>
|
|
240
|
-
|
|
241
|
-
# ๋ค์ด๋ก๋ ๊ฒฝ๋ก/ํ์ผ๋ช
์ง์
|
|
242
|
-
nworks drive download --file-id <fileId> --out ./downloads --name report.pdf
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### ๋ฉ์ผ (User OAuth)
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
# ๋ฉ์ผ ์ ์ก
|
|
249
|
-
nworks mail send --to "user@example.com" --subject "์ ๋ชฉ" --body "๋ด์ฉ"
|
|
250
|
-
|
|
251
|
-
# CC/BCC ํฌํจ
|
|
252
|
-
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "์ ๋ชฉ" --body "๋ด์ฉ"
|
|
253
|
-
|
|
254
|
-
# ๋ฐ์ํธ์งํจ ๋ชฉ๋ก
|
|
255
|
-
nworks mail list
|
|
256
|
-
|
|
257
|
-
# ์ฝ์ง ์์ ๋ฉ์ผ๋ง
|
|
258
|
-
nworks mail list --unread
|
|
259
|
-
|
|
260
|
-
# ๋ฉ์ผ ์์ธ ์กฐํ
|
|
261
|
-
nworks mail read --id <mailId>
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
### ํ ์ผ (User OAuth)
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# ํ ์ผ ๋ชฉ๋ก
|
|
268
|
-
nworks task list
|
|
269
|
-
|
|
270
|
-
# ๋ฏธ์๋ฃ๋ง ์กฐํ
|
|
271
|
-
nworks task list --status TODO
|
|
272
|
-
|
|
273
|
-
# ํ ์ผ ์์ฑ
|
|
274
|
-
nworks task create --title "์ฝ๋ ๋ฆฌ๋ทฐ" --body "PR #382 ๋ฆฌ๋ทฐ"
|
|
275
|
-
|
|
276
|
-
# ๋ง๊ฐ์ผ ์ง์
|
|
277
|
-
nworks task create --title "๋ฐฐํฌ" --due 2026-03-20
|
|
278
|
-
|
|
279
|
-
# ํ ์ผ ์๋ฃ ์ฒ๋ฆฌ
|
|
280
|
-
nworks task update --id <taskId> --status done
|
|
281
|
-
|
|
282
|
-
# ํ ์ผ ์ญ์
|
|
283
|
-
nworks task delete --id <taskId>
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### ๊ฒ์ํ (User OAuth)
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
# ๊ฒ์ํ ๋ชฉ๋ก
|
|
290
|
-
nworks board list
|
|
291
|
-
|
|
292
|
-
# ๊ฒ์ํ ๊ธ ๋ชฉ๋ก
|
|
293
|
-
nworks board posts --board <boardId>
|
|
294
|
-
|
|
295
|
-
# ๊ธ ์์ธ ์กฐํ
|
|
296
|
-
nworks board read --board <boardId> --post <postId>
|
|
297
|
-
|
|
298
|
-
# ๊ธ ์์ฑ
|
|
299
|
-
nworks board create --board <boardId> --title "๊ณต์ง์ฌํญ" --body "๋ด์ฉ"
|
|
300
|
-
|
|
301
|
-
# ์๋ฆผ ๋ฐ์ก + ๋๊ธ ๋นํ์ฑํ
|
|
302
|
-
nworks board create --board <boardId> --title "๊ณต์ง" --body "๋ด์ฉ" --notify --no-comment
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### CI/CD ๋ฐฐํฌ ์๋ฆผ
|
|
306
|
-
|
|
307
|
-
```bash
|
|
308
|
-
# GitHub Actions์์ ๋ฐฐํฌ ์๋ฃ ํ ํ ์ฑ๋์ ์๋ฆผ
|
|
309
|
-
nworks message send --channel $CHANNEL_ID --text "v${VERSION} ๋ฐฐํฌ ์๋ฃ"
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### ํ ์๋ํ ์คํฌ๋ฆฝํธ
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
# ๋งค์ผ ์์นจ ํ์์๊ฒ ๋ฆฌ๋ง์ธ๋ ์ ์ก
|
|
316
|
-
for userId in $(nworks directory members --json | jq -r '.users[].userId'); do
|
|
317
|
-
nworks message send --to "$userId" --text "์ค๋์ ์คํ ๋์
10์์
๋๋ค"
|
|
318
|
-
done
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
## OAuth Scope ์ค์
|
|
324
|
-
|
|
325
|
-
[NAVER WORKS Developer Console](https://dev.worksmobile.com)์์ ์ฑ์ OAuth Scope๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
|
|
326
|
-
|
|
327
|
-
| Scope | ์ฉ๋ | ์ธ์ฆ ๋ฐฉ์ | ํ์ํ ๋ช
๋ น์ด |
|
|
328
|
-
|-------|------|----------|--------------|
|
|
329
|
-
| `bot` | Bot ๋ฉ์์ง ์ ์ก | Service Account | `message send` |
|
|
330
|
-
| `bot.read` | Bot ์ฑ๋/๊ตฌ์ฑ์ ์กฐํ | Service Account | `message members` |
|
|
331
|
-
| `calendar` | ์บ๋ฆฐ๋ ์ฐ๊ธฐ | User OAuth | `calendar create/update/delete` (calendar.read๋ ํจ๊ป ํ์) |
|
|
332
|
-
| `calendar.read` | ์บ๋ฆฐ๋ ์ฝ๊ธฐ | User OAuth | `calendar list`, `calendar create/update/delete`์ ์์กด์ฑ |
|
|
333
|
-
| `file` | ๋๋ผ์ด๋ธ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `drive list/upload/download` |
|
|
334
|
-
| `file.read` | ๋๋ผ์ด๋ธ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `drive list/download` |
|
|
335
|
-
| `mail` | ๋ฉ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `mail send/list/read` |
|
|
336
|
-
| `mail.read` | ๋ฉ์ผ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `mail list/read` |
|
|
337
|
-
| `task` | ํ ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `task create/update/delete` (user.read๋ ํจ๊ป ํ์) |
|
|
338
|
-
| `task.read` | ํ ์ผ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `task list` |
|
|
339
|
-
| `user.read` | ์ฌ์ฉ์ ์ ๋ณด ์กฐํ | Service Account / User OAuth | `directory members`, `task create/update/delete`์ ์์กด์ฑ |
|
|
340
|
-
| `board` | ๊ฒ์ํ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `board list/posts/read/create` |
|
|
341
|
-
| `board.read` | ๊ฒ์ํ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `board list/posts/read` |
|
|
342
|
-
|
|
343
|
-
> **Tip**: scope๋ฅผ ๋ณ๊ฒฝํ ํ์๋ ํ ํฐ์ ์ฌ๋ฐ๊ธํด์ผ ํฉ๋๋ค.
|
|
344
|
-
> ```bash
|
|
345
|
-
> nworks logout && nworks login --user --scope "..."
|
|
346
|
-
> ```
|
|
347
|
-
|
|
348
|
-
---
|
|
349
|
-
|
|
350
|
-
## ํ๊ฒฝ ๋ณ์
|
|
351
|
-
|
|
352
|
-
ํ๊ฒฝ๋ณ์๋ก ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํ๋ฉด `nworks login` ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค (CI/์์ด์ ํธ์ฉ).
|
|
353
|
-
|
|
354
|
-
```bash
|
|
355
|
-
# ๊ณตํต (ํ์)
|
|
356
|
-
NWORKS_CLIENT_ID=
|
|
357
|
-
NWORKS_CLIENT_SECRET=
|
|
358
|
-
|
|
359
|
-
# ๋ด ๋ฉ์์ง ์ ์ก ์์๋ง ํ์ (User OAuth๋ง ์ฐ๋ฉด ๋ถํ์)
|
|
360
|
-
NWORKS_SERVICE_ACCOUNT=
|
|
361
|
-
NWORKS_PRIVATE_KEY_PATH=
|
|
362
|
-
NWORKS_BOT_ID=
|
|
363
|
-
|
|
364
|
-
# ์ ํ
|
|
365
|
-
NWORKS_DOMAIN_ID=
|
|
366
|
-
NWORKS_SCOPE= # ๊ธฐ๋ณธ: bot bot.read user.read
|
|
367
|
-
NWORKS_VERBOSE=1 # ๋๋ฒ๊ทธ ๋ก๊น
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
### MCP ์๋ฒ์ ํ๊ฒฝ ๋ณ์ ์ง์ ์ค์
|
|
371
|
-
|
|
372
|
-
๋ฏผ๊ฐ ์ ๋ณด(Client Secret, Private Key ๊ฒฝ๋ก)๋ MCP ์ค์ ์ `env` ํ๋๋ก ์ค์ ํฉ๋๋ค. Client ID ๋ฑ ๋ฏผ๊ฐํ์ง ์์ ๊ฐ์ AI ์์ด์ ํธ๊ฐ `nworks_setup` tool๋ก ์ง์ ์ค์ ํ ์ ์์ต๋๋ค.
|
|
373
|
-
|
|
374
|
-
```json
|
|
375
|
-
{
|
|
376
|
-
"mcpServers": {
|
|
377
|
-
"nworks": {
|
|
378
|
-
"command": "npx",
|
|
379
|
-
"args": ["-y", "nworks", "mcp"],
|
|
380
|
-
"env": {
|
|
381
|
-
"NWORKS_CLIENT_SECRET": "<Client Secret>",
|
|
382
|
-
"NWORKS_PRIVATE_KEY_PATH": "<Private Key ํ์ผ ์ ๋ ๊ฒฝ๋ก (Service Account ์ฌ์ฉ ์)>"
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
## License
|
|
392
|
-
|
|
393
|
-
Apache-2.0
|
|
1
|
+
# nworks
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/nworks)
|
|
4
|
+
[](LICENSE)
|
|
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.md) | ๐ฐ๐ท ํ๊ตญ์ด | [๐ฏ๐ต ๆฅๆฌ่ช](README.ja.md)
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="assets/demo.gif" width="600" alt="nworks demo">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
NAVER WORKS (LINE WORKS) ์ต์ด์ MCP ์๋ฒ.
|
|
17
|
+
๋ฉ์์ง, ์บ๋ฆฐ๋, ๋๋ผ์ด๋ธ, ๋ฉ์ผ, ํ ์ผ, ๊ฒ์ํ โ 26๊ฐ ๋๊ตฌ๋ฅผ CLI์ AI ์์ด์ ํธ์์ ์ธ ์ ์์ต๋๋ค.
|
|
18
|
+
|
|
19
|
+
## Quickstart
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g nworks
|
|
23
|
+
nworks login --user
|
|
24
|
+
nworks calendar list
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### AI ์์ด์ ํธ๊ฐ ์ค์ ๋ก ์ด๋ ๊ฒ ์๋๋ค
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
User: ์ค๋ ์ผ์ ์๋ ค์ค
|
|
31
|
+
|
|
32
|
+
Claude โ nworks_calendar_list
|
|
33
|
+
โ 3๊ฑด: ์คํ ๋์
(10:00), ์ ์ฌ๋ฏธํ
(12:00), ์ฝ๋๋ฆฌ๋ทฐ(15:00)
|
|
34
|
+
|
|
35
|
+
User: ํ ์ฑ๋์ ๋ฐฐํฌ ์๋ฃ ๋ฉ์์ง ๋ณด๋ด์ค
|
|
36
|
+
|
|
37
|
+
Claude โ nworks_message_send
|
|
38
|
+
{ "channel": "C001", "text": "v1.2.0 ๋ฐฐํฌ ์๋ฃ" }
|
|
39
|
+
โ ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค
|
|
40
|
+
|
|
41
|
+
User: ์ฝ์ง ์์ ๋ฉ์ผ ํ์ธํ๊ณ ์์ฝํด์ค
|
|
42
|
+
|
|
43
|
+
Claude โ nworks_mail_list (unread)
|
|
44
|
+
โ ์ฝ์ง ์์ ๋ฉ์ผ 3ํต
|
|
45
|
+
Claude โ nworks_mail_read (๊ฐ๊ฐ)
|
|
46
|
+
โ "3ํต: 1) CTO ๋ฐฐํฌ ์น์ธ, 2) ๊ธ์์ผ ํ์ ์ด๋, 3) ์ฃผ๊ฐ ๋ณด๊ณ ๋ฆฌ๋ง์ธ๋"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx nworks # ๋ฐ๋ก ์คํ
|
|
53
|
+
npm install -g nworks # ๊ธ๋ก๋ฒ ์ค์น
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## ๋ก๊ทธ์ธ
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# User OAuth (์บ๋ฆฐ๋, ๋๋ผ์ด๋ธ, ๋ฉ์ผ, ํ ์ผ, ๊ฒ์ํ)
|
|
60
|
+
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
61
|
+
|
|
62
|
+
# ๋ด ๋ฉ์์ง ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ (Service Account)
|
|
63
|
+
nworks login
|
|
64
|
+
|
|
65
|
+
# ์ธ์ฆ ํ์ธ
|
|
66
|
+
nworks whoami
|
|
67
|
+
|
|
68
|
+
# ๋ก๊ทธ์์
|
|
69
|
+
nworks logout
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> `nworks login --user`๋ CLIENT_ID + CLIENT_SECRET๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. ํ๊ฒฝ๋ณ์๋ ๊ธฐ์กด ์ค์ ์ ์ด๋ฏธ ์๋ ๊ฐ์ ๋ค์ ๋ฌผ์ด๋ณด์ง ์์ต๋๋ค.
|
|
73
|
+
|
|
74
|
+
> **Developer Console ์ค์ **: User OAuth๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด [Developer Console](https://dev.worksmobile.com)์์ Redirect URL์ `http://localhost:9876/callback`์ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## AI ์์ด์ ํธ ์ฐ๋ (MCP ์๋ฒ)
|
|
79
|
+
|
|
80
|
+
Claude Desktop, Cursor ๋ฑ MCP ํธํ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
|
|
81
|
+
|
|
82
|
+
### ์ค์
|
|
83
|
+
|
|
84
|
+
๋จผ์ ๋ก๊ทธ์ธํฉ๋๋ค:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
๊ทธ๋ฆฌ๊ณ MCP ์ค์ ์ ์ถ๊ฐํฉ๋๋ค (`~/.config/claude/claude_desktop_config.json`):
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"mcpServers": {
|
|
95
|
+
"nworks": {
|
|
96
|
+
"command": "nworks",
|
|
97
|
+
"args": ["mcp"]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
๋ก๊ทธ์ธ ํ ๋ฒ์ด๋ฉด 26๊ฐ ๋๊ตฌ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ. ๋ณ๋ env ์ค์ ๋ถํ์.
|
|
104
|
+
|
|
105
|
+
> **MCP์์ AI ์์ด์ ํธ๊ฐ ์ง์ ์ค์ ํ๊ธฐ**: CLI ๋ก๊ทธ์ธ ์์ด๋ AI ์์ด์ ํธ๊ฐ `nworks_setup` โ `nworks_login_user` ์์๋ก ํธ์ถํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ๋ง์ผ๋ก ์ ์ฒด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Client Secret๊ณผ Private Key ๊ฒฝ๋ก๋ MCP ์ค์ ์ `env` ํ๋ ๋๋ ์์คํ
ํ๊ฒฝ๋ณ์๋ก ๋ฏธ๋ฆฌ ์ค์ ํด์ผ ํฉ๋๋ค.
|
|
106
|
+
|
|
107
|
+
### MCP ๋๊ตฌ ๋ชฉ๋ก (26๊ฐ)
|
|
108
|
+
|
|
109
|
+
| ๋๊ตฌ | ์ค๋ช
| ํ์ ์ธ์ฆ |
|
|
110
|
+
|------|------|----------|
|
|
111
|
+
| **์ค์ /์ธ์ฆ** | | |
|
|
112
|
+
| `nworks_setup` | API ์ธ์ฆ ์ ๋ณด ์ค์ (Client ID ๋ฑ). Client Secret์ ํ๊ฒฝ๋ณ์๋ก ์ค์ | โ |
|
|
113
|
+
| `nworks_login_user` | User OAuth ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ (์ ์ฒด scope ์๋ ํฌํจ) | โ |
|
|
114
|
+
| `nworks_logout` | ์ธ์ฆ ์ ๋ณด ๋ฐ ํ ํฐ ์ญ์ | โ |
|
|
115
|
+
| `nworks_whoami` | ์ธ์ฆ ์ํ ํ์ธ | โ |
|
|
116
|
+
| `nworks_doctor` | ์ฐ๊ฒฐ ์ํ ์ง๋จ (์ธ์ฆ, ํ ํฐ, API ์ ๊ฒ) | โ |
|
|
117
|
+
| **๋ฉ์์ง** | | |
|
|
118
|
+
| `nworks_message_send` | ์ฌ์ฉ์/์ฑ๋์ ๋ฉ์์ง ์ ์ก | Service Account |
|
|
119
|
+
| `nworks_message_members` | ์ฑ๋ ๊ตฌ์ฑ์ ์กฐํ | Service Account |
|
|
120
|
+
| `nworks_directory_members` | ์กฐ์ง ๊ตฌ์ฑ์ ์กฐํ | Service Account |
|
|
121
|
+
| **์บ๋ฆฐ๋** | | |
|
|
122
|
+
| `nworks_calendar_list` | ์บ๋ฆฐ๋ ์ผ์ ์กฐํ | User OAuth (calendar.read) |
|
|
123
|
+
| `nworks_calendar_create` | ์บ๋ฆฐ๋ ์ผ์ ์์ฑ | User OAuth (calendar + calendar.read) |
|
|
124
|
+
| `nworks_calendar_update` | ์บ๋ฆฐ๋ ์ผ์ ์์ | User OAuth (calendar + calendar.read) |
|
|
125
|
+
| `nworks_calendar_delete` | ์บ๋ฆฐ๋ ์ผ์ ์ญ์ | User OAuth (calendar + calendar.read) |
|
|
126
|
+
| **๋๋ผ์ด๋ธ** | | |
|
|
127
|
+
| `nworks_drive_list` | ๋๋ผ์ด๋ธ ํ์ผ/ํด๋ ๋ชฉ๋ก | User OAuth (file.read) |
|
|
128
|
+
| `nworks_drive_upload` | ๋๋ผ์ด๋ธ ํ์ผ ์
๋ก๋ | User OAuth (file) |
|
|
129
|
+
| `nworks_drive_download` | ๋๋ผ์ด๋ธ ํ์ผ ๋ค์ด๋ก๋ (5MB ์ด๊ณผ ์ ๋ก์ปฌ ์ ์ฅ) | User OAuth (file.read) |
|
|
130
|
+
| **๋ฉ์ผ** | | |
|
|
131
|
+
| `nworks_mail_send` | ๋ฉ์ผ ์ ์ก | User OAuth (mail) |
|
|
132
|
+
| `nworks_mail_list` | ๋ฉ์ผ ๋ชฉ๋ก ์กฐํ | User OAuth (mail.read) |
|
|
133
|
+
| `nworks_mail_read` | ๋ฉ์ผ ์์ธ ์กฐํ | User OAuth (mail.read) |
|
|
134
|
+
| **ํ ์ผ** | | |
|
|
135
|
+
| `nworks_task_list` | ํ ์ผ ๋ชฉ๋ก ์กฐํ | User OAuth (task.read) |
|
|
136
|
+
| `nworks_task_create` | ํ ์ผ ์์ฑ | User OAuth (task + user.read) |
|
|
137
|
+
| `nworks_task_update` | ํ ์ผ ์์ /์๋ฃ | User OAuth (task + user.read) |
|
|
138
|
+
| `nworks_task_delete` | ํ ์ผ ์ญ์ | User OAuth (task + user.read) |
|
|
139
|
+
| **๊ฒ์ํ** | | |
|
|
140
|
+
| `nworks_board_list` | ๊ฒ์ํ ๋ชฉ๋ก ์กฐํ | User OAuth (board.read) |
|
|
141
|
+
| `nworks_board_posts` | ๊ฒ์ํ ๊ธ ๋ชฉ๋ก ์กฐํ | User OAuth (board.read) |
|
|
142
|
+
| `nworks_board_read` | ๊ฒ์ํ ๊ธ ์์ธ ์กฐํ | User OAuth (board.read) |
|
|
143
|
+
| `nworks_board_create` | ๊ฒ์ํ ๊ธ ์์ฑ | User OAuth (board) |
|
|
144
|
+
|
|
145
|
+
### AI ์์ด์ ํธ ์ฌ์ฉ ์์
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
User: ๋ด์ผ ์คํ 2์์ ํ์ ์ก๊ณ , ํ ์ฑ๋์ ์๋ ค์ค
|
|
149
|
+
|
|
150
|
+
Claude โ nworks_calendar_create
|
|
151
|
+
{ "summary": "ํ์", "start": "2026-03-15T14:00:00", "end": "2026-03-15T15:00:00" }
|
|
152
|
+
โ ์ผ์ ์ด ์์ฑ๋์์ต๋๋ค
|
|
153
|
+
|
|
154
|
+
Claude โ nworks_message_send
|
|
155
|
+
{ "channel": "C001", "text": "๋ด์ผ 14:00 ํ์๊ฐ ์กํ์ต๋๋ค" }
|
|
156
|
+
โ ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค
|
|
157
|
+
|
|
158
|
+
User: ์ฝ์ง ์์ ๋ฉ์ผ ํ์ธํ๊ณ ์์ฝํด์ค
|
|
159
|
+
|
|
160
|
+
Claude โ nworks_mail_list (unread)
|
|
161
|
+
โ ์ฝ์ง ์์ ๋ฉ์ผ 3ํต
|
|
162
|
+
Claude โ nworks_mail_read (๊ฐ๊ฐ)
|
|
163
|
+
โ "3ํต: 1) CTO ๋ฐฐํฌ ์น์ธ, 2) ๊ธ์์ผ ํ์ ์ด๋, 3) ์ฃผ๊ฐ ๋ณด๊ณ ๋ฆฌ๋ง์ธ๋"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## CLI ์ฌ์ฉ๋ฒ
|
|
169
|
+
|
|
170
|
+
> ๋ชจ๋ ๋ช
๋ น์ด์ `--json` ์ง์ (ํ์ดํ, ์คํฌ๋ฆฝํธ, ์์ด์ ํธ ํ์ฑ ์ฉ์ด). `message send`, `mail send`, `drive upload`๋ `--dry-run`์ผ๋ก ์ค์ ์ ์ก ์์ด ํ
์คํธ ๊ฐ๋ฅ.
|
|
171
|
+
|
|
172
|
+
### ๋ฉ์์ง (Bot API)
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# ์ฌ์ฉ์์๊ฒ ํ
์คํธ ๋ฉ์์ง
|
|
176
|
+
nworks message send --to <userId> --text "๋ฉ์์ง"
|
|
177
|
+
|
|
178
|
+
# ์ฑ๋์ ํ
์คํธ ๋ฉ์์ง
|
|
179
|
+
nworks message send --channel <channelId> --text "๋ฉ์์ง"
|
|
180
|
+
|
|
181
|
+
# ๋ฒํผ ๋ฉ์์ง
|
|
182
|
+
nworks message send --to <userId> --type button --text "PR ๋ฆฌ๋ทฐ ์์ฒญ" \
|
|
183
|
+
--actions '[{"type":"message","label":"์น์ธ","postback":"approve"}]'
|
|
184
|
+
|
|
185
|
+
# ๋ฆฌ์คํธ ๋ฉ์์ง
|
|
186
|
+
nworks message send --to <userId> --type list --text "์ค๋์ ํ ์ผ" \
|
|
187
|
+
--elements '[{"title":"์ฝ๋ ๋ฆฌ๋ทฐ","subtitle":"#382 PR"}]'
|
|
188
|
+
|
|
189
|
+
# ์ฑ๋ ๊ตฌ์ฑ์ ์กฐํ
|
|
190
|
+
nworks message members --channel <channelId>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### ์กฐ์ง (Directory API)
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
nworks directory members # ์กฐ์ง ๊ตฌ์ฑ์ ๋ชฉ๋ก
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### ์บ๋ฆฐ๋ (User OAuth)
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# ์ค๋ ์ผ์ ์กฐํ
|
|
203
|
+
nworks calendar list
|
|
204
|
+
|
|
205
|
+
# ๊ธฐ๊ฐ ์ง์
|
|
206
|
+
nworks calendar list --from "2026-03-14T00:00:00+09:00" --until "2026-03-14T23:59:59+09:00"
|
|
207
|
+
|
|
208
|
+
# ์ผ์ ์์ฑ
|
|
209
|
+
nworks calendar create --title "ํ์" --start "2026-03-14T14:00+09:00" --end "2026-03-14T15:00+09:00"
|
|
210
|
+
|
|
211
|
+
# ์ฅ์/์ค๋ช
ํฌํจ
|
|
212
|
+
nworks calendar create --title "์ ์ฌ ๋ฏธํ
" --start "2026-03-14T12:00+09:00" --end "2026-03-14T13:00+09:00" \
|
|
213
|
+
--location "๊ฐ๋จ ์๋น" --description "๋ถ๊ธฐ ๋ฆฌ๋ทฐ"
|
|
214
|
+
|
|
215
|
+
# ์ฐธ์์ ์ง์ + ์๋ฆผ
|
|
216
|
+
nworks calendar create --title "ํ ํ์" --start "2026-03-14T10:00+09:00" --end "2026-03-14T11:00+09:00" \
|
|
217
|
+
--attendees "user1@example.com,user2@example.com" --notify
|
|
218
|
+
|
|
219
|
+
# ์ผ์ ์์
|
|
220
|
+
nworks calendar update --id <eventId> --title "๋ณ๊ฒฝ๋ ์ ๋ชฉ"
|
|
221
|
+
|
|
222
|
+
# ์ผ์ ์ญ์
|
|
223
|
+
nworks calendar delete --id <eventId>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### ๋๋ผ์ด๋ธ (User OAuth)
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# ํ์ผ/ํด๋ ๋ชฉ๋ก
|
|
230
|
+
nworks drive list
|
|
231
|
+
|
|
232
|
+
# ํ์ผ ์
๋ก๋
|
|
233
|
+
nworks drive upload --file ./report.pdf
|
|
234
|
+
|
|
235
|
+
# ํน์ ํด๋์ ์
๋ก๋
|
|
236
|
+
nworks drive upload --file ./report.pdf --folder <folderId>
|
|
237
|
+
|
|
238
|
+
# ํ์ผ ๋ค์ด๋ก๋
|
|
239
|
+
nworks drive download --file-id <fileId>
|
|
240
|
+
|
|
241
|
+
# ๋ค์ด๋ก๋ ๊ฒฝ๋ก/ํ์ผ๋ช
์ง์
|
|
242
|
+
nworks drive download --file-id <fileId> --out ./downloads --name report.pdf
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### ๋ฉ์ผ (User OAuth)
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# ๋ฉ์ผ ์ ์ก
|
|
249
|
+
nworks mail send --to "user@example.com" --subject "์ ๋ชฉ" --body "๋ด์ฉ"
|
|
250
|
+
|
|
251
|
+
# CC/BCC ํฌํจ
|
|
252
|
+
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "์ ๋ชฉ" --body "๋ด์ฉ"
|
|
253
|
+
|
|
254
|
+
# ๋ฐ์ํธ์งํจ ๋ชฉ๋ก
|
|
255
|
+
nworks mail list
|
|
256
|
+
|
|
257
|
+
# ์ฝ์ง ์์ ๋ฉ์ผ๋ง
|
|
258
|
+
nworks mail list --unread
|
|
259
|
+
|
|
260
|
+
# ๋ฉ์ผ ์์ธ ์กฐํ
|
|
261
|
+
nworks mail read --id <mailId>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### ํ ์ผ (User OAuth)
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# ํ ์ผ ๋ชฉ๋ก
|
|
268
|
+
nworks task list
|
|
269
|
+
|
|
270
|
+
# ๋ฏธ์๋ฃ๋ง ์กฐํ
|
|
271
|
+
nworks task list --status TODO
|
|
272
|
+
|
|
273
|
+
# ํ ์ผ ์์ฑ
|
|
274
|
+
nworks task create --title "์ฝ๋ ๋ฆฌ๋ทฐ" --body "PR #382 ๋ฆฌ๋ทฐ"
|
|
275
|
+
|
|
276
|
+
# ๋ง๊ฐ์ผ ์ง์
|
|
277
|
+
nworks task create --title "๋ฐฐํฌ" --due 2026-03-20
|
|
278
|
+
|
|
279
|
+
# ํ ์ผ ์๋ฃ ์ฒ๋ฆฌ
|
|
280
|
+
nworks task update --id <taskId> --status done
|
|
281
|
+
|
|
282
|
+
# ํ ์ผ ์ญ์
|
|
283
|
+
nworks task delete --id <taskId>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### ๊ฒ์ํ (User OAuth)
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# ๊ฒ์ํ ๋ชฉ๋ก
|
|
290
|
+
nworks board list
|
|
291
|
+
|
|
292
|
+
# ๊ฒ์ํ ๊ธ ๋ชฉ๋ก
|
|
293
|
+
nworks board posts --board <boardId>
|
|
294
|
+
|
|
295
|
+
# ๊ธ ์์ธ ์กฐํ
|
|
296
|
+
nworks board read --board <boardId> --post <postId>
|
|
297
|
+
|
|
298
|
+
# ๊ธ ์์ฑ
|
|
299
|
+
nworks board create --board <boardId> --title "๊ณต์ง์ฌํญ" --body "๋ด์ฉ"
|
|
300
|
+
|
|
301
|
+
# ์๋ฆผ ๋ฐ์ก + ๋๊ธ ๋นํ์ฑํ
|
|
302
|
+
nworks board create --board <boardId> --title "๊ณต์ง" --body "๋ด์ฉ" --notify --no-comment
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### CI/CD ๋ฐฐํฌ ์๋ฆผ
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# GitHub Actions์์ ๋ฐฐํฌ ์๋ฃ ํ ํ ์ฑ๋์ ์๋ฆผ
|
|
309
|
+
nworks message send --channel $CHANNEL_ID --text "v${VERSION} ๋ฐฐํฌ ์๋ฃ"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### ํ ์๋ํ ์คํฌ๋ฆฝํธ
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
# ๋งค์ผ ์์นจ ํ์์๊ฒ ๋ฆฌ๋ง์ธ๋ ์ ์ก
|
|
316
|
+
for userId in $(nworks directory members --json | jq -r '.users[].userId'); do
|
|
317
|
+
nworks message send --to "$userId" --text "์ค๋์ ์คํ ๋์
10์์
๋๋ค"
|
|
318
|
+
done
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## OAuth Scope ์ค์
|
|
324
|
+
|
|
325
|
+
[NAVER WORKS Developer Console](https://dev.worksmobile.com)์์ ์ฑ์ OAuth Scope๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
|
|
326
|
+
|
|
327
|
+
| Scope | ์ฉ๋ | ์ธ์ฆ ๋ฐฉ์ | ํ์ํ ๋ช
๋ น์ด |
|
|
328
|
+
|-------|------|----------|--------------|
|
|
329
|
+
| `bot` | Bot ๋ฉ์์ง ์ ์ก | Service Account | `message send` |
|
|
330
|
+
| `bot.read` | Bot ์ฑ๋/๊ตฌ์ฑ์ ์กฐํ | Service Account | `message members` |
|
|
331
|
+
| `calendar` | ์บ๋ฆฐ๋ ์ฐ๊ธฐ | User OAuth | `calendar create/update/delete` (calendar.read๋ ํจ๊ป ํ์) |
|
|
332
|
+
| `calendar.read` | ์บ๋ฆฐ๋ ์ฝ๊ธฐ | User OAuth | `calendar list`, `calendar create/update/delete`์ ์์กด์ฑ |
|
|
333
|
+
| `file` | ๋๋ผ์ด๋ธ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `drive list/upload/download` |
|
|
334
|
+
| `file.read` | ๋๋ผ์ด๋ธ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `drive list/download` |
|
|
335
|
+
| `mail` | ๋ฉ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `mail send/list/read` |
|
|
336
|
+
| `mail.read` | ๋ฉ์ผ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `mail list/read` |
|
|
337
|
+
| `task` | ํ ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `task create/update/delete` (user.read๋ ํจ๊ป ํ์) |
|
|
338
|
+
| `task.read` | ํ ์ผ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `task list` |
|
|
339
|
+
| `user.read` | ์ฌ์ฉ์ ์ ๋ณด ์กฐํ | Service Account / User OAuth | `directory members`, `task create/update/delete`์ ์์กด์ฑ |
|
|
340
|
+
| `board` | ๊ฒ์ํ ์ฝ๊ธฐ/์ฐ๊ธฐ | User OAuth | `board list/posts/read/create` |
|
|
341
|
+
| `board.read` | ๊ฒ์ํ ์ฝ๊ธฐ ์ ์ฉ | User OAuth | `board list/posts/read` |
|
|
342
|
+
|
|
343
|
+
> **Tip**: scope๋ฅผ ๋ณ๊ฒฝํ ํ์๋ ํ ํฐ์ ์ฌ๋ฐ๊ธํด์ผ ํฉ๋๋ค.
|
|
344
|
+
> ```bash
|
|
345
|
+
> nworks logout && nworks login --user --scope "..."
|
|
346
|
+
> ```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## ํ๊ฒฝ ๋ณ์
|
|
351
|
+
|
|
352
|
+
ํ๊ฒฝ๋ณ์๋ก ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํ๋ฉด `nworks login` ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค (CI/์์ด์ ํธ์ฉ).
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# ๊ณตํต (ํ์)
|
|
356
|
+
NWORKS_CLIENT_ID=
|
|
357
|
+
NWORKS_CLIENT_SECRET=
|
|
358
|
+
|
|
359
|
+
# ๋ด ๋ฉ์์ง ์ ์ก ์์๋ง ํ์ (User OAuth๋ง ์ฐ๋ฉด ๋ถํ์)
|
|
360
|
+
NWORKS_SERVICE_ACCOUNT=
|
|
361
|
+
NWORKS_PRIVATE_KEY_PATH=
|
|
362
|
+
NWORKS_BOT_ID=
|
|
363
|
+
|
|
364
|
+
# ์ ํ
|
|
365
|
+
NWORKS_DOMAIN_ID=
|
|
366
|
+
NWORKS_SCOPE= # ๊ธฐ๋ณธ: bot bot.read user.read
|
|
367
|
+
NWORKS_VERBOSE=1 # ๋๋ฒ๊ทธ ๋ก๊น
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### MCP ์๋ฒ์ ํ๊ฒฝ ๋ณ์ ์ง์ ์ค์
|
|
371
|
+
|
|
372
|
+
๋ฏผ๊ฐ ์ ๋ณด(Client Secret, Private Key ๊ฒฝ๋ก)๋ MCP ์ค์ ์ `env` ํ๋๋ก ์ค์ ํฉ๋๋ค. Client ID ๋ฑ ๋ฏผ๊ฐํ์ง ์์ ๊ฐ์ AI ์์ด์ ํธ๊ฐ `nworks_setup` tool๋ก ์ง์ ์ค์ ํ ์ ์์ต๋๋ค.
|
|
373
|
+
|
|
374
|
+
```json
|
|
375
|
+
{
|
|
376
|
+
"mcpServers": {
|
|
377
|
+
"nworks": {
|
|
378
|
+
"command": "npx",
|
|
379
|
+
"args": ["-y", "nworks", "mcp"],
|
|
380
|
+
"env": {
|
|
381
|
+
"NWORKS_CLIENT_SECRET": "<Client Secret>",
|
|
382
|
+
"NWORKS_PRIVATE_KEY_PATH": "<Private Key ํ์ผ ์ ๋ ๊ฒฝ๋ก (Service Account ์ฌ์ฉ ์)>"
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## License
|
|
392
|
+
|
|
393
|
+
Apache-2.0
|