mcpField
M
mcp-sanity-images

mcp-sanity-images

本地服务
github.com/pijusz文件与存储16 天前更新

关于 mcp-sanity-images

mcp-sanity-images 是将本地图片传入 Sanity CMS 的 MCP 服务,支持单张或文件夹上传、将资源附加到文档,以及使用 GROQ 查询内容。

主要功能

  1. 01上传单张图片资源
  2. 02上传并附加到文档
  3. 03批量上传文件夹图片
  4. 04列出本地图片文件
  5. 05运行只读 GROQ 查询

适用场景

  1. 01将本地图片添加到 Sanity 文档
  2. 02上传目录中的图片资源
  3. 03附加图片前查找文档 ID

MCP 相关

向 MCP 客户端提供工具,用于将本地图片上传到 Sanity、修改文档字段、列出文件和运行 GROQ 查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pijusz-mcp-sanity-images": {
"command": "npx",
"args": [
"-y",
"mcp-sanity-images"
]
}
}
}
启动命令npx -y mcp-sanity-images

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-sanity-images0.3.7

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
altstring否
datasetstring否
filePathstring是
projectIdstring否

详细介绍

MCPi sanity-images

用于将本地图片上传到 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。

替代方案:独立二进制文件

从 Releases 下载预构建的二进制文件:

平台文件
macOS(Apple Silicon)mcp-sanity-images-darwin-arm64
macOS(Intel)mcp-sanity-images-darwin-x64
Linuxmcp-sanity-images-linux-x64
Windowsmcp-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将单张本地图片上传到 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

一次调用即可完成上传和设置。

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 发送。可用于查找文档 ID,以便随后使用 upload_and_set。

query: "*[_type == 'product']{_id, title, slug}"
perspective: "raw"   # optional: raw (default) | published | drafts
Perspective查询可见的内容
raw(默认)已发布的文档和草稿并列显示,并使用其真实 ID(草稿的 ID 以 drafts. 为前缀)。可将这些 ID 直接传给 upload_and_set。
published仅显示已发布的文档;草稿不可见。
drafts将每个草稿视为已发布的文档。_id 始终是已发布文档的 ID(即使该文档从未发布过);存储的 ID 位于 _originalId 中。

服务器固定使用 Sanity API 版本 v2025-02-19。该版本将 published 设为 API 的默认 perspective。此工具会发送 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。