Outbox

io.github.fieldcure由 GitHub 帳號 fieldcure 發布v2.1.3更新於 Oct 24, 2026

Multi-channel messaging MCP server for Slack, Telegram, Email, KakaoTalk, and Discord.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

讓助理用同一組工具透過 Slack、Telegram、電子郵件、KakaoTalk 和 Discord 傳送訊息。

可以做什麼
Outbox 是本地 MCP 伺服器,以四個工具整合多個訊息通道:list_channels、add_channel、send_message 和 remove_channel。send_message 隱藏了 Slack Web API、Telegram 用戶端 API、SMTP(Gmail、Naver、自訂)、Microsoft Graph、KakaoTalk REST 與 Discord webhook 之間的差異。通道可透過 CLI 搭配瀏覽器 OAuth 流程設定,OAuth 權杖可跨執行刷新。
適用情境
當助理需要跨多個平台向人發送通知或訊息,又不想為每個通道個別安裝 MCP 伺服器時使用。特別適合需要 KakaoTalk 的韓國使用者,或想把 Slack、郵件與 Discord 發送整合到單一工具的情境。
執行需求
以 .NET 工具(FieldCure.Mcp.Outbox)透過 stdio 在本機執行;需要 Windows、Linux 或 macOS 上的 .NET 8.0 Runtime 或更新版本。各通道憑證透過名為 OUTBOX_ _ 的環境變數提供,或經由 MCP 互動式徵詢取得。Microsoft 與 KakaoTalk 設定需要本機瀏覽器完成 OAuth。
安裝前請注意
send_message 和 remove_channel 需要確認,但傳送訊息屬於對外動作。靜態密鑰可能以明文寫入 channels.json,OAuth 權杖寫入 tokens.json,僅靠同一使用者的檔案權限保護;在共用主機或 CI 上應明確設定 OUTBOX_ _ 環境變數,並讓 channels.json 的密鑰欄位留空。remove_channel 會刪除已儲存的憑證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Outbox,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

FieldCure MCP Outbox Server

[NuGet] [License: MIT]

A multi-channel messaging Model Context Protocol (MCP) server that sends messages through Slack, Telegram, Email (Gmail, Naver, Microsoft Graph API), KakaoTalk, and Discord. Built with C# and the official MCP C# SDK.

Features

  • Multiple messaging channels — Slack, Telegram, Email (Gmail, Naver, Microsoft Graph API), KakaoTalk, Discord
  • 4 MCP tools — list_channels, add_channel, send_message, remove_channel
  • Cross-platform credential flow — runtime secrets can come from env vars or MCP elicitation; OAuth tokens are stored separately for refresh lifecycle
  • CLI channel setup — interactive console for browser/OAuth flows where applicable
  • SMTP presets — Gmail, Naver with one-command setup
  • Microsoft Graph API — OAuth 2.0 browser flow for Outlook / M365 email with automatic token refresh
  • KakaoTalk OAuth — localhost callback flow with automatic token refresh
  • Telegram Client API — send to Saved Messages via WTelegramClient
  • Stdio transport — standard MCP subprocess model via JSON-RPC over stdin/stdout

Why Outbox?

Existing MCP servers are channel-specific — one for Slack, another for Gmail, yet another for Telegram. Each requires separate installation, configuration, and the LLM must know which tool to call for each channel.

Outbox takes a different approach:

  • One tool, multiple channels — send_message abstracts away channel differences. The LLM doesn't need to know Slack API vs SMTP vs Kakao REST.
  • Credential isolation — OAuth refresh tokens live in tokens.json with current-user-only file permissions; MCP tool flows can resolve secrets at runtime via env vars or elicitation.
  • Single install — dotnet tool install -g gives you 4 channels. No need to install and configure separate servers per channel.
  • KakaoTalk support — Currently the only MCP server with KakaoTalk messaging, essential for Korean users.

Installation

dotnet tool (recommended)

bash
dotnet tool install -g FieldCure.Mcp.Outbox

After installation, the fieldcure-mcp-outbox command is available globally.

From source

bash
git clone https://github.com/fieldcure/fieldcure-mcp-outbox.gitcd fieldcure-mcp-outboxdotnet build

Requirements

Configuration

Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "outbox": {      "command": "fieldcure-mcp-outbox"    }  }}

VS Code (Copilot)

Add to .vscode/mcp.json:

json
{  "servers": {    "outbox": {      "command": "fieldcure-mcp-outbox"    }  }}

From source (without dotnet tool)

json
{  "mcpServers": {    "outbox": {      "command": "dotnet",      "args": [        "run",        "--project", "C:\\path\\to\\fieldcure-mcp-outbox\\src\\FieldCure.Mcp.Outbox"      ]    }  }}

Tools

ToolDescriptionConfirmation
list_channelsList all configured messaging channels—
add_channelAdd a new channel (MCP elicitation for all channel types; Microsoft/KakaoTalk require a local browser on the MCP host)—
send_messageSend a message through a configured channelRequired
remove_channelRemove a channel and its stored credentialsRequired

Channels

OAuth tokens for Microsoft/KakaoTalk are stored in tokens.json so the server can refresh them across runs (current-user-only file permissions — Windows ACL / Unix 0600).

Static secrets (Slack bot tokens, Discord webhook URLs, SMTP passwords, etc.) resolve at send time in this order: in-memory cache → env var OUTBOX_{CHANNEL_ID}_{FIELD} → plaintext in channels.json → MCP elicitation. The CLI add_channel flow writes directly into channels.json for a zero-configuration local experience. This is an intentional local-trust choice with the same same-user boundary as tokens.json, documented in ADR-001 Principle 2. For shared hosts, CI, or headless deployments, set the env vars explicitly and leave channels.json secret fields empty.

ChannelProtocolSetup
SlackWeb API (chat.postMessage)Guide
TelegramClient API (WTelegramClient)Guide
GmailSMTPGuide
NaverSMTPGuide
MicrosoftGraph API (/me/sendMail)Guide
KakaoTalkKakao REST APIGuide
DiscordWebhook APIGuide
Custom SMTPUser-definedGuide

Static Secret Environment Variables

When a channel requires a static secret at send time, Outbox looks for an environment variable named:

text
OUTBOX_<CHANNEL_ID>_<FIELD>

Examples:

  • OUTBOX_MICROSOFT_1_CLIENT_SECRET
  • OUTBOX_KAKAOTALK_1_API_KEY
  • OUTBOX_KAKAOTALK_1_CLIENT_SECRET
  • OUTBOX_SMTP_GMAIL_1_PASSWORD

If the variable is unset and the MCP client supports elicitation, Outbox prompts for it interactively and caches it for the current session.

CLI Commands

bash
fieldcure-mcp-outbox                      # Start MCP server (stdio)fieldcure-mcp-outbox add slack            # Add Slack channelfieldcure-mcp-outbox add telegram         # Add Telegram channelfieldcure-mcp-outbox add gmail            # Add Gmail SMTP channelfieldcure-mcp-outbox add naver            # Add Naver SMTP channelfieldcure-mcp-outbox add smtp             # Add custom SMTP channelfieldcure-mcp-outbox add microsoft        # Add Microsoft (Outlook/M365) channelfieldcure-mcp-outbox add kakaotalk        # Add KakaoTalk channelfieldcure-mcp-outbox add discord          # Add Discord channelfieldcure-mcp-outbox list                 # List configured channelsfieldcure-mcp-outbox remove <id>          # Remove a channel

Data Storage

DataLocation
Channel metadata%LOCALAPPDATA%\FieldCure\Mcp.Outbox\channels.json
OAuth tokens%LOCALAPPDATA%\FieldCure\Mcp.Outbox\tokens.json
Telegram sessions%LOCALAPPDATA%\FieldCure\Mcp.Outbox\sessions\

tokens.json is stored in plain JSON and protected by filesystem permissions:

  • Windows: ACL restricted to the current user
  • Linux/macOS: mode 0600

This protects against other local users on the same machine, but not against compromise of the same OS user account.

Project Structure

src/FieldCure.Mcp.Outbox/├── Program.cs                  # Entry point: MCP server vs CLI branching├── Channels/│   ├── IChannel.cs             # Channel interface + SendRequest/SendResult│   ├── ChannelFactory.cs       # Channel instantiation by type│   ├── SlackChannel.cs         # Slack Web API│   ├── TelegramChannel.cs      # WTelegramClient│   ├── SmtpChannel.cs          # MailKit SMTP│   ├── MicrosoftChannel.cs     # Microsoft Graph API│   ├── KakaoTalkChannel.cs     # Kakao REST API│   └── DiscordChannel.cs       # Discord Webhook API├── Tools/│   ├── ListChannelsTool.cs     # list_channels│   ├── AddChannelTool.cs       # add_channel (elicitation + browser OAuth for Kakao/Microsoft)│   ├── RemoveChannelTool.cs    # remove_channel│   └── SendMessageTool.cs      # send_message├── Interaction/│   ├── IElicitGate.cs          # Minimal MCP elicitation surface for tests│   └── McpServerElicitGate.cs  # Production adapter around McpServer├── OAuth/│   └── BrowserOAuthFlow.cs     # Localhost callback + Process.Start + elicit race (MCP and CLI entry points)├── Credentials/│   └── OutboxSecretResolver.cs # cache → env → channels.json → elicitation├── Setup/│   ├── SetupRunner.cs          # CLI router (diagnostic path)│   ├── ConsoleHelper.cs        # Masked input, prompts│   ├── SlackSetup.cs│   ├── TelegramSetup.cs│   ├── SmtpSetup.cs│   ├── MicrosoftSetup.cs│   ├── KakaoTalkSetup.cs│   └── DiscordSetup.cs└── Configuration/    ├── ChannelStore.cs         # channels.json persistence (metadata + static-secret fallback)    ├── OAuthTokenStore.cs      # tokens.json persistence (OAuth access/refresh, user-only file perms)    └── SmtpPresets.cs          # SMTP preset definitions

Development

bash
# Builddotnet build
# Testdotnet test
# Pack as dotnet tooldotnet pack src/FieldCure.Mcp.Outbox -c Release

See Also

Part of the AssistStudio ecosystem.

License

MIT

來源:README.md,提交 595d983

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2.1.3最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分