Sanity MCP: what works in Claude, ChatGPT, Cursor, and Grok Bot
Official Sanity remote MCP server: query and edit Content Lake documents with GROQ, manage schemas, datasets, releases and assets, and search the Sanity docs.
Registry name: (v) | GitHub 71 stars
Set it up
URL https://mcp.sanity.io. We tested it with an access token sent as an Authorization: Bearer header. The vendor also offers OAuth sign-in, which we did not test. Copy-paste setup: Claude | Claude Code | Cursor | VS Code | ChatGPT
Status grid
| App | Status | Date tested |
|---|---|---|
| Claude | Untested | Not yet tested |
| ChatGPT | Untested | Not yet tested |
| Cursor | Untested | Not yet tested |
| Grok Bot | Untested | Not yet tested |
| MCP Inspector (reference client) | Untested | Not yet tested |
| MCP TypeScript SDK (reference client) | Works | Sat Oct 17 2026 |
Hands-on test results
| App | Task | Result | Time | Detail | Date tested |
|---|---|---|---|---|---|
| MCP TypeScript SDK (reference client) | connect (token) | Works | 779 ms | Connected with a bearer token in 779 ms. | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | list tools | Works | 374 ms | 54 tools: dataset_assets_upload_from_web_chatgpt, dataset_assets_upload_from_url, media_library_upload_from_url, media_assets_upload_from_url, assets_upload_status, media_library_upload_from_file, dataset_assets_upload_from_file, get_schema, list_workspace_schemas, deploy_schema, deploy_studio, create_documen. | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | whoami | Works | 165 ms | whoami: 683 characters returned. "Authenticated Sanity account. When answering account or access questions, report the returned name, email, provider, and MCP authentication " | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | list projects | Works | 214 ms | list_projects: 236 characters returned. "Found 1 project in 1 organization: <projects> <o4umo0jk> <name>cr-test</name> <organizationId>oxoqdlxsn</organizationId> <createdAt>2026-10-" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | list datasets | Works | 234 ms | list_datasets: 161 characters returned. "Here are the datasets: <datasets> <production> <aclMode>public</aclMode> <createdAt>2026-10-17T19:42:23.533Z</createdAt> </production> </dat" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | list workspace schemas | Works | 265 ms | list_workspace_schemas: 687 characters returned. "- Coding agents must inspect the current working directory for Studio files before choosing `deploy_schema`; a missing deployed schema is no" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | GROQ query (first 3 documents) | Works | 204 ms | query_documents: 346 characters returned. "Query executed successfully. Found 3 documents: <documents>{"_id":"_.groups.access-manager","_type":"system.group"}</documents> <documents>{" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | create a draft document (cr-test) | Works | 1547 ms | create_documents: 549 characters returned. "Processed 1 documents: 1 successful, 0 failed The created documents are drafts. Use publish_documents to make them live.: <results> <success" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | patch the draft | Works | 1432 ms | patch_documents: 292 characters returned. "Processed 1 document edits: 1 successful, 0 failed Changes were saved to drafts. Use publish_documents to make them live.: <results> <docume" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | publish it | Works | 1266 ms | publish_documents: 168 characters returned. "Published 1 document: <publishedDocuments> <draftId>drafts.cr-test-1792266338469</draftId> <publishedId>cr-test-1792266338469</publishedId> " | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | query it back (GROQ by id) | Works | 180 ms | query_documents: 210 characters returned. "Query executed successfully. Found 1 document: <documents>{"_id":"cr-test-1792266338469","title":"ConnectorReport MCP test document (patched" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | read the document | Works | 205 ms | get_document: 325 characters returned. "Found document "cr-test-1792266338469": <document> <_createdAt>2026-10-17T19:45:38Z</_createdAt> <_id>cr-test-1792266338469</_id> <_rev>fe0U" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | unpublish it | Works | 1254 ms | unpublish_documents: 244 characters returned. "Unpublished 1 document (moved to drafts). To delete the drafts, use the discard_drafts tool.: <unpublishedDocuments> <publishedId>cr-test-17" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | discard the draft (removes the document) | Works | 1227 ms | discard_drafts: 118 characters returned. "Discarded 1 draft: <discardedDocuments> <versionId>drafts.cr-test-1792266338469</versionId> </discardedDocuments> " | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | docs search ("GROQ projections") | Works | 276 ms | search_docs: 550 characters returned. "Found 2 results: Use the read_docs tool with the returned result URLs to view article contents. Use the read_docs tool with a docs path to f" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | read a docs page | Works | 309 ms | read_docs: about 7 KB returned. "> For AI agents: the complete Sanity documentation index is available at [https://www.sanity.io/docs/llms.txt](https://www.sanity.io/docs/ll" | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | error handling (document that does not exist) | Works | 249 ms | get_document: tool error, 124 characters returned. "Error fetching document: Document "cr-test-does-not-exist-938" was not found. Check the document ID and dataset, then retry." | Oct 17, 2026, 2:45 PM CT |
| MCP TypeScript SDK (reference client) | error handling (invalid GROQ) | Works | 216 ms | query_documents: tool error, 192 characters returned. "Error executing GROQ query: GROQ query parse error: > 1 | *[_type == | ^ unexpected end-of-file, expected expression Tag: sanity.mcp (traceI" | Oct 17, 2026, 2:45 PM CT |
Oct 17, 2026, 2:45 PM CT, MCP TypeScript SDK (reference client): Scripted client using the official MCP TypeScript SDK against https://mcp.sanity.io (Streamable HTTP, protocol 2025-11-25). Signed in with a test-account robot API token (Editor, Bearer token) sent as an Authorization: Bearer header (token auth; we did not test OAuth). Server Sanity v2.41.0. Tasks ran only against a throwaway test account or project: test project and dataset only: whoami, list projects and datasets, workspace schemas, a GROQ query, create a cr-test draft document, patch it, publish it, query and read it back, then unpublish and discard it (the server has no delete tool, so this removes it), docs search and read, plus bad-input checks. 18 of 18 tasks passed.
Automated handshake
No public remote endpoint to check (local or package-only server).
Gotchas
None recorded yet. Gotchas come only from hands-on tests.
FAQ
Does the Sanity MCP server work?
In our hands-on test on Oct 17, 2026, 18 of 18 tasks passed.
What is the Sanity MCP server URL?
https://mcp.sanity.io (Streamable HTTP).
Does the Sanity MCP server need sign-in?
We tested it with an access token sent as an Authorization: Bearer header. The vendor also offers OAuth sign-in, which we did not test.
How do I add the Sanity MCP server to Claude, Cursor, VS Code or ChatGPT?
Follow our copy-paste setup guides: https://connectorreport.com/c/sanity/setup/claude https://connectorreport.com/c/sanity/setup/claude-code https://connectorreport.com/c/sanity/setup/cursor https://connectorreport.com/c/sanity/setup/vscode https://connectorreport.com/c/sanity/setup/chatgpt
Compare with other tested connectors | Connector Weather
Request a hands-on test of Sanity
Get the badge
Maintain Sanity or write about it? Show its live ConnectorReport status in your README or docs.
Markdown (README, docs)
[](https://connectorreport.com/c/sanity?utm_source=badge&utm_medium=embed&utm_campaign=sanity)
HTML
<a href="https://connectorreport.com/c/sanity?utm_source=badge&utm_medium=embed&utm_campaign=sanity"><img src="https://connectorreport.com/badge/sanity.svg" alt="Sanity MCP status on ConnectorReport"/></a>
The badge updates on its own after every retest. How badges work