EmDash には AI アシスタントがサイトのコンテンツと直接連携できる組み込みの Model Context Protocol (MCP) サーバーがあります。Claude、ChatGPT、その他のツールに投稿の下書き、ページの更新、メディアの管理、コンテンツの検索などを依頼できます — すべて自然な会話を通じて。
サイトの MCP サーバー
MCP サーバーはデフォルトで有効です。EmDash は無効にしない限り /_emdash/api/mcp をマウントします。エンドポイントは OAuth またはパーソナルアクセスベアラートークンを受け付けます。管理者のブラウザセッション単体では MCP リクエストを認証しません。OAuth により、クライアントを接続する人は EmDash がトークンを発行する前にスコープを選択できます。
無効にするには、Astro 設定で mcp: false を設定します:
emdash({
mcp: false,
});
AI クライアントを接続する
サイトの MCP サーバー URL は:
https://example.com/_emdash/api/mcp
example.com をあなたのドメインに置き換えてください。ローカル開発では http://localhost:4321/_emdash/api/mcp を使用します。
Claude
URL をリモートカスタムコネクターとして追加します。Claude は EmDash の OAuth フローを開き、サインインして権限を選択できます。Anthropic は EmDash とは独立してコネクター画面を変更するため、正確なコントロールとプラン要件については現在のカスタムコネクター手順に従ってください。
ChatGPT
ChatGPT のデベロッパーモードはリモート MCP サーバーに接続でき、OAuth 認証されたツールをサポートします。対象条件と設定画面は変更される可能性があるため、ChatGPT デベロッパーモードの公式ガイドに従い、アプリ作成時にサイトの MCP URL を使用してください。承認する前に各書き込み呼び出しを確認してください。
Codex
Codex CLI からリモートサーバーを追加し、OAuth ログインを開始します:
codex mcp add emdash-site --url https://example.com/_emdash/api/mcp
codex mcp login emdash-siteChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能は同じ Codex ホストの MCP 設定を共有します。設定ファイル、OAuth、サポートされるトランスポートについては Codex の公式 MCP ドキュメントを参照してください。
サイトコンテンツを操作する
接続後、AI アシスタントに自然言語でこれらの操作を依頼できます。ツール名を知る必要はありません — 欲しいものを説明するだけです。
コンテンツ
- コンテンツを閲覧 — 「最新のブログ投稿10件を見せて」や「下書きのページをすべて見つけて」
- コンテンツを読む — 「‘hello-world’ という投稿を取得して要約して」
- コンテンツを作成 — 「夏のセールについて新しいブログ投稿を書いて」や「About セクションのページの下書きを作成して」
- コンテンツを編集 — 「料金ページを更新して新プランについて言及して」や「FAQ 投稿のタイプミスを修正して」
- 公開とスケジュール — 「夏のセールの投稿を公開して」、「アナウンスを6月1日午前9時にスケジュールして」、「ローンチ投稿のスケジュールをキャンセルして」
- バージョンを比較 — 「ホームページが最後に公開されてから何が変わったか見せて」
- 下書きを管理 — 「About ページの下書き変更を破棄して」や「ニュースレターテンプレートを複製して」
- 翻訳 — 「ウェルカム投稿にどんな翻訳がある?」や「この英語の投稿にリンクされたフランス語の下書きを作成して」(i18n が有効な場合)
バイライン
- バイラインを閲覧 — 「名前に ‘Lee’ を含むゲストコントリビューターを一覧して」
- コンテンツにクレジット — 「この投稿に Priya Shah を主要バイラインとして追加して」
- バイラインを管理 — 「Sam Rivera のゲストバイラインを作成して」や「このコントリビューターの経歴を更新して」
- バイラインを翻訳 — 「このバイラインのロケールバリアントを表示して」
バイラインの作成、更新、削除、翻訳にはエディターロールが必要です。コンテンツ書き込みツールは、呼び出し元がそのコンテンツを作成または編集する権限を持つ場合、既存のバイライン ID を受け付けます。
メディア
- メディアを閲覧 — 「アップロード済みの画像をすべて一覧して」や「メディアライブラリの PDF を見せて」
- 詳細を確認 — 「このメディアアイテムの詳細を取得して」
- ファイルをアップロード — 「この base64 画像を
banner.pngとしてアップロードして」や「この公開 URL の画像をインポートして」 - 既存のストレージオブジェクトを登録 — 「
media/2026/banner.pngをメディアアイテムとして登録して」 - メタデータを更新 — 「ヒーロー画像の alt テキストを ‘山の夕焼け’ に設定して」
- ファイルを削除 — 「古いバナー画像を削除して」
media_upload は base64 エンコードされたバイトまたは公開 HTTP(S) URL を受け付けます。ファイルを保存し、メディアアイテムを登録し、ID と URL を返します。media_create は既にストレージにあるファイルのメタデータのみを登録します。URL インポートはプライベートネットワークターゲットを拒否し、リダイレクトを再チェックします。両方のパスはサイトの MIME タイプとアップロードサイズ制限を適用します。
コントリビューターは media_upload を使用できます。media_create で既存のストレージオブジェクトを登録するには、オーサーまたはそれ以上のロールが必要です。
検索
- コンテンツを見つける — 「‘アクセシビリティ’ に言及する投稿を検索して」や「すべてのコレクションで TypeScript について何でも見つけて」
タクソノミー
- 閲覧 — 「すべてのカテゴリーを一覧して」や「タグを見せて」
- 用語を作成 — 「‘チュートリアル’ タグを追加して」や「‘Engineering’ の下に ‘Frontend’ サブカテゴリーを作成して」
- 用語を名前変更 — 「‘frontend’ カテゴリーを ‘Web Frontend’ に名前変更して」
- 用語を移動 — 「‘チュートリアル’ タグを ‘ガイド’ カテゴリーの下に移動して」や「‘react’ を親から切り離して」
- 用語を削除 — 「未使用の ‘アーカイブ’ タグを削除して」
メニュー
- メニューを表示 — 「メインナビゲーションメニューを見せて」や「フッターメニューには何がある?」
- メニューを作成 — 「新しい ‘sidebar’ メニューを作成して」
- メニューを編集 — 「‘main’ メニューを ‘プライマリナビゲーション’ に名前変更して」
- アイテムを設定 — 「メインメニューのアイテムをホーム、ブログ、About、コンタクトに置き換えて」
- メニューを削除 — 「未使用の ‘mobile’ メニューを削除して」
サイト設定
- 検査 — 「現在のサイトタイトルは?」や「ソーシャルリンクを見せて」
- アイデンティティを更新 — 「サイトタイトルを ‘Acme Blog’ に、タグラインを ‘チームからのストーリー’ に設定して」
- ロゴ / ファビコンを設定 — 「この画像をサイトロゴとして使用して」(
media_uploadでアップロード後) - SEO デフォルト — 「デフォルト OG 画像を新しいバナーに設定して」や「タイトルセパレーターを縦棒に更新して」
- ソーシャルハンドル — 「GitHub と YouTube のリンクをソーシャル設定に追加して」
スキーマ(アドミンのみ)
- 検査 — 「どのコレクションが存在する?」や「posts コレクションのフィールドを見せて」
- コレクションを作成 — 「名前と引用フィールドを持つ新しい ‘testimonials’ コレクションを作成して」
- スキーマを変更 — 「posts に ‘featured’ ブーリアンフィールドを追加して」
リビジョン
- 履歴を表示 — 「この投稿のリビジョン履歴を見せて」
- 復元 — 「投稿を以前のバージョンに復元して」
権限
MCP クライアントが OAuth 同意ページを開くと、要求されたすべての権限がデフォルトで選択されています。アクセスを承認する前に、クライアントが必要としない権限をクリアしてください。結果のトークンは、選択したまま残した権限と EmDash ロールで許可される権限に制限されるため、権限を少なく付与してもクライアントができることが増えることはありません。
| ロール | AI ができること |
|---|---|
| アドミン | スキーマ変更とサイト設定の更新を含むすべて |
| エディター | すべてのコンテンツ、メディア、バイライン、タクソノミー、メニューの管理。スキーマの閲覧と設定の読み取り。 |
| オーサー | コンテンツの作成、所有コンテンツの編集と公開、メディアのアップロードと所有メディアの管理。 |
| コントリビューター | 下書きコンテンツの作成とメディアのアップロード(公開なし)。 |
トークンスコープまたはユーザーのロールが不十分な場合、EmDash はツール呼び出しを拒否します。クライアントはそのエラーを説明できますが、EmDash がそれを適用する権限として残ります。
ヒント
- コレクションを具体的に指定してください。 複数のコレクションがある場合、「投稿を作成して」ではなく「ブログ投稿を作成して」と言ってください。
- 最初にスキーマを聞いてください。 コレクションのフィールドがわからない場合、コンテンツを作成または編集する前に「posts コレクションにはどんなフィールドがある?」と聞いてください。
- 公開前に確認してください。 AI にコンテンツを下書きとして作成してもらい、管理パネルで確認し、その後 AI に公開を依頼するか、自分で公開してください。
- 確認に比較を使用してください。 公開前に「この投稿のライブバージョンと下書きバージョンを比較して」と聞き、何が変わるか正確に確認してください。
- リッチテキストフィールドは Portable Text を使用します。 AI はリッチテキストフィールドのコンテンツを書けますが、複雑なフォーマットは管理エディターで行うのが最適です。
開発者向け
MCP サーバーエンドポイント、認証方法、OAuth ディスカバリ、ツールパラメーター、エラー処理は MCP サーバーリファレンスに文書化されています。