mcpField
O
outbox

outbox

ローカル
github.com/fieldcureコミュニケーション022 週間前に更新

outbox について

outboxは、Slack、Telegram、メール、KakaoTalk、Discordにメッセージを送るMCP サーバーです。送信ツールを共通化し、環境変数またはMCPエリシテーションで認証情報を取得できます。

主な機能

  1. 01共通インターフェースによる複数チャネルへの送信
  2. 02設定済みメッセージチャネルの管理
  3. 03Slack、Telegram、メール、KakaoTalk、Discordに対応
  4. 04環境変数またはMCPエリシテーションによる認証情報の解決
  5. 05対話型コマンドラインによるチャネル設定

活用シーン

  1. 01エージェントのワークフローから複数チャネルへ通知
  2. 02複数サービスのメッセージチャネルを一元設定
  3. 03MicrosoftまたはKakaoTalkのメッセージ送信に使うOAuthの設定

MCP 対応

outboxはMCP サーバーとして、チャネル管理とメッセージ送信のための`list_channels`、`add_channel`、`send_message`、`remove_channel`ツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
nugetFieldCure.Mcp.Outbox2.1.3

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

FieldCure MCP Outbox Server

NuGet License: MIT

Slack、Telegram、メール(Gmail、Naver、Microsoft Graph API)、KakaoTalk、Discord を通じてメッセージを送信する、マルチチャネル対応の Model Context Protocol (MCP) サーバーです。C# と公式の MCP C# SDK で構築されています。

機能

  • 複数のメッセージングチャネル — Slack、Telegram、メール(Gmail、Naver、Microsoft Graph API)、KakaoTalk、Discord
  • 4 つの MCP ツール — list_channels、add_channel、send_message、remove_channel
  • クロスプラットフォームの認証情報フロー — 実行時のシークレットは環境変数または MCP elicitation から取得でき、OAuth トークンは更新ライフサイクル用に別途保存されます
  • CLI によるチャネル設定 — 対応する場合、ブラウザー/OAuth フロー用の対話型コンソールを使用します
  • SMTP プリセット — Gmail、Naver をワンコマンドで設定できます
  • Microsoft Graph API — Outlook/M365 メール用の OAuth 2.0 ブラウザーフローと、トークンの自動更新に対応します
  • KakaoTalk OAuth — localhost コールバックフローと、トークンの自動更新に対応します
  • Telegram Client API — WTelegramClient 経由で Saved Messages に送信します
  • Stdio トランスポート — stdin/stdout 経由の JSON-RPC を使用する標準的な MCP サブプロセスモデルです

Outbox を選ぶ理由

既存の MCP サーバーはチャネルごとに分かれています。Slack 用、Gmail 用、Telegram 用というように、それぞれ別のサーバーが必要です。サーバーごとにインストールと設定が必要で、LLM はチャネルごとにどのツールを呼び出すかを把握しなければなりません。

Outbox は異なるアプローチを採用しています。

  • 1 つのツールで複数のチャネルに対応 — send_message がチャネルごとの違いを抽象化します。LLM は Slack API、SMTP、Kakao REST の違いを把握する必要がありません。
  • 認証情報の分離 — OAuth 更新トークンは、現在のユーザーだけがアクセスできるファイル権限を設定した tokens.json に保存されます。MCP ツールのフローでは、実行時に環境変数または elicitation を使ってシークレットを解決できます。
  • インストールは 1 回だけ — dotnet tool install -g で 4 つのチャネルを利用できます。チャネルごとに別々のサーバーをインストールして設定する必要はありません。
  • KakaoTalk 対応 — 現在、KakaoTalk メッセージングに対応する唯一の MCP サーバーです。韓国のユーザーにとって不可欠です。

インストール

dotnet tool(推奨)
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

要件

  • .NET 8.0 Runtime 以降
  • クロスプラットフォーム対応(Windows、Linux、macOS)

設定

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 tool を使わない場合)
{
  "mcpServers": {
    "outbox": {
      "command": "dotnet",
      "args": [
        "run",
        "--project", "C:\\path\\to\\fieldcure-mcp-outbox\\src\\FieldCure.Mcp.Outbox"
      ]
    }
  }
}

ツール

ツール説明確認
list_channels設定済みのすべてのメッセージングチャネルを一覧表示します—
add_channel新しいチャネルを追加します(すべてのチャネルタイプで MCP elicitation を使用します。Microsoft/KakaoTalk では MCP ホスト上のローカルブラウザーが必要です)—
send_message設定済みのチャネルを通じてメッセージを送信します必須
remove_channelチャネルと保存済みの認証情報を削除します必須

チャネル

Microsoft/KakaoTalk の OAuth トークンは tokens.json に保存されるため、サーバーは実行をまたいでトークンを更新できます(現在のユーザーのみがアクセスできるファイル権限 — Windows ACL/Unix 0600)。

静的シークレット(Slack ボットトークン、Discord ウェブフック URL、SMTP パスワードなど)は、送信時に次の順序で解決されます。メモリ内キャッシュ → 環境変数 OUTBOX_{CHANNEL_ID}_{FIELD} → channels.json 内の平文 → MCP エリシテーション。CLI の add_channel フローでは、設定なしですぐに使えるローカル環境を実現するため、channels.json に直接書き込みます。これは意図的にローカル環境を信頼する設計であり、ADR-001 の原則 2 に記載されているとおり、tokens.json と同じユーザー境界を適用します。共有ホスト、CI、またはヘッドレス環境では、環境変数を明示的に設定し、channels.json のシークレットフィールドは空のままにしてください。

チャネルプロトコルセットアップ
SlackWeb API(chat.postMessage)ガイド
Telegramクライアント API(WTelegramClient)ガイド
GmailSMTPガイド
NaverSMTPガイド
MicrosoftGraph API(/me/sendMail)ガイド
KakaoTalkKakao REST APIガイド
Discordウェブフック 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。