nworks
NAVER WORKS CLI + MCP server. 26 tools for messages, calendar, drive, mail, tasks, and boards. AI agents can manage NAVER WORKS directly.
README
nworks
<p align="center"> <img src="assets/demo.gif" width="600" alt="nworks demo"> </p>
First full MCP server for NAVER WORKS. NAVER WORKS API를 스크립트나 AI 에이전트에서 쓰기 쉽게 만든 CLI + MCP 서버입니다.
Automate messages, calendar, drive, mail, tasks, and boards — from CLI or AI agents.
Quickstart
npm install -g nworks
nworks login --user
nworks calendar list
AI 에이전트가 실제로 이렇게 씁니다
User: 오늘 일정 알려줘
Claude → nworks_calendar_list
→ 3건: 스탠드업(10:00), 점심미팅(12:00), 코드리뷰(15:00)
User: 팀 채널에 배포 완료 메시지 보내줘
Claude → nworks_message_send
{ "channel": "C001", "text": "v1.2.0 배포 완료" }
→ 메시지가 전송되었습니다
Install
npx nworks # 바로 실행
npm install -g nworks # 글로벌 설치
로그인
# User OAuth (캘린더, 드라이브, 메일, 할 일, 게시판)
nworks login --user --scope "calendar,calendar.read,file,file.read,mail,mail.read,task,task.read,board,board.read,user.read"
# 봇 메시지 전송이 필요한 경우 (Service Account)
nworks login
# 인증 확인
nworks whoami
# 로그아웃
nworks logout
nworks login --user는 CLIENT_ID + CLIENT_SECRET만 있으면 됩니다. 환경변수나 기존 설정에 이미 있는 값은 다시 물어보지 않습니다.
Developer Console 설정: User OAuth를 사용하려면 Developer Console에서 Redirect URL에
http://localhost:9876/callback을 등록해야 합니다.
MCP 서버 (AI 에이전트 연동)
Claude Desktop, Cursor 등에서 MCP server로 NAVER WORKS 26개 도구를 사용할 수 있습니다. 메시지 전송, 일정 관리, 파일 업로드, 메일, 할 일, 게시판까지 — AI 에이전트가 NAVER WORKS 워크플로우를 자동화합니다.
설정
먼저 로그인합니다:
nworks login --user --scope "calendar,calendar.read,file,file.read,mail,mail.read,task,task.read,board,board.read,user.read"
그리고 MCP 설정에 추가합니다 (~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"nworks": {
"command": "nworks",
"args": ["mcp"]
}
}
}
끝입니다. 인증 한 번으로 26개 도구 모두 사용 가능 — 별도 env 설정이 필요 없습니다.
MCP에서 AI 에이전트가 직접 설정하기: CLI 로그인 없이도 AI 에이전트가
nworks_setup→nworks_login_user순서로 호출하면 브라우저 로그인만으로 전체 기능을 사용할 수 있습니다.
MCP 도구 목록 (26개)
| 도구 | 설명 | 필요 인증 |
|---|---|---|
| 설정/인증 | ||
nworks_setup |
API 인증 정보 설정 (Client ID/Secret 등) | — |
nworks_login_user |
User OAuth 브라우저 로그인 (전체 scope 자동 포함) | — |
nworks_logout |
인증 정보 및 토큰 삭제 | — |
nworks_whoami |
인증 상태 확인 | — |
nworks_doctor |
연결 상태 진단 (인증, 토큰, API 점검) | — |
| 메시지 | ||
nworks_message_send |
사용자/채널에 메시지 전송 | Service Account |
nworks_message_members |
채널 구성원 조회 | Service Account |
nworks_directory_members |
조직 구성원 조회 | Service Account |
| 캘린더 | ||
nworks_calendar_list |
캘린더 일정 조회 | User OAuth (calendar.read) |
nworks_calendar_create |
캘린더 일정 생성 | User OAuth (calendar + calendar.read) |
nworks_calendar_update |
캘린더 일정 수정 | User OAuth (calendar + calendar.read) |
nworks_calendar_delete |
캘린더 일정 삭제 | User OAuth (calendar + calendar.read) |
| 드라이브 | ||
nworks_drive_list |
드라이브 파일/폴더 목록 | User OAuth (file.read) |
nworks_drive_upload |
드라이브 파일 업로드 | User OAuth (file) |
nworks_drive_download |
드라이브 파일 다운로드 (5MB 초과 시 로컬 저장) | User OAuth (file.read) |
| 메일 | ||
nworks_mail_send |
메일 전송 | User OAuth (mail) |
nworks_mail_list |
메일 목록 조회 | User OAuth (mail.read) |
nworks_mail_read |
메일 상세 조회 | User OAuth (mail.read) |
| 할 일 | ||
nworks_task_list |
할 일 목록 조회 | User OAuth (task.read) |
nworks_task_create |
할 일 생성 | User OAuth (task + user.read) |
nworks_task_update |
할 일 수정/완료 | User OAuth (task + user.read) |
nworks_task_delete |
할 일 삭제 | User OAuth (task + user.read) |
| 게시판 | ||
nworks_board_list |
게시판 목록 조회 | User OAuth (board.read) |
nworks_board_posts |
게시판 글 목록 조회 | User OAuth (board.read) |
nworks_board_read |
게시판 글 상세 조회 | User OAuth (board.read) |
nworks_board_create |
게시판 글 작성 | User OAuth (board) |
AI 에이전트 사용 예시
User: 내일 오후 2시에 회의 잡고, 팀 채널에 알려줘
Claude → nworks_calendar_create
{ "summary": "회의", "start": "2026-03-15T14:00:00", "end": "2026-03-15T15:00:00" }
→ 일정이 생성되었습니다
Claude → nworks_message_send
{ "channel": "C001", "text": "내일 14:00 회의가 잡혔습니다" }
→ 메시지가 전송되었습니다
CLI 사용법
모든 명령어에
--json지원 (파이프, 스크립트, 에이전트 파싱 용이).message send,mail send,drive upload는--dry-run으로 실제 전송 없이 테스트 가능.
메시지 (Bot API)
# 사용자에게 텍스트 메시지
nworks message send --to <userId> --text "메시지"
# 채널에 텍스트 메시지
nworks message send --channel <channelId> --text "메시지"
# 버튼 메시지
nworks message send --to <userId> --type button --text "PR 리뷰 요청" \
--actions '[{"type":"message","label":"승인","postback":"approve"}]'
# 리스트 메시지
nworks message send --to <userId> --type list --text "오늘의 할 일" \
--elements '[{"title":"코드 리뷰","subtitle":"#382 PR"}]'
# 채널 구성원 조회
nworks message members --channel <channelId>
조직 (Directory API)
nworks directory members # 조직 구성원 목록
캘린더 (User OAuth)
# 오늘 일정 조회
nworks calendar list
# 기간 지정
nworks calendar list --from "2026-03-14T00:00:00+09:00" --until "2026-03-14T23:59:59+09:00"
# 일정 생성
nworks calendar create --title "회의" --start "2026-03-14T14:00+09:00" --end "2026-03-14T15:00+09:00"
# 장소/설명 포함
nworks calendar create --title "점심 미팅" --start "2026-03-14T12:00+09:00" --end "2026-03-14T13:00+09:00" \
--location "강남 식당" --description "분기 리뷰"
# 참석자 지정 + 알림
nworks calendar create --title "팀 회의" --start "2026-03-14T10:00+09:00" --end "2026-03-14T11:00+09:00" \
--attendees "user1@example.com,user2@example.com" --notify
# 일정 수정
nworks calendar update --id <eventId> --title "변경된 제목"
# 일정 삭제
nworks calendar delete --id <eventId>
드라이브 (User OAuth)
# 파일/폴더 목록
nworks drive list
# 파일 업로드
nworks drive upload --file ./report.pdf
# 특정 폴더에 업로드
nworks drive upload --file ./report.pdf --folder <folderId>
# 파일 다운로드
nworks drive download --file-id <fileId>
# 다운로드 경로/파일명 지정
nworks drive download --file-id <fileId> --out ./downloads --name report.pdf
메일 (User OAuth)
# 메일 전송
nworks mail send --to "user@example.com" --subject "제목" --body "내용"
# CC/BCC 포함
nworks mail send --to "user@example.com" --cc "cc@example.com" --subject "제목" --body "내용"
# 받은편지함 목록
nworks mail list
# 읽지 않은 메일만
nworks mail list --unread
# 메일 상세 조회
nworks mail read --id <mailId>
할 일 (User OAuth)
# 할 일 목록
nworks task list
# 미완료만 조회
nworks task list --status TODO
# 할 일 생성
nworks task create --title "코드 리뷰" --body "PR #382 리뷰"
# 마감일 지정
nworks task create --title "배포" --due 2026-03-20
# 할 일 완료 처리
nworks task update --id <taskId> --status done
# 할 일 삭제
nworks task delete --id <taskId>
게시판 (User OAuth)
# 게시판 목록
nworks board list
# 게시판 글 목록
nworks board posts --board <boardId>
# 글 상세 조회
nworks board read --board <boardId> --post <postId>
# 글 작성
nworks board create --board <boardId> --title "공지사항" --body "내용"
# 알림 발송 + 댓글 비활성화
nworks board create --board <boardId> --title "공지" --body "내용" --notify --no-comment
OAuth Scope 설정
NAVER WORKS Developer Console에서 앱의 OAuth Scope를 추가해야 합니다.
| Scope | 용도 | 인증 방식 | 필요한 명령어 |
|---|---|---|---|
bot |
Bot 메시지 전송 | Service Account | message send |
bot.read |
Bot 채널/구성원 조회 | Service Account | message members |
calendar |
캘린더 쓰기 | User OAuth | calendar create/update/delete (calendar.read도 함께 필요) |
calendar.read |
캘린더 읽기 | User OAuth | calendar list, calendar create/update/delete의 의존성 |
file |
드라이브 읽기/쓰기 | User OAuth | drive list/upload/download |
file.read |
드라이브 읽기 전용 | User OAuth | drive list/download |
mail |
메일 읽기/쓰기 | User OAuth | mail send/list/read |
mail.read |
메일 읽기 전용 | User OAuth | mail list/read |
task |
할 일 읽기/쓰기 | User OAuth | task create/update/delete (user.read도 함께 필요) |
task.read |
할 일 읽기 전용 | User OAuth | task list |
user.read |
사용자 정보 조회 | Service Account / User OAuth | directory members, task create/update/delete의 의존성 |
board |
게시판 읽기/쓰기 | User OAuth | board list/posts/read/create |
board.read |
게시판 읽기 전용 | User OAuth | board list/posts/read |
Tip: scope를 변경한 후에는 토큰을 재발급해야 합니다.
nworks logout && nworks login --user --scope "..."
사용 시나리오
CI/CD 배포 알림
# GitHub Actions에서 배포 완료 후 팀 채널에 알림
nworks message send --channel $CHANNEL_ID --text "v${VERSION} 배포 완료"
팀 자동화 스크립트
# 매일 아침 팀원에게 리마인더 전송
for userId in $(nworks directory members --json | jq -r '.users[].userId'); do
nworks message send --to "$userId" --text "오늘의 스탠드업 10시입니다"
done
Advanced Configuration
환경 변수
환경변수로 인증 정보를 설정하면 nworks login 없이 바로 사용할 수 있습니다.
# 공통 (필수)
NWORKS_CLIENT_ID= # 필수
NWORKS_CLIENT_SECRET= # 필수
# 봇 메시지 전송 시에만 필요 (User OAuth만 쓰면 불필요)
NWORKS_SERVICE_ACCOUNT= # 봇 전용
NWORKS_PRIVATE_KEY_PATH= # 봇 전용
NWORKS_BOT_ID= # 봇 전용
# 선택
NWORKS_DOMAIN_ID= # optional
NWORKS_SCOPE= # optional (기본: bot bot.read user.read)
NWORKS_VERBOSE=1 # optional, 디버그 로깅
MCP 서버에 환경 변수 직접 설정
nworks login 대신 환경 변수로 직접 설정할 수도 있습니다:
{
"mcpServers": {
"nworks": {
"command": "npx",
"args": ["-y", "nworks", "mcp"],
"env": {
"NWORKS_CLIENT_ID": "<Client ID>",
"NWORKS_CLIENT_SECRET": "<Client Secret>"
}
}
}
}
봇 메시지도 사용하려면 NWORKS_SERVICE_ACCOUNT, NWORKS_PRIVATE_KEY_PATH, NWORKS_BOT_ID도 추가합니다.
Roadmap
v0.1 — 메시지, 조직 구성원, MCP 서버v0.2 — 캘린더 일정 조회 + User OAuthv0.3 — 드라이브 파일 조회/업로드/다운로드v0.4 — 메일 (mail send/list/read)v0.5 — 할 일 (task list/create/update/delete)v0.6 — 캘린더 쓰기 (calendar create/update/delete)v0.7 — 게시판 (board list/posts/read/create)v1.0 — User OAuth 단독 로그인, MCP/CLI 인증 UX 개선, AI 에이전트 전용 설정 flow (nworks_setup → nworks_login_user), scope 자동 확장, 한국어 에러 안내, nworks doctor
License
Apache-2.0
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。