naver-mail-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NAVER_ID | No | Naver ID for IMAP/SMTP login. Required for stdio mode or fixed-token mode; OAuth users enter it at login. | |
| PUBLIC_URL | No | Public URL of the deployed Worker, e.g. http://localhost:8787 for local development. | |
| ALLOWED_USERS | No | Comma-separated Naver IDs allowed to connect. If empty, anyone can connect with their own account as a public server. | |
| SAVE_SENT_COPY | No | Whether to save a copy of sent messages in the Sent mailbox. Set to false if Naver automatically saves SMTP-sent messages and duplicates occur. | true |
| MCP_BEARER_TOKEN | No | A long random string used for fixed bearer-token authentication without OAuth. | |
| NAVER_APP_PASSWORD | No | Naver application password for IMAP/SMTP login. Required for stdio mode or fixed-token mode; OAuth users enter it at login. Regular login passwords are rejected. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_profileA | Returns the connected Naver Mail address, total messages and unread count in the inbox. Use it to confirm which account is connected. |
| search_threadsA | IMPORTANT: results are previews (up to 5 messages per thread, from this page only). Never answer questions about the latest or unread email from previews alone; call get_thread to read relevant threads in full. Lists email threads in the Naver Mail account matching a query, newest first, with pagination. Each thread has its id, messageCount (messages from this page) and messages with id, sender, recipients, date, labelIds, subject and snippet. Use it to find thread ids before reading full threads or acting on emails. |
| get_threadA | Retrieves an email thread (conversation) with all its messages, oldest first, across folders (inbox, sent, user folders). Drafts are omitted. Threads are reconstructed from Message-ID/References headers. Use PLAIN_TEXT to save context. |
| get_messageA | Retrieves a single email message by id, including body and attachment metadata. For whole conversations use get_thread. Use PLAIN_TEXT to prevent context exhaustion. |
| get_attachmentA | Downloads one attachment of a message. Returns text for text-like files (txt, csv, html, json, ics) and base64 data (up to 8MB). |
| list_labelsA | Lists labels with message and unread counts. In Naver Mail labels are folders: system labels INBOX, SENT, DRAFT, TRASH, SPAM map to the matching folders; user labels are folder paths. STARRED (important mark) and UNREAD are flags. Use the returned id with label tools. |
| create_labelA | Creates a new user label (a Naver Mail folder). Nested labels use '/', e.g. 'Projects/Alpha'; missing parents are created. |
| update_labelC | Renames a user label (folder). |
| delete_labelA | Deletes a user label. WARNING: in Naver Mail a label is a folder, so the messages inside it are deleted too. Confirm with the user first. |
| label_messageA | Adds labels to a message: STARRED marks important, UNREAD marks unread, a folder label moves it. Moving changes the message id; the new id is returned. |
| unlabel_messageA | Removes labels from a message, e.g. remove UNREAD to mark as read, STARRED to unstar. Moving changes the message id; the new id is returned. |
| update_message_labelsA | Adds and/or removes labels on a message in one call. Moving changes the message id; the new id is returned. |
| label_threadA | Adds labels to every message in a thread (e.g. STARRED, or a folder label to move the conversation). |
| unlabel_threadA | Removes labels from every message in a thread, e.g. remove UNREAD to mark the whole conversation as read. |
| trash_messageA | Moves a message to Trash (soft delete). Default tool when the user asks to delete a message without asking for permanent deletion. |
| trash_threadA | Moves every message of a thread to Trash (soft delete). |
| untrash_messageA | Moves a message out of Trash (to Sent if you sent it, otherwise Inbox). |
| untrash_threadB | Moves the messages of a thread out of Trash. |
| mark_message_spamC | Moves a message to the Spam folder. |
| mark_thread_spamA | Moves every message of a thread to the Spam folder. |
| unmark_message_spamA | Moves a message out of Spam back to the Inbox. |
| unmark_thread_spamB | Moves the messages of a thread out of Spam. |
| send_messageA | Sends an email immediately from the Naver Mail account (SMTP) and saves a copy in Sent. To send an existing draft, give draftId. To thread under an existing conversation give replyThreadId or replyToMessageId. Confirm recipients and content with the user before sending. |
| replyA | Replies to a message (to the sender, or everyone with replyAll). The original is quoted below the reply and threading headers are set. To reply in a thread, use the id of its latest message from get_thread. body or htmlBody is required. Confirm with the user before sending. |
| forwardA | Forwards a message with its original attachments. Optional comments go above the forwarded message via forwardText (plain) or htmlBody. Confirm with the user before sending. |
| create_draftA | Creates a draft in the Naver Mail drafts folder (임시보관함). If replyToMessageId is given, threading headers are set and the original message is quoted below the body; recipients default to the original sender. Returns the draft id. |
| update_draftA | Updates a draft with merge semantics: given (non-empty) fields overwrite, omitted fields are kept. If only body is given the HTML body is cleared. WARNING: attachments are NOT merged; re-provide them or they are removed. The draft id changes (returned). |
| delete_draftC | Deletes a draft. |
| list_draftsA | Lists drafts, optionally filtered by a query (same syntax as search_threads). |
| get_draftC | Retrieves a draft by id. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Most tools target a clear resource+action pair (message vs thread vs label vs draft), but there is real redundancy: update_message_labels duplicates what label_message + unlabel_message already do, and reply overlaps heavily with send_message when replyToMessageId is supplied. The message-vs-thread variants (trash_message/trash_thread, mark_message_spam/mark_thread_spam) are distinguishable only via the name suffix, which descriptions support but don't strongly disambiguate.
Strong verb_noun snake_case pattern with predictable prefixes (label_/unlabel_, trash_/untrash_, mark_/unmark_, create_/update_/delete_). A few bare-verb outliers (reply, forward, send_message) break the pattern slightly, but overall it is highly predictable.
30 tools is heavy and crosses the comfortable range, though a full mail client (messages, threads, drafts, labels, spam/trash, sending) is a genuinely broad domain. Removing the redundant update_message_labels and collapsing mark/unmark pairs would bring it to a well-scoped size.
Covers the full lifecycle for messages, threads, drafts (create/get/update/delete), labels (CRUD), plus send/reply/forward and attachment download. Minor gaps: no way to attach files when sending and no permanent-delete operation, but these are likely deliberate and workaroundable.