Multi-channel messaging MCP server for Slack, Telegram, Email, KakaoTalk, and Discord.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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.
list_channels, add_channel, send_message, remove_channelExisting 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:
send_message abstracts away channel differences. The LLM doesn't need to know Slack API vs SMTP vs Kakao REST.tokens.json with current-user-only file permissions; MCP tool flows can resolve secrets at runtime via env vars or elicitation.dotnet tool install -g gives you 4 channels. No need to install and configure separate servers per channel.After installation, the fieldcure-mcp-outbox command is available globally.
Add to claude_desktop_config.json:
Add to .vscode/mcp.json:
| Tool | Description | Confirmation |
|---|---|---|
list_channels | List all configured messaging channels | β |
add_channel | Add a new channel (MCP elicitation for all channel types; Microsoft/KakaoTalk require a local browser on the MCP host) | β |
send_message | Send a message through a configured channel | Required |
remove_channel | Remove a channel and its stored credentials | Required |
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.
| Channel | Protocol | Setup |
|---|---|---|
| Slack | Web API (chat.postMessage) | Guide |
| Telegram | Client API (WTelegramClient) | Guide |
| Gmail | SMTP | Guide |
| Naver | SMTP | Guide |
| Microsoft | Graph API (/me/sendMail) | Guide |
| KakaoTalk | Kakao REST API | Guide |
| Discord | Webhook API | Guide |
| Custom SMTP | User-defined | Guide |
When a channel requires a static secret at send time, Outbox looks for an environment variable named:
Examples:
OUTBOX_MICROSOFT_1_CLIENT_SECRETOUTBOX_KAKAOTALK_1_API_KEYOUTBOX_KAKAOTALK_1_CLIENT_SECRETOUTBOX_SMTP_GMAIL_1_PASSWORDIf the variable is unset and the MCP client supports elicitation, Outbox prompts for it interactively and caches it for the current session.
| Data | Location |
|---|---|
| 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:
0600This protects against other local users on the same machine, but not against compromise of the same OS user account.
Part of the AssistStudio ecosystem.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/outbox)<a href="https://allmcps.com/mcp/outbox"><img src="https://allmcps.com/api/badge/outbox?style=directory" alt="Outbox on AllMCPs" /></a>