mcp-sanity-images について
mcp-sanity-imagesは、ローカル画像をSanity CMSに取り込むMCPサーバーです。単体・フォルダー単位のアップロード、ドキュメントへのアセット設定、GROQによるコンテンツ検索に対応します。
主な機能
- 01画像アセットの単体アップロード
- 02アップロードとドキュメントへの設定
- 03フォルダー内画像の一括アップロード
- 04ローカル画像ファイルの一覧表示
- 05読み取り専用GROQクエリの実行
活用シーン
- 01ローカル画像をSanityドキュメントに追加
- 02ディレクトリ内の画像アセットをアップロード
- 03画像設定前にドキュメントIDを検索
MCP 対応
ローカル画像のSanityへのアップロード、ドキュメントフィールドの更新、ファイル一覧、GROQクエリのツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| alt | string | いいえ | |
| dataset | string | いいえ | |
| filePath | string | はい | |
| projectId | string | いいえ |
詳細
ローカル画像をSanity CMSにアップロードする MCP サーバーです。
AI アシスタントがファイルシステムから Sanity に画像ファイルをアセットとして直接アップロードできます。
クイックスタート
1. Sanity トークンを取得する
SANITY_TOKEN 環境変数を設定するか、Sanity CLI でログインしてください。
npx sanity login
サーバーは Sanity CLI の設定からトークンを自動的に読み取ります(すべてのプラットフォームで ~/.config/sanity/config.json)。
2. Claude Code に追加する
claude mcp add sanity-images --scope user --transport stdio \
-e SANITY_PROJECT_ID=your-project-id \
-- npx -y mcp-sanity-images@latest
これで完了です。Claude Code を再起動すると、ツールを利用できます。各セッションでは、常に最新バージョンが自動的に実行されます。
Bun がインストールされている場合は、
bunx mcp-sanity-images@latestも使用できます。
代替方法:スタンドアロンバイナリ
リリースからビルド済みのバイナリをダウンロードします。
| プラットフォーム | ファイル |
|---|---|
| macOS(Apple Silicon) | mcp-sanity-images-darwin-arm64 |
| macOS(Intel) | mcp-sanity-images-darwin-x64 |
| Linux | mcp-sanity-images-linux-x64 |
| Windows | mcp-sanity-images-windows-x64.exe |
macOS / Linux:
curl -Lo mcp-sanity-images https://github.com/pijusz/mcp-sanity-images/releases/latest/download/mcp-sanity-images-darwin-arm64
chmod +x mcp-sanity-images
sudo mv mcp-sanity-images /usr/local/bin/
claude mcp add sanity-images --scope user --transport stdio \
-e SANITY_PROJECT_ID=your-project-id \
-- /usr/local/bin/mcp-sanity-images
Windows(PowerShell):
Invoke-WebRequest -Uri "https://github.com/pijusz/mcp-sanity-images/releases/latest/download/mcp-sanity-images-windows-x64.exe" -OutFile "$env:LOCALAPPDATA\mcp-sanity-images.exe"
claude mcp add sanity-images --scope user --transport stdio -e SANITY_PROJECT_ID=your-project-id -- "%LOCALAPPDATA%\mcp-sanity-images.exe"
Claude Desktop
claude_desktop_config.json に追加します。
npx を使用(自動更新)
{
"mcpServers": {
"sanity-images": {
"command": "npx",
"args": ["-y", "mcp-sanity-images@latest"],
"env": {
"SANITY_PROJECT_ID": "your-project-id"
}
}
}
}
バイナリを使用(macOS / Linux)
{
"mcpServers": {
"sanity-images": {
"command": "/usr/local/bin/mcp-sanity-images",
"env": {
"SANITY_PROJECT_ID": "your-project-id"
}
}
}
}
バイナリを使用(Windows)
{
"mcpServers": {
"sanity-images": {
"command": "%LOCALAPPDATA%\\mcp-sanity-images.exe",
"env": {
"SANITY_PROJECT_ID": "your-project-id"
}
}
}
}
ツール
| ツール | 説明 |
|---|---|
upload_image | ローカル画像を 1 枚、アセットとして Sanity にアップロードします |
upload_and_set | 画像をアップロードし、ドキュメントのフィールドにパッチを適用します |
batch_upload | フォルダー内のすべての画像をアセットとしてアップロードします |
list_images | ディレクトリ内の画像ファイルを一覧表示します |
groq_query | GROQ クエリを実行します(添付前にドキュメントを検索)。オプションで perspective を指定できます(デフォルトは raw、published、drafts) |
対応形式:PNG、JPG/JPEG、WebP、GIF、SVG。
設定
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SANITY_PROJECT_ID | はい | — | Sanity プロジェクト ID |
SANITY_DATASET | いいえ | production | データセット名 |
SANITY_TOKEN | いいえ* | — | API トークン(*CLI 認証にフォールバックします) |
すべてのツールで projectId と dataset もパラメーターとして受け付け、呼び出しごとに環境変数を上書きできます。
ツールの詳細
upload_image
単一のファイルをアップロードし、アセット参照を取得します。
filePath: "/path/to/hero.png"
alt: "Hero banner" (optional — derived from filename)
{ assetId, url, alt, reference } を返します。reference は Sanity の任意の画像フィールドにパッチを適用できる状態です。
upload_and_set
アップロードとパッチ適用を 1 回の呼び出しで行います。
filePath: "/path/to/hero.png"
documentId: "product-123" # or "drafts.product-123" to patch the draft
fieldPath: "hero.image"
アップロード前に、ツールは <id> と drafts.<id> のどちらが存在するかを確認するため、ID が間違っていてもアップロードされません。
| 渡す値 | 存在するもの | パッチ適用先 |
|---|---|---|
product-123 | 公開版のみ | product-123 |
product-123 | 公開版とドラフト | product-123。ドラフトは変更されない旨の note が付きます(Studio ではドラフトが表示され、公開するとフィールドが上書きされます) |
product-123 | ドラフトのみ(未公開) | drafts.product-123。note と requestedDocumentId が付きます |
drafts.product-123 | ドラフト | drafts.product-123 |
| いずれか | どちらも存在しない | 何も行われず、"Document not found" を返します |
応答の documentId は、実際にパッチが適用されたドキュメントです。ミューテーションは returnIds=true&visibility=sync を指定して送信されるため、後続の groq_query で変更を確認できます。
batch_upload
ディレクトリ内のすべての画像をアップロードします。
directory: "/path/to/images"
recursive: true
{ uploaded, assets } を返します。一部のファイルが失敗しても、残りはアップロードされ、失敗したファイルは failed(および failedCount)に一覧表示されます。
list_images
アップロードせずに画像ファイルを一覧表示します。AI が利用可能な画像を確認するのに便利です。
directory: "/path/to/images"
recursive: true
groq_query
任意の GROQ クエリを実行します(読み取り専用)。長いクエリは自動的に POST で送信されます。upload_and_set を使用する前にドキュメント ID を見つけるのに便利です。
query: "*[_type == 'product']{_id, title, slug}"
perspective: "raw" # optional: raw (default) | published | drafts
| 視点 | クエリで参照できる内容 |
|---|---|
raw(デフォルト) | 公開済みドキュメントと下書きを、それぞれの実際の ID(下書きは drafts. が接頭辞として付いた ID)とともに並べて表示します。これらの ID をそのまま upload_and_set に渡せます。 |
published | 公開済みドキュメントのみを表示します。下書きは表示されません。 |
drafts | すべての下書きを、公開済みであるかのように適用します。_id は常に公開済み ID です(これまで一度も公開されていない下書きの場合も同様です)。保存されている ID は _originalId にあります。 |
サーバーでは Sanity API バージョン v2025-02-19 を固定して使用します。このバージョンでは、API のデフォルトの視点が published に変更されました。このツールは、指定がない場合は raw を送信するため、以前のリリース(API v2021-10-21、デフォルトは raw)と同じ結果が得られます。
更新
npx @latest を使用する場合(推奨):常に最新バージョンを取得できるため、手動で更新する必要はありません。
バイナリを使用する場合:サーバーは起動時に新しいリリースを確認し、古いバージョンの場合は stderr にログを出力します。
[mcp-sanity-images] WARN v0.5.0 available (current: v0.4.1). Download: https://github.com/pijusz/mcp-sanity-images/releases/latest
インストール済みのバージョンを確認します。
mcp-sanity-images --version
更新するには、新しいバイナリをダウンロードして古いものと置き換えます。
開発
Bun が必要です。
git clone https://github.com/pijusz/mcp-sanity-images.git
cd mcp-sanity-images
bun install
bun test
bun run lint # biome check
bun run build # compile standalone binary
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。