mcpField
O
outbox

outbox

本地服务
github.com/fieldcure通信协作022 周前更新

关于 outbox

outbox 是一个通过单一 MCP 服务发送多渠道消息的工具,支持 Slack、Telegram、电子邮件、KakaoTalk 和 Discord。它提供统一的发送工具,并可通过环境变量或 MCP 交互获取凭据。

主要功能

  1. 01通过统一接口发送多渠道消息
  2. 02管理已配置的消息渠道
  3. 03支持 Slack、Telegram、电子邮件、KakaoTalk 和 Discord
  4. 04通过环境变量或 MCP 交互解析凭据
  5. 05提供交互式命令行渠道配置

适用场景

  1. 01从 Agent 工作流向多个渠道发送通知
  2. 02集中配置不同服务的消息渠道
  3. 03为 Microsoft 或 KakaoTalk 邮件和消息设置 OAuth

MCP 相关

outbox 是 MCP 服务,提供 `list_channels`、`add_channel`、`send_message` 和 `remove_channel` 工具,用于管理渠道并发送消息。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetFieldCure.Mcp.Outbox2.1.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

FieldCure MCP Outbox 服务

NuGet License: MIT

一款多渠道消息传递 Model Context Protocol (MCP) 服务,可通过 Slack、Telegram、电子邮件(Gmail、Naver、Microsoft Graph API)、KakaoTalk 和 Discord 发送消息。使用 C# 和官方 MCP C# SDK 构建。

功能

  • 多个消息渠道 — Slack、Telegram、电子邮件(Gmail、Naver、Microsoft Graph API)、KakaoTalk、Discord
  • 4 个 MCP 工具 — list_channels、add_channel、send_message、remove_channel
  • 跨平台凭据流程 — 运行时密钥可来自环境变量或 MCP 信息收集;OAuth 令牌单独存储,以支持令牌刷新生命周期
  • CLI 渠道设置 — 在适用场景下,通过交互式控制台完成浏览器/OAuth 流程
  • SMTP 预设 — 一条命令即可设置 Gmail、Naver
  • Microsoft Graph API — 通过浏览器完成 Outlook / M365 电子邮件的 OAuth 2.0 流程,并自动刷新令牌
  • KakaoTalk OAuth — 通过 localhost 回调流程完成授权,并自动刷新令牌
  • Telegram Client API — 通过 WTelegramClient 发送消息到已保存的消息
  • Stdio 传输 — 通过 stdin/stdout 上的 JSON-RPC 使用标准 MCP 子进程模型

为什么选择 Outbox?

现有的 MCP 服务都是特定于某个渠道的——一个用于 Slack,另一个用于 Gmail,还有一个用于 Telegram。每个服务都需要单独安装和配置,而且大模型必须知道每个渠道该调用哪个工具。

Outbox 采用了不同的方法:

  • 一个工具,多个渠道 — send_message 抽象了各渠道的差异。大模型无需了解 Slack API、SMTP 或 Kakao REST。
  • 凭据隔离 — OAuth 刷新令牌存储在 tokens.json 中,并设置仅当前用户可访问的文件权限;MCP 工具流程可在运行时通过环境变量或信息收集来解析密钥。
  • 只需安装一次 — dotnet tool install -g 即可使用 4 个渠道。无需针对每个渠道分别安装和配置服务。
  • 支持 KakaoTalk — 目前唯一支持 KakaoTalk 消息传递的 MCP 服务,对韩国用户至关重要。

安装

dotnet 工具(推荐)
dotnet tool install -g FieldCure.Mcp.Outbox

安装后,即可全局使用 fieldcure-mcp-outbox 命令。

从源代码安装
git clone https://github.com/fieldcure/fieldcure-mcp-outbox.git
cd fieldcure-mcp-outbox
dotnet build

要求

配置

Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "outbox": {
      "command": "fieldcure-mcp-outbox"
    }
  }
}
VS Code(Copilot)

添加到 .vscode/mcp.json:

{
  "servers": {
    "outbox": {
      "command": "fieldcure-mcp-outbox"
    }
  }
}
从源代码运行(不使用 dotnet 工具)
{
  "mcpServers": {
    "outbox": {
      "command": "dotnet",
      "args": [
        "run",
        "--project", "C:\\path\\to\\fieldcure-mcp-outbox\\src\\FieldCure.Mcp.Outbox"
      ]
    }
  }
}

工具

工具描述确认
list_channels列出所有已配置的消息渠道—
add_channel添加新渠道(所有渠道类型均通过 MCP 信息收集;Microsoft/KakaoTalk 需要在 MCP 主机上使用本地浏览器)—
send_message通过已配置的渠道发送消息必需
remove_channel移除渠道及其存储的凭据必需

渠道

Microsoft/KakaoTalk 的 OAuth 令牌存储在 tokens.json 中,以便服务在多次运行之间刷新令牌(文件权限仅限当前用户——Windows ACL / Unix 0600)。

静态机密(Slack 机器人令牌、Discord webhook URL、SMTP 密码等)在发送时按以下顺序获取:内存缓存 → 环境变量 OUTBOX_{CHANNEL_ID}_{FIELD} → channels.json 中的明文 → MCP 询问。CLI add_channel 流程会直接写入 channels.json,提供零配置的本地体验。这是有意采用的本地信任策略,与 tokens.json 具有相同的同一用户边界,详见 ADR-001 原则 2。对于共享主机、CI 或无头部署,请显式设置环境变量,并将 channels.json 中的机密字段留空。

渠道协议设置
SlackWeb API(chat.postMessage)指南
Telegram客户端 API(WTelegramClient)指南
GmailSMTP指南
NaverSMTP指南
MicrosoftGraph API(/me/sendMail)指南
KakaoTalkKakao REST API指南
DiscordWebhook API指南
自定义 SMTP用户自定义指南
静态机密环境变量

当渠道在发送时需要静态机密,Outbox 会查找名称如下的环境变量:

OUTBOX_<CHANNEL_ID>_<FIELD>

示例:

  • OUTBOX_MICROSOFT_1_CLIENT_SECRET
  • OUTBOX_KAKAOTALK_1_API_KEY
  • OUTBOX_KAKAOTALK_1_CLIENT_SECRET
  • OUTBOX_SMTP_GMAIL_1_PASSWORD

如果未设置该变量,且 MCP 客户端支持询问,Outbox 会交互式提示输入,并在当前会话中缓存该值。

CLI 命令

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

数据存储

数据位置
渠道元数据%LOCALAPPDATA%\FieldCure\Mcp.Outbox\channels.json
OAuth 令牌%LOCALAPPDATA%\FieldCure\Mcp.Outbox\tokens.json
Telegram 会话%LOCALAPPDATA%\FieldCure\Mcp.Outbox\sessions\

tokens.json 以纯 JSON 格式存储,并通过文件系统权限加以保护:

  • Windows:ACL 限制为当前用户
  • Linux/macOS:模式 0600

这可以防止同一台机器上的其他本地用户访问,但无法防范同一 OS 用户账户遭到入侵。

项目结构

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

开发

# Build
dotnet build

# Test
dotnet test

# Pack as dotnet tool
dotnet pack src/FieldCure.Mcp.Outbox -c Release

另请参阅

本项目属于 AssistStudio 生态系统。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。