MCP Server
Use the MCP server when an AI client should read or edit Contismo content. Websites and apps should keep using the GraphQL API.
Turn the server on and choose which models, drafts, and writes are allowed in Settings → MCP. See MCP.
Endpoint
Section titled “Endpoint”The server speaks Streamable HTTP. Clients connect to:
https://mcp.contismo.comAuthentication
Section titled “Authentication”The MCP server supports both OAuth 2.1 (RFC 9728 / RFC 8414 with PKCE S256 and Dynamic Client Registration) and MCP API keys. GraphQL keys are rejected.
OAuth 2.1 Discovery & Endpoints
Section titled “OAuth 2.1 Discovery & Endpoints”When an unauthenticated MCP client connects to https://mcp.contismo.com, the server responds with 401 Unauthorized and a WWW-Authenticate header pointing to the Protected Resource Metadata endpoint.
| Endpoint | URL |
|---|---|
| Protected Resource Metadata (RFC 9728) | https://mcp.contismo.com/.well-known/oauth-protected-resource |
| Authorization Server Metadata (RFC 8414) | https://mcp.contismo.com/.well-known/oauth-authorization-server |
| Dynamic Client Registration (RFC 7591) | https://mcp.contismo.com/oauth/register |
| Authorization Endpoint | https://mcp.contismo.com/oauth/authorize |
| Token Endpoint | https://mcp.contismo.com/oauth/token |
| Token Revocation (RFC 7009) | https://mcp.contismo.com/oauth/revoke |
Supported OAuth scopes:
mcp:read: Read-only access (MCP - Read Only)mcp:write: Read and write access (MCP - Read/Write)
When an authorization code is exchanged at /oauth/token, Contismo automatically creates a standard MCP API key named after the client in the authorized workspace. Editing or revoking that key in Settings → API Keys takes effect immediately on all subsequent OAuth requests and token refreshes.
Manual API Key Authentication
Section titled “Manual API Key Authentication”Clients that do not use OAuth can authenticate directly with a project MCP API key:
Authorization: Bearer <your-mcp-api-key>X-Environment: <environment-api-id>X-Environment is optional when a default environment is saved in the Studio (or falls back to master).
| Key | Prefix | Access |
|---|---|---|
| MCP - Read Only | mcp_ |
Read tools only |
| MCP - Read/Write | mcpw_ |
Read tools, plus write tools when Allow Writes is on |
A disabled server returns 403. Requests count toward the project’s monthly API call quota, the same limit as GraphQL.
Read tools
Section titled “Read tools”Call get_content_model first and use each field’s apiId in later tools. Only models selected in Studio are visible. An empty model list means every content model.
| Tool | What it returns |
|---|---|
list_content_models |
Models the server is allowed to expose |
get_content_model |
Fields and taxonomy assignments for one model |
list_entries |
Entries for a model, with limit, offset, locale, status, and filters |
get_entry |
One entry by model API ID and entry ID. Singletons do not need an ID |
list_locales |
Locales for the current environment |
list_taxonomies |
Taxonomies in the current environment |
list_taxonomy_terms |
Terms for one taxonomy |
get_ui_translations |
UI translation strings for a locale |
Read tools default to published entries. A status of DRAFT, IN_REVIEW, or SCHEDULED is accepted only when Allow Drafts is on, or when the key can write.
Asset fields on an entry include metadata and the delivery URL. The server does not upload files.
Write tools
Section titled “Write tools”Write tools are registered only for a read-write key when Allow Writes is on. They do not change models, components, or fields.
| Tool | What it does |
|---|---|
create_entry |
Create an entry. input keys are field API IDs |
update_entry |
Update an entry, including status and schedule |
delete_entry |
Delete an entry by model API ID and entry ID |
Status values match GraphQL: DRAFT, IN_REVIEW, PUBLISHED, and SCHEDULED. create_entry and update_entry also accept scheduledPublishAt and scheduledUnpublishAt as ISO datetime strings, plus locale and taxonomy assignments.
Resources
Section titled “Resources”Resources mirror the read tools for clients that prefer URIs:
contismo://modelscontismo://model/{apiId}contismo://entry/{modelApiId}/{id}
Connect Cursor
Section titled “Connect Cursor”Copy the snippet from Settings → MCP, or use this shape. Replace the key and environment.
{ "mcpServers": { "contismo": { "url": "https://mcp.contismo.com", "headers": { "Authorization": "Bearer YOUR_MCP_API_KEY", "X-Environment": "master" } } }}