Claude Code に Shager をつなぐ:コマンド1つで、ターミナルから50アカウント分の投稿を下書き
claude mcp add と Bearer ヘッダーで Shager のリモート MCP サーバーを追加し、スコープ選び、動作確認、最初の下書きまで解説します。

Shager を Claude Code につなぐには、claude mcp add --transport http shager https://app.shager.ai/api/mcp --header "Authorization: Bearer shgr_live_..." を実行し、セッション内で /mcp を確認します。これで Shager のリモート MCP サーバーが streamable HTTP で登録され、Claude Code はすぐにワークスペース、接続済みアカウント、投稿を一覧できるようになります。API キーさえあれば、全体で2分ほどです。
このガイドでは、キーの取得、設定スコープの選び方、シークレットを git に入れない方法、そして最初に試す価値のある実践的なタスクを紹介します。
始める前に何が必要ですか?
必要なのは2つです。インストール済みの Claude Code と、shgr_live_ で始まる Shager の API キーです。
キーの入手方法は2通りあります。すでに Shager のアカウントがある場合は、チームの誰かが https://app.shager.ai/dashboard/agents でキーを作成し、スコープ(read、write、必要に応じて publish)を選びます。まだアカウントがない場合は、エージェントが HTTP リクエスト1回で自分を登録し、サンドボックス用のキーを受け取れます。この流れはエージェントの自己登録と引き継ぎで解説しており、要点は /auth.md にまとめています。
何かを貼り付ける前に、スコープについてひとこと。最初の1週間は、Claude Code には read と write だけを与えてください。これでワークスペースの作成、メディアのアップロード、下書きの作成はできますが、予約や公開はできません。publish は、生成される下書きを信頼できるようになってから追加します。

claude mcp add でサーバーを追加するには?
Claude Code の MCP ドキュメントには、Bearer トークンを使うリモート HTTP サーバーの正確な書き方が載っています。--transport http、名前、URL、そして --header です。Shager の場合は次のようになります。
claude mcp add --transport http shager https://app.shager.ai/api/mcp \
--header "Authorization: Bearer shgr_live_your_key_here"
ドキュメントにもあるとおり、claude mcp add は認証情報を検証せずに設定を保存します。キーに打ち間違いがあっても、この時点ではエラーになりません。失敗するのは、あとでクライアントが接続するときです。
どのスコープを使えばよいですか?
設定の保存先は --scope フラグで決まります。同じドキュメントによると、次のとおりです。
| スコープ | 保存先 | こんなときに |
|---|---|---|
local(デフォルト) |
ユーザー設定(このプロジェクト専用) | 1つのリポジトリで Shager を試すとき |
project |
リポジトリ内の .mcp.json(チームで共有) |
チーム全員がこのリポジトリからコンテンツ作業をするとき |
user |
ユーザー設定(すべてのプロジェクト) | どこで Claude Code を開いても Shager を使いたいとき |
代理店なら、たいていは user が正解です。配信は特定のコードベースに縛られないからです。
claude mcp add --transport http shager --scope user https://app.shager.ai/api/mcp \
--header "Authorization: Bearer shgr_live_your_key_here"
キーをコミットせずに設定を共有するには?
チームメンバーにも自動でサーバーが入るよう project スコープを使う場合、.mcp.json にキーを直接書き込むのはやめましょう。Claude Code は HTTP サーバーの url と headers で環境変数の展開に対応しており、${VAR} や ${VAR:-default} が使えます。コミットするのはこちらです。
{
"mcpServers": {
"shager": {
"type": "http",
"url": "https://app.shager.ai/api/mcp",
"headers": {
"Authorization": "Bearer ${SHAGER_API_KEY}"
}
}
}
}
そのうえで、各自が自分のキーをシェルのプロファイルで export します。
export SHAGER_API_KEY="shgr_live_your_key_here"
ドキュメントにある注意点が2つあります。変数が未設定でも Claude Code は設定を読み込み、${SHAGER_API_KEY} という文字列をそのまま送信します(claude mcp list に警告が表示されます)。また、ANTHROPIC_API_KEY のような一部の予約済みの認証情報名は、リモートのヘッダーでは意図的に空に展開されます。必ず独自の変数名を使ってください。SHAGER_API_KEY なら問題ありません。
一人ひとりに別のキーを持たせると、https://app.shager.ai/dashboard/agents の監査ログも役に立つようになります。エージェントの呼び出しはすべて、それを行ったキーとともに記録されるので、どの下書きを誰のセッションが作ったのかが分かります。
正しく動いているか確認するには?
シェルから次を実行します。
claude mcp list
claude mcp get shager
セッション内では /mcp と入力します。正常なサーバーは connected と表示されます。ドキュメントによれば、認証情報に問題があるサーバーは failed と表示され、詳細に HTTP ステータスが含まれます。Shager の場合、401 はヘッダーがないか形式が誤っていることを意味します。サーバーが期待しているのは、Bearer という単語と半角スペース1つを含む、Authorization: Bearer shgr_... という正確な形式です。
次に、軽くて読み取りだけで済む指示を Claude に出してみます。
Call whoami on shager, then list my workspaces with their channel counts.
whoami は、オーガニゼーションとキーに付いているスコープを返します。read と write があって publish がなければ、意図したとおりに設定できています。

最初の実践的なタスクは何がよいですか?
いきなり「何か公開して」から始めるのはやめましょう。大規模運用で大事になる Shager の機能を一通り使う、下書き作成から始めるのがおすすめです。最初のプロンプトの例です。
In the workspace "Northside Dental", list the channels and the account groups.
Upload this video as media: https://example.com/clips/whitening-30s.mp4
(width 1080, height 1920, duration_ms 30000).
Then create a DRAFT post (no schedule_at) to the group "All locations" as a REEL,
with a caption per channel that mentions the city in that account's name,
first_comment "Book a slot: " plus the cta_url,
cta_url https://northsidedental.example/book, campaign "whitening-oct".
Show me the per-channel captions before you call create_post.
裏側では、Claude が list_channels、list_groups、upload_media_from_url、create_post を順に呼び出します。この呼び出しで特に効いているのは次の3つのフィールドです。
per_channelを使うと、50 件の同じ投稿ではなく、アカウントごとに別のキャプションを付けられます。重複には SNS も読者も気づきます。大規模投稿でスパム判定を避ける方法でこれをおすすめしているのはそのためです。cta_urlには、アカウントごとに別の短縮リンクと UTM タグが付き、utm_contentでアカウントを識別します。クリックはget_analyticsでアカウント別に戻ってきます。- アップロード時に width、height、
duration_msを渡しておくと、何かがキューに入る前に、Shager が各 SNS のルールに照らしてリールを検証できます。
schedule_at を渡していないので、結果は下書きになります。Shager のアプリで確認するか、Claude に get_post を頼んでください。
Claude Code に許可する操作を管理するには?
Claude Code は、許可していない MCP ツールを呼び出す前に確認を求めます。MCP ツールは mcp__<server>__<tool> という名前になるので、Shager なら mcp__shager__create_post、mcp__shager__list_posts などが表示されます。最初は、読み取り系のツールを許可リストに入れ、書き込みを伴うものはすべて確認を求める設定にするのが妥当です。これを publish のないキーと組み合わせれば、独立した2つのブレーキが効きます。クライアント側があなたに確認を求め、サーバー側はそもそも予約を拒否します。
予約を始める準備ができたら、publish 付きの新しいキーを作って環境変数を差し替え、古い read/write のキーは試行錯誤用のセッションに残しておきます。Shager の REST API と MCP サーバーは同じスコープを適用するので、スクリプトがどちらの経路を通っても同じルールが守られます。
トラブルシューティング チェックリスト
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
/mcp が failed、401 |
ヘッダーに Bearer がない、またはキーの打ち間違い |
サーバーを追加し直すか、Claude を起動したシェルで環境変数が export されているか確認する |
ツールは見えるが、schedule_at 付きの create_post が 403 を返す |
キーに publish がない、またはサンドボックスが未引き継ぎ |
想定どおりの動作。下書きにするか、人にスコープを追加してもらう |
429 rate_limited |
1つのキーで1分あたり 120 リクエストを超えた | 処理をまとめる。create_post 1回で多数のアカウントをカバーできる |
422 rejected |
SNS のルールに違反(リールが長すぎるなど) | メッセージを読む。アカウントとルールが示されている |
よくある質問
Claude Code 以外に何かインストールする必要はありますか?
いいえ。Shager はリモート MCP サーバーとして動くので、ローカルのプロセスも、Docker コンテナも、npm パッケージも不要です。Claude Code は streamable HTTP で https://app.shager.ai/api/mcp と直接通信します。
投稿ごとに承認しなくても、Claude Code は公開できますか?
使っているキーに publish スコープがあり、アカウントが人によって引き継がれている場合に限ります。そのスコープがなければ、エージェントが何をしようと、予約や公開の呼び出しは 403 を返します。多くのチームは、ワークスペースごとにクライアント承認も有効にしており、予約の前に人によるレビューが入るようにしています。
Shager は Claude Code の OAuth ログインに対応していますか?
はい。Shager の MCP サーバーは、OAuth に対応したあらゆる MCP クライアントからのログインに対応しています。--header フラグを付けずにサーバーを追加し、/mcp を実行して認証を選んだら、ブラウザで Shager にログインして承認します。上で紹介した API キーヘッダーも引き続き使えます。誰もログインできないスクリプトやマシンでは、こちらのほうが向いています。
次のステップ
Claude Code からワークスペースが見えるようになったら、次はプロンプトを毎回打ち直すのではなく、手順を繰り返し使える形にしましょう。Shager 用の Claude スキルを作るガイドでは、上の下書きワークフローを、チーム全員が実行できる /shager コマンドにします。先に全体像を知りたい場合は、エージェント向けページにすべてのツールとエンドポイントが載っています。


