mcpField
M
Meta Business Mcp

Meta Business Mcp

ローカル
metabusinessmcp.comコミュニケーション117 週間前に更新

Meta Business Mcp について

Meta Business MCPは、WhatsApp Businessの自動化チームやエージェント開発者向けに、メッセージのコンプライアンス確認と配信を提供します。Metaのルールや業務ポリシーを確認し、エラー分析、テンプレート管理、非同期配信にも対応します。

主な機能

  1. 01送信前のコンプライアンス確認
  2. 02業務ポリシーと頻度制限の適用
  3. 03再試行付きの非同期メッセージ配信
  4. 04Meta APIエラーの分析
  5. 05テンプレートとキャンペーンの管理

活用シーン

  1. 01送信前にメッセージのルール適合性を確認
  2. 02会話状態、顧客の送信資格、配信状況の照会
  3. 03対象を絞ったテンプレートキャンペーンの予約

MCP 対応

stdio上のMCPを介してAIエージェントに24個のツールを公開し、メッセージ、コンプライアンス、テンプレート、会話、キャンペーンを扱います。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Meta Business MCP

Go 1.21+ License: Apache 2.0 Tests: Passing Coverage: 85.6% Tools: 24 Production-Validated

すべての AI エージェントが Meta のルールの複雑さを理解しなくても、WhatsApp Business を安全かつコンプライアンスに準拠した本番運用可能な形で利用できるようにする、WhatsApp コンプライアンスインテリジェンスプラットフォームです。

対象: AI エージェント開発者 · デジタルエージェンシー · WhatsApp 自動化チーム 21 個のツールは永久無料 · 3 個のキャンペーンツールは Pro で利用可能


目次

  1. これが必要な理由
  2. できること
  3. クイックスタート
  4. MCP ツール
  5. アーキテクチャ
  6. 設定
  7. テスト
  8. デプロイ
  9. ビジネスモデル
  10. ロードマップ
  11. 可観測性
  12. ドキュメント一覧
  13. 貢献
  14. ライセンス

これが必要な理由

AI エージェントは Meta の WhatsApp Business ルール(24 時間のカスタマーケア時間、送信頻度の上限、テンプレートのカテゴリ、オプトアウトの義務、レート制限)を理解していません。メッセージを 1 件でも誤って送信すると、アカウント停止、メッセージ拒否、コンプライアンス違反につながります。Meta Business MCP は AI エージェントと Meta の API の間に位置し、すべてのルールを自動的に適用するため、エージェントがルールを覚える必要はありません。


できること

責務説明
コンプライアンスゲート送信するすべてのメッセージについて、配信前に Meta のカスタマーケア時間ルール、オプトアウトリスト、送信頻度の上限に照らして評価します。
ポリシーの適用YAML で初期データを登録したデータベースから、カスタムビジネスポリシー(時間制限、セグメント除外、VIP タグによる上書き)を適用します。
非同期メッセージ配信メッセージを NATS JetStream にキューイングし、ワーカープールを通じて自動リトライと指数バックオフを用いて送信します。
レート制限Redis Lua スクリプトを通じて、顧客ごとのトークンバケット方式のレート制限を適用します。
エラーインテリジェンスMeta API の数値エラーコードを、カテゴリ別に整理された実行可能な開発者向け指示に変換します。
キャンペーン管理オーディエンスのセグメント化とテンプレートの検証を行いながら、キャンペーンのスケジュール設定、一時停止、キャンセルができます。
テンプレートのライフサイクル管理ローカルにデータを保存しながら、Meta API を通じてテンプレートの作成、同期、検証を行います。
MCP サーバーModel Context Protocol を使用し、stdio 経由で AI エージェントに 24 個の構造化ツールを公開します。
Webhook レシーバー顧客メッセージ、配信状況の更新、テンプレート承認のコールバックなど、Meta からの受信イベントを処理します。

クイックスタート

1. クローンして起動する
git clone https://github.com/metabusiness-mcp/meta-business-mcp.git
cd meta-business-mcp
docker compose up -d --build

すべてのコンテナが正常な状態になるまで待ちます。

docker compose ps
# All should show "healthy"
2. ダッシュボードにアクセスする

ブラウザーを開きます:http://localhost:8080

初回起動時、サーバーはランダムなパスワードを自動生成し、ターミナルに表示します。

╔══════════════════════════════════════════════════════════╗
║              DASHBOARD CREDENTIALS (auto-generated)      ║
╠══════════════════════════════════════════════════════════╣
║  Username: admin                                         ║
║  Password: a1b2c3d4e5f6g7h8                             ║
╚══════════════════════════════════════════════════════════╝

パスワードをコピーしてログインします。

3. AI エージェントを接続する

MCP サーバーは stdio で動作します。AI クライアント(Claude Desktop、Cursor など)を設定します。

{
  "mcpServers": {
    "meta-business-mcp": {
      "command": "/path/to/meta-business-mcp",
      "args": []
    }
  }
}
4. 確認する
curl http://localhost:8080/health
# OK

起動するもの: PostgreSQL 16(:5432)、Redis 7(:6379)、NATS JetStream(:4222)、Mock Meta API(:8081)、Meta Business MCP(:8080 + MCP stdio)。デフォルトではモック認証情報が使用されるため、ローカル開発に Meta API キーは必要ありません。


MCP ツール

Model Context Protocol を使用し、stdio 経由ですべての 24 個のツールを AI エージェントに公開します。すべてのツールは本番環境で利用可能で、実際の WABA 本番環境(Meta Graph API v20.0)に対して検証済みです。

アクション操作
ツール説明ティアステータス
check_compliance()送信予定のメッセージがMetaのルールおよびローカルポリシーに準拠しているか評価します[All]✅
send_message()自由形式のサービスメッセージを送信します(有効な24時間の対応ウィンドウが必要です)[All]✅
send_template()承認済みのテンプレートメッセージを送信します(24時間の対応ウィンドウを回避します)[All]✅
explain_error()Meta APIのエラーコードを分類し、対応可能な説明に変換します[All]✅
reply_customer()有効な会話コンテキスト内で返信します(24時間のウィンドウが開いている必要があります)[All]✅
retry_failed_messages()再試行可能かを検証したうえで、1件以上の失敗したメッセージの手動再試行を開始します[All]✅
sync_template_status()Meta APIからテンプレートの承認ステータスを同期し、ローカルデータベースを更新します[All]✅
読み取り専用インテリジェンス
ツール説明ティアステータス
check_conversation()会話ウィンドウのステータス、残り時間、種類、適格性を照会します[All]✅
check_frequency_cap()顧客がMetaのマーケティングメッセージ送信頻度上限に達していないか確認します[All]✅
get_customer_context()オプトイン/オプトアウト、タグ、エンゲージメントスコア、適格性を含む顧客プロフィール全体を取得します[All]✅
get_delivery_status()エラー情報とともに、メッセージの配信ステータス(送信済み/配信済み/既読/失敗)を照会します[All]✅
get_rate_limit()現在のMPS容量、消費済みトークン数、残りトークン数を照会します[All]✅
list_conversations()フィルター(open、closed、expiring_soon)を指定して会話を一覧表示します[All]✅
list_templates()Meta APIからステータス/カテゴリ/ロケールのフィルターを指定してテンプレートを一覧表示します[All]✅
スケジュール設定とキャンペーン
ツール説明ティアステータス
schedule_message()コンプライアンスの事前確認を行い、単一メッセージの将来の配信をスケジュールします[All]✅
schedule_campaign()承認済みテンプレートとオーディエンスフィルターを使用して、一斉配信キャンペーンをスケジュールします[Pro]✅
cancel_campaign()終端状態ではないキャンペーン(scheduled/running/paused)をキャンセルします[Pro]✅
pause_campaign()アクティブなキャンペーンを一時停止し、再開時に引き継げるよう進捗カウンターを保持します[Pro]✅
アカウントとコストに関する情報
ツール説明ティアステータス
get_account_quality()MetaからWABAの品質スコアとメッセージング上限のティアを取得します[All]✅
estimate_cost()予定しているメッセージ一括送信の会話コストを見積もります[All]✅
estimate_pricing()国/種類の組み合わせに対応する現在の会話料金ティアを照会します[All]✅
運用
ツール説明ティアステータス
create_template()新しいテンプレートをMetaに承認申請し、ローカルにPENDINGとして保存します[All]✅
sync_webhooks()テンプレートのステータスと保留中のWebhookイベントの手動再同期を開始します[All]✅
archive_chat()終端状態(ウィンドウの期限切れ)にある会話をアーカイブします[All]✅

パラメーターの詳細な仕様とレスポンス例:docs/api_reference.md


アーキテクチャ

デュアルモードバイナリ

このプラットフォームは、2つのサーバーを同時に実行する単一のGoバイナリにコンパイルされます。

モードトランスポート目的
MCP Serverstdio(stdin/stdout)AIクライアント(Gemini、Claude、Cursor)に24個の構造化ツールを公開します
HTTP ServerTCP :8080Webhook受信、ヘルスチェック、Prometheusメトリクス
コンポーネントの概要図
                      ┌───────────────────────────────┐
                      │           AI Agent            │
                      └──────────────┬────────────────┘
                                     │ Stdio (MCP Protocol)
                                     ▼
   ┌────────────────────────────────────────────────────────┐
   │                   Meta Business MCP                    │
   │                                                        │
   │   ┌───────────────────┐        ┌───────────────────┐   │
   │   │    MCP Server     ├───────►│ Compliance Engine │   │
   │   └───────────────────┘        └─────────┬─────────┘   │
   │                                          ▼             │
   │   ┌───────────────────┐        ┌───────────────────┐   │
   │   │ Webhook Receiver  │        │   Policy Engine   │   │
   │   └─────────▲─────────┘        └─────────┬─────────┘   │
   │             │                            ▼             │
   │             │                  ┌───────────────────┐   │
   │             │                  │    Orchestrator   │   │
   │             │                  └─────────┬─────────┘   │
   └─────────────┼────────────────────────────┼─────────────┘
                 │ Webhook                    │ POST /messages
                 │                            ▼
   ┌─────────────┴────────────────────────────┴─────────────┐
   │              Meta Cloud API (or Mock :8081)            │
   └────────────────────────────────────────────────────────┘
コアサービス
サービスパッケージ役割
MCP サーバーpkg/mcp/AI エージェントからの24個のMCPツール呼び出しを登録して処理します。6つのハンドラーファイル(約2,000行)に分割されています。
コンプライアンスエンジンpkg/compliance/24時間のケアウィンドウ、オプトアウト/オプトインの状態、頻度上限を適用します。
ポリシーエンジンpkg/policy/DBから動的なビジネスルール(時間制限、タグによる除外)を評価します。
会話状態エンジンpkg/state/RedisキャッシュとPostgreSQLへのフォールバックを利用して、ケアウィンドウのTTLを管理します。
ユーザーインテリジェンスpkg/userintel/オプトイン、タグ(例:vip)、インタラクションのタイムラインを追跡します。
テンプレートマネージャーpkg/template/Metaから承認済みテンプレートを同期し、変数を検証してローカルにキャッシュします。
配信オーケストレーターpkg/delivery/メッセージをNATS JetStreamにエンキューし、バックグラウンドのワーカープールを管理します。
スケジューラーpkg/delivery/スケジュール済みメッセージやキャンペーン向けの、プロセス内ポーリングベースのスケジューラーです。
レートリミッターpkg/ratelimit/Redis Luaスクリプトを利用し、顧客ごとのトークンバケット方式でレートを制限します。
エラーインテリジェンスpkg/errorintel/Metaのエラーコードを、再試行の可否に関する分類と説明にマッピングします。
キャンペーンモジュールpkg/campaign/キャンペーンのスキーマ、対象者フィルター、ティアで制限される操作を提供します。
Webhookレシーバーpkg/webhook/受信したMetaイベント(メッセージ、ステータス、テンプレート)を解析して振り分けます。
オブザーバビリティpkg/observability/カスタムPrometheusメトリクスを提供します。
永続化レイヤー
レイヤーテクノロジー用途
プライマリDBPostgreSQL 16 (pgxpool)すべての永続データ:会話、メッセージ、顧客、テンプレート、ポリシー、キャンペーン、監査ログ。
キャッシュRedis 7ケアウィンドウのTTL状態、Luaスクリプトによるトークンバケットカウンター、PostgreSQLへのグレースフルなフォールバック。
メッセージブローカーNATS JetStreamWorkQueue保持方式とプルコンシューマーを利用した非同期配信キュー。
データベーススキーマ(ER図)
erDiagram
    customers ||--o{ conversations : has
    conversations ||--o{ messages : contains
    templates ||--o{ messages : sent_as
    messages }|--o{ message_frequencies : logs

    customers {
        varchar id PK "Phone Number"
        varchar channel
        boolean opt_in_marketing
        boolean opt_in_utility
        timestamp last_interaction_at
        double engagement_score
        text_array tags
    }
    conversations {
        uuid id PK
        varchar customer_id FK
        varchar channel
        timestamp last_inbound_at
        timestamp last_outbound_at
        timestamp window_expires_at
        varchar conversation_type
        varchar active_template_id
        varchar status "active/archived"
    }
    messages {
        varchar id PK "Meta Message ID or UUID"
        uuid conversation_id FK
        varchar customer_id FK
        varchar direction "inbound/outbound"
        varchar message_type "text/template"
        jsonb content
        varchar status "queued/sent/delivered/read/failed/scheduled"
        integer error_code
        text error_message
        integer retry_count
        timestamp next_retry_at
        timestamp deliver_at "nullable, for scheduled messages"
    }
    templates {
        varchar name PK
        varchar locale PK
        varchar category "marketing/utility"
        varchar status
        text body_text
        jsonb variables
    }
    policies {
        varchar id PK
        varchar name
        varchar type
        varchar channel
        varchar message_type
        boolean is_enabled
        jsonb rules
    }
    error_knowledge_base {
        integer code PK
        varchar category
        boolean can_retry
        text human_explanation
        text suggested_action
    }
    audit_logs {
        uuid id PK
        varchar action
        jsonb details
        timestamp created_at
    }
NATS JetStreamキュートポロジー
ストリームサブジェクトコンシューマー最大配信回数Ack待機時間バックオフ
META_MCP_DELIVERYwhatsapp.messages.outbound, whatsapp.messages.retrydelivery-workers(永続プル)330s1s → 5s(NakWithDelay)
META_MCP_CAMPAIGNwhatsapp.campaigns.triggercampaign-workers———
Redisキャッシュ戦略
  • キャッシュキーのパターン:conv:<customer_id>:<channel>(例:conv:628119989630:whatsapp)
  • TTL:24時間のケアウィンドウの正確な残り時間に動的に設定されます。
  • グレースフルなフォールバック:Redisがオフラインの場合、状態エンジンはエラーを返さずにPostgreSQLへフォールバックします。障害シミュレーションテストで検証済みです。
  • 電話番号の形式:内部キャッシュとDBには、先頭の+プレフィックスを付けずに番号を保存します。MCPツールの境界では、+プレフィックス付きの入力を正規化します。

チャネルに依存しないアーキテクチャです。現在はWhatsAppを有効なチャネルとして使用しています。MessengerとInstagramは有効化の対象であり、ロードマップ上の確約ではありません。

アーキテクチャの全ドキュメント:docs/architecture.md


設定

設定ファイル(config.yaml)

ローカル開発では、プロジェクトのルートにconfig.yamlを配置します。

server:
  http_port: 8080
  mcp_name: "meta-business-mcp"
  mcp_version: "1.0.0"

database:
  host: "localhost"
  port: 5432
  user: "postgres"
  password: "password"
  dbname: "meta_mcp"
  sslmode: "disable"

redis:
  addr: "localhost:6379"

nats:
  url: "nats://localhost:4222"

meta:
  api_url: "http://localhost:8081"   # Use mock server for offline dev
  phone_number_id: "mock-phone-id"
  waba_id: "mock-waba-id"
  access_token: "mock-access-token"
  webhook_verify_token: "mock-verify-token"

policies_path: "policies.yaml"
tier: "oss"                          # oss | pro | enterprise
環境変数

すべての設定値は環境変数で上書きできます。必須の値には ✅ が付いています。

変数デフォルト必須説明
SERVER_HTTP_PORT8080—HTTP サーバーのポート
SERVER_MCP_NAME"meta-business-mcp"—MCP サーバーの識別子
SERVER_MCP_VERSION"1.0.0"—MCP サーバーのバージョン文字列
DB_HOST"localhost"—PostgreSQL ホスト
DB_PORT5432—PostgreSQL ポート
DB_USER"postgres"—PostgreSQL ユーザー名
DB_PASSWORD"password"—PostgreSQL パスワード
DB_NAME"meta_mcp"—PostgreSQL データベース名
DB_SSLMODE"disable"—disable、require、または verify-ca
REDIS_ADDR"localhost:6379"—Redis 接続アドレス
REDIS_PASSWORD""—Redis 認証パスワード
REDIS_DB0—Redis データベースインデックス
NATS_URL"nats://localhost:4222"—NATS 接続 URL
META_API_URL"https://graph.facebook.com"—Meta Graph API のベース URL
META_ACCESS_TOKEN—✅Meta API OAuth トークン(システムユーザー)
META_PHONE_NUMBER_ID—✅WhatsApp Business の電話番号 ID
META_WABA_ID—✅WhatsApp Business アカウント ID
META_WEBHOOK_VERIFY_TOKEN—✅Meta webhook 検証用パスフレーズ
POLICIES_PATH"policies.yaml"—ビジネスポリシーのシード YAML ファイルへのパス
TIER"oss"—機能ティア:oss、pro、または enterprise
SCHEDULER_POLL_INTERVAL"30s"—予約メッセージ/キャンペーンのスケジューラーポーリング間隔
ビジネスポリシー(policies.yaml)

起動時に policies.yaml からビジネスポリシーがシードされ、policies テーブルに保存されます。シードスクリプトは冪等(ON CONFLICT DO UPDATE)なので、アプリを再起動するだけで変更が適用されます。

- id: "no_marketing_after_8pm"
  name: "No marketing after 8pm"
  type: "time_restriction"
  channel: "whatsapp"
  message_type: "marketing"
  is_enabled: true
  rules:
    deny_after: "20:00"
    timezone: "Asia/Jakarta"

環境変数の完全なリファレンス:docs/env_variables.md


テスト

すべてのテストを実行
go test -count=1 -p 1 -cover ./...
コンプライアンスベンチマークを実行
go test -bench=BenchmarkCheckCompliance -benchtime=5s ./pkg/compliance/
パッケージのカバレッジ(Sprint 2)
パッケージカバレッジ
pkg/compliance93.9%
pkg/errorintel100.0%
pkg/config96.2%
pkg/observability100.0%
pkg/ratelimit87.5%
pkg/webhook83.6%
pkg/state83.3%
pkg/userintel82.1%
pkg/policy79.5%
pkg/template78.9%
pkg/campaign77.1%
pkg/delivery73.8%
pkg/mcp61.6%
テストスイート
スイートファイルテスト数ステータス
v1 ハンドラーpkg/mcp/server_test.go5(check_compliance、explain_error、send_message、send_template、電話番号の正規化)✅
グループ A — インテリジェンスpkg/mcp/server_test.go8(check_conversation、check_frequency_cap、get_customer_context、get_delivery_status ×2、get_rate_limit、list_templates、list_conversations)✅
グループ B — メッセージングpkg/mcp/server_test.go5(reply_customer ×2、retry_failed_messages ×2、sync_template_status)✅
グループ C — キャンペーンpkg/mcp/server_test.go5(schedule_message ×2、キャンペーンのティア制御 ×3)✅
グループ D — アカウントpkg/mcp/server_test.go4(estimate_cost、estimate_pricing、get_account_quality)✅
グループ E — 運用pkg/mcp/server_test.go3(archive_chat ×2、sync_webhooks)✅
スケジューラーpkg/delivery/scheduler_test.go5(期限到来メッセージ、未来のメッセージ、コンプライアンス失敗、重複ディスパッチ、キャンペーントリガー)✅
統合テストtests/integration_test.go7✅
E2Etests/e2e_test.go3✅
障害シミュレーションtests/failure_test.go4(Redis の障害、NATS の障害、Meta 500、Meta 131049)✅
ベンチマーク結果
ツールレイテンシ目標との比較
check_compliance()1.69 ms50ms の目標より約 30 倍高速

デプロイ

バイナリをビルド
go build -o mcp-server ./cmd/server/main.go
本番環境(.env)
SERVER_HTTP_PORT=8080
SERVER_MCP_NAME=meta-business-mcp
SERVER_MCP_VERSION=1.0.0
TIER=oss

DB_HOST=postgres.prod.internal
DB_PORT=5432
DB_USER=mcp_user
DB_PASSWORD=production_secure_postgres_pass
DB_NAME=meta_mcp
DB_SSLMODE=require

REDIS_ADDR=redis.prod.internal:6379
REDIS_PASSWORD=production_redis_auth_pass
REDIS_DB=0

NATS_URL=nats://nats.prod.internal:4222

META_API_URL=https://graph.facebook.com
META_ACCESS_TOKEN=EAAG...production_long_lived_system_user_token...
META_PHONE_NUMBER_ID=106555123456789
META_WABA_ID=204555123456789
META_WEBHOOK_VERIFY_TOKEN=production_webhook_verification_passphrase

POLICIES_PATH=/app/policies.yaml
SCHEDULER_POLL_INTERVAL=30s
本番用 Docker Compose
services:
  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: mcp_user
      POSTGRES_PASSWORD: production_secure_postgres_pass
      POSTGRES_DB: meta_mcp
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U mcp_user -d meta_mcp"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    restart: always
    command: redis-server --requirepass production_redis_auth_pass
    volumes:
      - redisdata:/data
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "production_redis_auth_pass", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  nats:
    image: nats:alpine
    restart: always
    command: "--jetstream -m 8222"
    ports:
      - "4222:4222"
    volumes:
      - natsdata:/data
    healthcheck:
      test: ["CMD", "nc", "-z", "localhost", "4222"]
      interval: 10s
      timeout: 5s
      retries: 5

  app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - "8080:8080"
    env_file:
      - .env
    volumes:
      - ./policies.yaml:/app/policies.yaml
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
      nats:
        condition: service_healthy

volumes:
  pgdata:
  redisdata:
  natsdata:
docker compose -f docker-compose.prod.yaml up -d --build
データベースのマイグレーションとシーディング

外部のマイグレーションランナーは不要です。起動時に、アプリケーションが自動的に以下を実行します。

  1. すべてのデータベーステーブル(customers、conversations、messages、templates、policies、campaigns、message_frequencies、error_knowledge_base、audit_logs、conversation_pricing)を作成します。
  2. 標準のMetaエラーコードをerror_knowledge_baseにシードします。
  3. policies.yamlのビジネスポリシーを、冪等性のあるON CONFLICT DO UPDATEを使ってシードします。
  4. ID、US、IN、BR、GB、およびDEFAULTのフォールバック用の会話料金データをシードします。

スキーマの変更にはすべてIF NOT EXISTS/ADD COLUMN IF NOT EXISTSを使用します。既存のデプロイ環境は、アプリケーションを再起動するとアップグレードされます。

Webhookの登録

Meta App Developer Portalに公開URLを登録します。

  • 検証:GET /webhook — hub.challengeを返します。
  • イベント:POST /webhook — 受信メッセージ、ステータス更新、テンプレートイベントを受信します。
  • 署名の検証:すべてのPOSTイベントでX-Hub-Signature-256ヘッダーを検証します。
インフラストラクチャの依存関係
依存関係最低バージョン備考
PostgreSQL16AWS RDSに対応
Redis7AWS ElastiCacheに対応
NATS Server最新の安定版JetStream(--jetstream)を有効にする必要があります
Go1.21+ビルド専用
Docker20.10+Compose V2が必要です

ビジネスモデル

ティア価格WABA数メッセージ数機能
OSS無料11日あたり200件コンプライアンスエンジン、基本的なメッセージング、読み取り専用インテリジェンス
Pro$149/月最大5無制限MCPツールスイート全機能、キャンペーン管理、スケジュール設定、ダッシュボード
Enterprise$499/月無制限無制限専用インフラストラクチャ、SSO、カスタムポリシー、SLA

キャンペーン操作(schedule_campaign、cancel_campaign、pause_campaign)はProティアでのみ利用できます。

Apache 2.0ライセンスで提供されています。


ロードマップ

フェーズマイルストーン状況
Phase 1v1.0 — コアプラットフォーム(4ツール)✅ 完了
Phase 2Sprint 2 — MCPツールの完成(4→24ツール)✅ 完了
Phase 3ツール名の変更 + PRDの更新✅ 完了
Phase 4運用ダッシュボード(Next.js + go:embed)✅ 完了
Phase 5マネージドクラウドMVP(Railway、Stripeによる課金)次の予定(3~6週目)
Phase 6デザインパートナーによる検証(代理店3~5社のベータ版)5~10週目
Phase 7商用ローンチ(Pro $149/Enterprise $499)9~12週目
Phase 8拡大(有料顧客15~20社)4~6か月目

MessengerとInstagramは、資金が確保されるまで対象外です。これらのチャネルに関するロードマップ上の確約はありません。

ロードマップの詳細:PRD_MetaBusinessMCP.md §27


オブザーバビリティ

HTTPエンドポイント
エンドポイントメソッドレスポンス
/healthGET200 OK — 本文:「OK」
/metricsGET200 OK — Prometheusスクレイプ用ペイロード
/webhookGET200 OK — webhookチャレンジのエコー
/webhookPOST200 OK — 本文:「EVENT_RECEIVED」
ヘルスチェック
curl http://localhost:8080/health
Prometheusメトリクス
curl http://localhost:8080/metrics

カスタムメトリクスはpkg/observability/に登録されています。標準のGoランタイムおよびプロセスメトリクスは、デフォルトのPrometheusレジストリを介して自動的に含まれます。

ロギング

構造化ログはstdout/stderrに出力されます。Dockerで収集します。

docker compose logs -f app
NATSのモニタリング

NATSのモニタリング用HTTPインターフェースは:8222で利用できます。ストリームとコンシューマーの統計情報はhttp://localhost:8222/jszで確認できます。

ドキュメント一覧

ドキュメント説明
docs/architecture.mdコンポーネントの構成、DB スキーマ(ER)、NATS ストリームのトポロジー、Redis のキャッシュ戦略
docs/api_reference.mdHTTP エンドポイントの仕様と、リクエスト/レスポンス例を含む 24 種類すべての MCP ツールの仕様
docs/deployment_guide.md本番環境へのデプロイ手順、Docker Compose テンプレート、マイグレーション
docs/developer_guide.mdポリシーの追加、新しい MCP ツールの登録、NATS キューワーカーの拡張方法
docs/env_variables.md環境変数の完全な一覧
docs/limitations.md既知のプラットフォーム制限と今後のロードマップ
docs/mcp-tools-test-report.md24 種類すべての MCP ツールの統合テストレポート
walkthrough-1.mdMVP の実装概要
walkthrough-2.mdフェーズ 6:強化とドキュメント整備 — テスト、ベンチマーク、ドキュメント作成スプリント
walkthrough-3.mdWABA の本番環境での検証、リグレッション修正、境界値の正規化
walkthrough-4.mdスプリント 2:MCP ツールの完成(4→24 ツール)— アーキテクチャ上の決定、テストカバレッジ
PRD_MetaBusinessMCP.md製品要件定義書 v3.2

コントリビューション

このプロジェクトでは、Go 1.21 以降、PostgreSQL 16、Redis 7、NATS JetStream を使用しています。

  1. リポジトリをフォークします。
  2. フィーチャーブランチを作成します:git checkout -b feature/my-change
  3. 提出前にテストを実行します:go test -count=1 -p 1 ./...
  4. 変更内容を明確に説明してプルリクエストを提出します。

ポリシーの拡張、MCP ツールの追加、キューワーカーのアーキテクチャの利用方法については、docs/developer_guide.md を参照してください。


ライセンス

Apache License 2.0

Copyright 2026 Adam Zibran

コメント

MCP は初めてですか?

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

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