Sanity
Hosted structured-content backend with an open-source Studio and an official remote MCP server.
Sanity pairs a hosted content store (Content Lake, GROQ queries) with Sanity Studio, an MIT-licensed React editing app you configure in code. The Builder runs an MCP server at mcp.sanity.io that lets an agent query, create, patch, publish, and release documents and deploy schema. Adapting means editing the Studio config and schema; the backend itself is closed.
Alternative to Contentful
- I want a structured content backend my agent can write to and my site reads from, without running a database
- I need editors to have a real CMS UI while my agent bulk-creates and publishes content
- The pricing page lists the MCP server under Enterprise only, while the MCP docs show any project configuring it with npx sanity mcp configure; confirm before relying on it on the Free plan
- Content Lake is hosted and closed; only the Studio is open source
- generate_image, transform_image, and AI-assisted versions consume AI credits (1,000 per month on Free)
- The repo's .env.example is for end-to-end tests, not for adapting the Studio
- Free plan: 10,000 documents, 250k API requests per month, public datasets only
Last activity Sep 3, 2026. Fit: adaptable 2, operable 2.
Editions
Free · Free open source
- Clone
git clone https://github.com/sanity-io/sanity - Install
npm create sanity@latest - HostedOpen the hosted app
Growth · $15 per month closed source
- HostedOpen the hosted app
Enterprise · Free closed source
No distribution recorded.
Adaptable: what is yours to change
Make it yours
Light edit5 things to edit
The Studio is yours: sanity.config.ts sets project, dataset, plugins, structure, and theming; schemaTypes/ defines document types in TypeScript. Project ID and dataset come from SANITY_STUDIO_ prefixed env vars. Adapting means writing schema code, so this is a light edit rather than pure config. The content backend cannot be self-hosted.
- Env vars
SANITY_STUDIO_PROJECT_IDSANITY_STUDIO_DATASET- Config files
sanity.config.tssanity.cli.tsschemaTypes/- Prompt files
- none
- Accounts you need
- Sanity
Source
- github.com/sanity-io/sanity
- MIT license
- Last commit Sep 3, 2026
- 6,309 stars
Operable: what an agent can drive
Interface
OfficialMCP serverpublished by the builderremote
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
- Docs
- mcp.sanity.io
- Tools
GROQ querycreate/patch/publish documentrelease managementschema deploystudio deploygenerate_imagetransform_imagesemantic search
Reach
Partial coverage. 7 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Query content with GROQ | Reachable | MCP docs: GROQ query execution and document retrieval |
| Create, patch, publish, and unpublish documents | Reachable | MCP docs: document creation, patching, publishing, unpublishing |
| Stage changes as content releases | Reachable | MCP docs: release management (create, list, publish, discard) |
| Deploy schema changes | Reachable | MCP docs: schema deployment and management |
| Deploy the Studio | Reachable | MCP docs: Studio deployment |
| Manage datasets, projects, and CORS | Reachable | MCP docs: dataset and project management, CORS origin configuration |
| Generate and transform images | Reachable | MCP docs: generate_image, transform_image; consume AI credits |
| Customize the Studio UI and structure | Not reachable | sanity.config.ts is code shipped with the Studio, not an MCP operation |
| Real-time collaborative editing and presence | Not reachable | Studio feature; no MCP tool |
| Comments and tasks on documents | Not reachable | not in MCP tool list; also gated to Growth and Enterprise per pricing page |
Code stack
- Languages
- TypeScript
- Frameworks
- ReactVite
- Package manager
- pnpm
- Database
- Sanity Content Lake (hosted)
- Hosting target
- sanity.studio hostingany static host
- Built
- Human-written (recorded, never ranked)
Model stack
- Providers
- Sanity AI credits (image generation, AI-assisted versions)
- Models
- none
- Keys you need
- none
- Prompts live in
- none
Skills
Repo tooling for Sanity contributors: code review, simplification, performance, Playwright practices.
- Kind
- contributor
- Paths
.agents/skills/*/SKILL.md
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: Studio is an open-source single-page application; content hosted in Content Lake | 85% |
| executionModel | Studio and API are deterministic; AI tools are optional and metered | 80% |
| operability | sanity.io/docs/compute-and-ai/mcp-server documents mcp.sanity.io with OAuth or token auth, published by Sanity | 90% |
| effort | README: 'complete studio customization framework'; sanity.config.ts is the documented entry point | 80% |
| editions | sanity.io/pricing: Free $0, Growth $15 per seat per month, Enterprise custom; Studio MIT on GitHub | 80% |
| active | pushedAt 2026-09-03 | – |
| provenance | company-built product since 2017; no vibe-coded claim | 90% |
| reach | 85% |
Open questions
- Is the MCP server usable on the Free plan? Pricing page says Enterprise only; docs imply otherwise. Operable fit is 2 until resolved, 3 if free
- Confirm the SANITY_STUDIO_ env var names from the Studio environment docs
Sources
- github.com/sanity-io/sanity sourcing:content-publishing:registries
- www.sanity.io/docs/compute-and-ai/mcp-server analysis:content-publishing
- www.sanity.io/pricing analysis:content-publishing