Bulkpublish について
Bulkpublish MCP ServerはBulkPublishのソーシャルメディア公開APIをツールとして公開し、AIアシスタントによる投稿、メディア、分析の管理を可能にします。ローカルのstdioとホスト型HTTPに対応し、ツール構成を選べます。
主な機能
- 01ソーシャル投稿の作成・編集・予約
- 02メディアと接続済みチャンネルの管理
- 03投稿指標と分析データの取得
- 04投稿・分析用のインタラクティブ画面
- 05構成可能なツールプロファイル
活用シーン
- 01複数のソーシャルチャンネルに投稿を予約
- 02投稿のエンゲージメント指標を確認
- 03画面で投稿を作成して送信
- 04ウェブクライアント向けにHTTPで公開
MCP 対応
このMCPサーバーはBulkPublish APIの操作をツールとして公開し、ローカルstdioとStreamable HTTPに対応します。一部のツールはMCP Apps対応クライアントでインタラクティブ画面を表示します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.bulkpublish.com/mcpclaude mcp add --transport http azeemkafridi https://mcp.bulkpublish.com/mcp{"mcpServers":{"azeemkafridi":{"type":"http","url":"https://mcp.bulkpublish.com/mcp"}}}Cursor で開く{"servers":{"azeemkafridi":{"type":"http","url":"https://mcp.bulkpublish.com/mcp"}}}VS Code で開く{"mcpServers":{"azeemkafridi":{"type":"http","url":"https://mcp.bulkpublish.com/mcp"}}}{"mcpServers":{"azeemkafridi":{"serverUrl":"https://mcp.bulkpublish.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
BulkPublish MCP Server
Claude などの AI アシスタントが BulkPublish のソーシャルメディア投稿 API を操作できるようにする、Model Context Protocol サーバーです。
できること
この MCP サーバーは、AI アシスタントが直接呼び出せるツールとして BulkPublish API の操作を公開します。自然な会話を通じて、投稿の予約、分析データの確認、メディアのアップロード、ラベルの管理などを Claude に依頼できます。
インストール
オプション 1:npx(推奨)
npx @bulkpublish/mcp-server
オプション 2:グローバルインストール
npm install -g @bulkpublish/mcp-server
bulkpublish-mcp
オプション 3:ソースからインストール
git clone https://github.com/azeemkafridi/bulkpublish-api.git
cd bulkpublish-api/mcp-server
npm install
npm run build
node dist/index.js
Node ≥ 20.19 が必要です。
npm run buildは Vite でコンポーザー UI をバンドル(build:ui)し、その後tscでサーバーをコンパイルします。
設定
API キーを環境変数として設定します。
export BULKPUBLISH_API_KEY=bp_your_api_key_here
API キーは app.bulkpublish.com/developer で取得できます。
Claude Desktop
次の内容を Claude Desktop の設定ファイルに追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bulkpublish": {
"command": "npx",
"args": ["-y", "@bulkpublish/mcp-server"],
"env": {
"BULKPUBLISH_API_KEY": "bp_your_api_key_here"
}
}
}
}
ソースからインストールした場合:
{
"mcpServers": {
"bulkpublish": {
"command": "node",
"args": ["/absolute/path/to/bulkpublish-api/mcp-server/dist/index.js"],
"env": {
"BULKPUBLISH_API_KEY": "bp_your_api_key_here"
}
}
}
}
Claude Code
Claude Code の設定に MCP サーバーを追加します。
claude mcp add bulkpublish -- npx -y @bulkpublish/mcp-server
シェルのプロファイルまたは .env ファイルで環境変数を設定します。
export BULKPUBLISH_API_KEY=bp_your_api_key_here
リモート/ホスト型サーバー(HTTP)
上記の npx/stdio 構成では、サーバーはローカルで実行されます。ローカルプロセスを起動できない Web クライアント、つまり claude.ai のカスタムコネクター と Smithery のゲートウェイ は、ホスト型 HTTP エンドポイントに接続します。stdio 用の実行ファイルに加えて、このサーバーには Streamable HTTP トランスポート(dist/http.js。npm run start:http で起動)が含まれています。
| エンドポイント | 用途 |
|---|---|
POST /mcp | MCP Streamable HTTP(ステートレス) |
GET /.well-known/mcp/server-card.json | レジストリがスキャンを省略できるようにする静的メタデータ |
GET /health | 稼働状態の確認 |
このサーバーはマルチテナントです。プロセスは API キーを保持しません。呼び出し元は、接続 URL(?key=bp_…)、Smithery の ?config= blob、または Authorization: Bearer bp_…/X-BulkPublish-Key ヘッダーを通じて、リクエストごとに各自の bp_… キーを指定します。initialize、tools/list、resources/* にはキーは不要です(スキャンとツールの検出が機能します)。キーなしの tools/call は 401 を返します。
Dockerfile が含まれています。
docker build -t bulkpublish-mcp . && docker run -p 8080:8080 bulkpublish-mcp
デプロイ後、claude.ai → Settings → Connectors → Add custom connector で https://<host>/mcp?key=bp_… として追加するか、https://<host>/mcp の URL を Smithery に公開します。
ツールプロファイル
サーバーには、BULKPUBLISH_TOOL_PROFILE で選択する3つのツールプロファイルが用意されています。
| プロファイル | ツール | デフォルトで使用される場所 |
|---|---|---|
core | 20 — チャンネル、投稿、メディア、分析、インタラクティブパネル | ホスト型 HTTP サーバー(dist/http.js)。Claude と ChatGPT のディレクトリに掲載されるのはこちらです |
inbox | 27 — core のすべてに加え、受信トレイとコメント用ツール:list_conversations、get_conversation、reply_to_conversation、update_conversation、list_post_comments、reply_to_comment、moderate_comment | ホスト型デプロイでオプトイン(BULKPUBLISH_TOOL_PROFILE=inbox)。このプロファイルの core ツールは、core プロファイルのものと同一です |
full | すべてのツール(受信トレイとコメント用ツール、ラベル、ハッシュタググループ、テンプレート、カレンダーメモ、レビューリンク、クライアント接続リンク、定期スケジュール、チャンネルセット、RSS フィード、分割アップロード、クォータを含む) | ローカルの stdio サーバー(npx @bulkpublish/mcp-server) |
ホスト型デプロイですべての機能を公開するには BULKPUBLISH_TOOL_PROFILE=full を設定し、ツール一覧を絞るにはローカルで core を設定します。パネルのボタンは create_post、publish_post、retry_post、update_post、delete_post、list_channels、list_media、get_post、create_media_upload、finalize_media_upload を呼び出すため、これらはすべて core に含まれます。
各ツールには title と、明示的な readOnlyHint、destructiveHint、idempotentHint、openWorldHint のブール値が設定されています。npm run check:annotations は、すべてのプロファイルでこれらを検証します(ディレクトリへの登録申請で使用する、ツールごとの根拠を記載した表を出力するには --table を追加します)。
利用可能なツール
★ が付いたツールは core プロファイルに含まれます(ツールプロファイルを参照)。✉ が付いたツールは inbox に含まれます(★ のツールもすべて含みます)。それ以外のツールを使用するには full が必要です。
| ツール | 説明 |
|---|---|
| 投稿 | |
create_post ★ | 投稿を作成し、必要に応じて予約投稿します(postTypeOverrides を使って、リール、ストーリーズ、カルーセル、スレッドに対応) |
compose_post ★ | インタラクティブな作成画面(MCP Apps)を開き、投稿を下書きまたは予約します。投稿は create_post で送信されます |
update_post ★ | 下書きまたは予約済みの投稿を更新します |
get_post ★ | 投稿の詳細をすべて取得します |
list_posts ★ | フィルター(ステータス、検索、期間)を指定して投稿を一覧表示します |
delete_post ★ | 投稿を削除します |
publish_post ★ | 下書きの投稿をすぐに公開します |
retry_post ★ | 失敗した投稿を再試行します |
approve_post | チームの承認待ちの投稿を承認します(post:approve 権限を持つロールが対象) |
reject_post | 承認待ちの投稿を任意の理由とともに下書きに戻します |
get_post_metrics ★ | エンゲージメント指標(インプレッション、いいね、コメント、シェア)を取得します。各プラットフォームの項目には supportedMetrics が含まれます。このリストにないキーの値は、測定値ではなく保存された 0 です |
publish_story | Facebook または Instagram にストーリーズとして公開します |
bulk_posts | 複数の投稿をまとめて削除または再試行します |
get_queue_slot ★ | チャンネルの次の最適な時間枠を取得します |
| チャンネル | |
list_channels ★ | 接続済みのソーシャルメディアチャンネルをすべて一覧表示します |
get_channel_health | チャンネルのトークンの状態を確認します |
get_channel_options | プラットフォーム固有のオプション(ボード、プレイリスト)を取得します |
search_mentions | @メンションするユーザーを検索します(X、Bluesky、Mastodon、LinkedIn Pages — LinkedIn の検索結果には、照合に使われた vanityName スラッグが含まれます) |
| チャンネルセット | |
list_channel_sets | ワンクリックで複数チャンネルを指定できる、保存済みチャンネルグループを一覧表示します |
create_channel_set | チャンネルの名前付きグループを保存します(組織あたり最大 50 個、名前は組織内で一意) |
update_channel_set | セットの名前を変更するか、チャンネルを変更します |
delete_channel_set | チャンネルセットを削除します |
| RSS 自動投稿 | |
list_rss_feeds | 15 分ごとに取得される RSS/Atom フィードを一覧表示します(新しい項目は投稿になります) |
create_rss_feed | フィードを追加します(組織あたり最大 20 個)。mode は draft(デフォルト。項目は下書きになります)または publish(自動公開)です。任意の fieldMapping で、項目の表示方法(キャプションテンプレート、メディアの選択、切り詰め、チャンネルごとの上書き)を指定できます |
update_rss_feed | フィードを変更、一時停止、または別の URL に切り替えます(feedUrl を変更すると基準がリセットされます。過去の項目が一斉に投稿されることはありません) |
delete_rss_feed | フィードを停止して削除します |
| メディア | |
upload_media ★ | URL(または stdio サーバー上のローカルパス)からメディアファイルをアップロードします |
get_media | ID でメディアファイルを取得します |
list_media ★ | アップロード済みのメディアファイルを一覧表示します |
delete_media | メディアファイルを削除します |
create_media_upload ★ | ブラウザーから直接アップロードするための署名付き R2 URL を確保します(投稿作成画面で使用) |
finalize_media_upload ★ | ブラウザーからの PUT 後に、アップロード済みオブジェクトをメディアファイルとして登録します(投稿作成画面で使用) |
create_multipart_upload | 大容量メディア(最大 1GB の動画)向けの分割アップロードを開始します。固定サイズ 10MB の各パート用に署名付き URL を発行します |
complete_multipart_upload | アップロード済みの各パート(それぞれの partNumber と ETag)を結合し、メディアファイルとして登録します |
abort_multipart_upload | 進行中の分割アップロードをキャンセルし、保存済みのパートを削除します |
| ラベル | |
create_label | 新しいラベルを作成します |
list_labels | すべてのラベルを一覧表示します |
update_label | ラベルの名前または色を更新します |
delete_label | ラベルを削除します |
| 分析 | |
get_analytics ★ | 期間を指定して分析の概要を取得します |
| スケジュール | |
list_schedules | 繰り返しスケジュールを一覧表示します |
create_schedule | 繰り返しスケジュールを作成します |
update_schedule | スケジュールを更新します |
delete_schedule | スケジュールを削除します |
| 受信トレイとコメント | |
list_conversations ✉ | ダイレクトメッセージ、レビュー、コメントスレッドを、最新のアクティビティ順に、フィルターとページ指定を使って一覧表示します(Pro プランと Business プラン) |
get_conversation ✉ | 1 件の会話のメッセージを古い順に読み込みます。既読にはなりません |
reply_to_conversation ✉ | プラットフォーム上で相手にすぐ返信します。送信した返信は取り消せません |
update_conversation ✉ | 会話を既読または未読にする、アーカイブまたは再開する、スヌーズする、または担当者を割り当てます。メッセージは送信されません |
list_post_comments ✉ | 公開済みの投稿に付いたコメントとリアクションをチャンネルごとに一覧表示します。返信ツールとモデレーションツールで使う ID も含まれます |
reply_to_comment ✉ | 投稿を公開したチャンネルとして、コメントに公開返信をすぐに投稿します |
moderate_comment ✉ | プラットフォーム上のコメントに「いいね」する、いいねを取り消す、非表示にする、非表示を解除する、または削除します(削除は元に戻せません) |
| アカウント | |
get_quota_usage | 現在のアカウント使用状況を確認します(BULKPUBLISH_HIDE_BILLING=1 の場合は非表示) |
| インタラクティブ UI(MCP Apps) | |
compose_post ★ | インタラクティブな投稿作成画面を開きます(上記にも記載) |
view_analytics ★ | インタラクティブな分析ダッシュボードを開きます |
view_posts ★ | インタラクティブな投稿一覧を開きます |
view_channels ★ | インタラクティブなチャンネル表示を開きます |
view_media ★ | インタラクティブなメディアギャラリーを開きます |
view_quota | インタラクティブなアカウント使用状況の表示を開きます(BULKPUBLISH_HIDE_BILLING=1 の場合は非表示) |
インタラクティブ UI(MCP Apps)
MCP Apps(Claude、ChatGPT、VS Code、Goose、Postman、Smithery のプレイグラウンド)をサポートするホストでは、compose_post ツールを使うと、会話内にインラインで表示されるインタラクティブな投稿作成画面が開きます。チャンネルを選択し、内容を入力し、必要に応じて予約投稿を設定してから送信します。送信時にはホストブリッジを介して create_post を呼び出すため、サンドボックス化された iframe に API キーが保持されることはありません。MCP Apps をサポートしていないホストにはプレーンテキストの概要が返されるため、問題は発生しません。
複数のツールが UI を表示します。compose_post(投稿作成画面)、view_analytics、view_posts、view_channels、view_media、view_quota です。それぞれが src/ui/<name>/ 内にある独立したウィジェットで、Vite によって単一の HTML ファイルにバンドルされ(各ウィジェットにつき、単一入力で 1 回実行します。scripts/build-ui.mjs を参照)、src/ui/widgets.generated.ts を介してサーバーにインライン化されます。BulkPublish ウェブアプリのデザイントークン(src/ui/tokens.css)を共有しているため、外観が統一されています。View は呼び出し元のツールの structuredContent からデータを受け取り、ホストブリッジを介してほかのツールを呼び出すことができます。そのため、サンドボックス化された iframe に API キーが保持されることはありません。MCP Apps をサポートしていないホストにはプレーンテキストの概要が返されます。
会話例
Claude で BulkPublish ツールを使用する例を示します。
あなた: 明日の午前 9 時(EST)に、「新機能を発表できることをうれしく思います!example.com でご確認ください」という投稿を、接続済みのすべてのチャンネルに予約投稿してください。
Claude: まず、接続済みのチャンネルを確認します。
[list_channels を呼び出す]
有効なチャンネルが 3 つあります。
- X/Twitter:@yourcompany(ID:1)
- LinkedIn:Your Company Page(ID:2)
- Instagram:@yourcompany(ID:3)
それでは、明日の午前 9 時(米国東部時間)に投稿を予約します。
[コンテンツ、チャンネル、scheduledAt: "2025-01-16T14:00:00Z"、timezone: "America/New_York"、status: "scheduled" を指定して create_post を呼び出す]
完了しました。投稿を予約しました。
- 投稿 ID:42
- ステータス:scheduled
- 予約日時:2025 年 1 月 16 日午前 9:00(EST)
- チャンネル:X/Twitter、LinkedIn、Instagram
あなた: 今月の投稿のパフォーマンスを教えてください。
Claude: [from: "2025-01-01"、to: "2025-01-31" を指定して get_analytics を呼び出す]
1 月の分析概要はこちらです。
- 投稿総数:28
- 公開済み:25
- 失敗:1
- 予約済み(保留中):2
- プラットフォーム別:X/Twitter(25 件中 24 件公開済み)、LinkedIn(20 件中 19 件公開済み)、Instagram(15 件すべて公開済み)
- 最多投稿日:1 月 12 日(5 件)
あなた: この画像をアップロードして、画像を添付した下書き投稿を作成してください:https://example.com/product-launch.png
Claude: [url を指定して upload_media を呼び出す]
画像をアップロードしました(ID:15、1200x630px、245KB)。
[コンテンツと mediaFileIds を指定して create_post を呼び出す]
製品発表の画像を添付した下書き投稿を作成しました(ID:43)。準備ができたら、内容を確認して公開できます。
環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
BULKPUBLISH_API_KEY | はい | — | API キー(bp_ で始まります) |
BULKPUBLISH_BASE_URL | いいえ | https://app.bulkpublish.com | API のベース URL(セルフホスト型インスタンス用) |
BULKPUBLISH_TOOL_PROFILE | いいえ | full(stdio) / core(ホスト型 HTTP) | core、inbox、full のいずれか。 ツールプロファイルを参照してください |
BULKPUBLISH_HIDE_BILLING | いいえ | — | 1 を指定すると get_quota_usage と view_quota を除外します(full の場合のみ有効です。core には常に含まれません) |
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。