Sanity MCP Server
by jlmelis
This MCP server provides tools for interacting with Sanity.io content from Claude Desktop. It allows you to create, edit, list, and get schemas for documents in your Sanity project.
View on GitHub
Last updated: N/A
Sanity MCP Server
This MCP server provides tools for interacting with Sanity.io content from Claude Desktop.
Installation
- Clone this repository
- Install dependencies:
npm install
- Create a
.env
file with your Sanity credentials:
SANITY_PROJECT_ID=your_project_id
SANITY_DATASET=your_dataset
SANITY_TOKEN=your_token
Usage with Claude Desktop
- In Claude Desktop, go to Settings > MCP Servers
- Add a new server with these settings:
{
"command": "node",
"args": ["src/sanity-mcp-server.ts"],
"env": {
"SANITY_PROJECT_ID": "your_project_id",
"SANITY_DATASET": "your_dataset",
"SANITY_TOKEN": "your_token"
}
}
Available Tools
Create Document
Creates a new document in Sanity
Parameters:
type
: Document typecontent
: Document content
Example:
{
"type": "post",
"content": {
"title": "My Post",
"body": [
{
"_type": "block",
"children": [
{
"_type": "span",
"text": "Hello world!"
}
]
}
]
}
}
Edit Document
Edits an existing document
Parameters:
id
: Document IDcontent
: Updated content
List Documents
Lists documents of a specific type
Parameters:
type
: Document typelimit
: Maximum number of documents to return (default: 10)
Get Schema
Gets a schema template based on an existing document
Note: For best results, manually create at least one document of each type before using this tool.
Parameters:
type
: Document type
Example Usage
- Create a new blog post:
{
"tool": "create-document",
"arguments": {
"type": "post",
"content": {
"title": "My First Post",
"slug": "my-first-post",
"body": [
{
"_type": "block",
"children": [
{
"_type": "span",
"text": "This is my first post!"
}
]
}
]
}
}
}
- Edit an existing post:
{
"tool": "edit-document",
"arguments": {
"id": "post-id-123",
"content": {
"title": "Updated Title"
}
}
}
- List recent posts:
{
"tool": "list-documents",
"arguments": {
"type": "post",
"limit": 5
}
}
- Get schema for posts:
{
"tool": "get-schema",
"arguments": {
"type": "post"
}
}