Draftbase exposes full template, entry, and media control as MCP tools — mirrors the REST API 1:1, so any MCP-capable client (Claude Code, Claude Desktop, etc.) can manage content directly.
https://staging-mcp.draftbase.co/mcphttps://staging-api.draftbase.cohttps://mcp.draftbase.co/mcphttps://api.draftbase.coThe server validates a Bearer JWT (aud: "mcp", sub = userId, orgId claim). Tokens are issued via standard OAuth 2.1 + PKCE with dynamic client registration. Discovery: GET <API_URL>/.well-known/oauth-authorization-server
claude mcp add --transport http draftbase-staging https://staging-mcp.draftbase.co/mcp # prod: claude mcp add --transport http draftbase-prod https://mcp.draftbase.co/mcp
Then run /mcp in Claude Code — opens a browser to log in, completes OAuth, and stores the token. Run /mcp again to check connection status.
Point the client at the MCP endpoint (<MCP_URL>/mcp) with transport: http. The client must support the OAuth 2.1 + PKCE discovery flow (dynamic client registration, no client secret). Without an OAuth-capable client, drive /oauth/register → /oauth/authorize → /oauth/token by hand against the API URL and set the resulting access_token as the Bearer token.
19 tools across 3 groups, matching the templates / entries / media REST routes.
list_templatesList all templates defined for the current orgget_templateGet a single template by id, including its full field schemacreate_templateCreate a template schema in one call — define all fields up front rather than creating then patchingupdate_templateUpdate a template's name and/or fields (partial update — omit unchanged fields)delete_templateDelete a template. Fails if entries still reference it — delete those firstlist_entriesList entries, optionally filtered by template or locale. Returns MDX with reference/media fields resolved inlinecreate_entryCreate a new content entryupdate_entryUpdate an existing content entryget_entryGet a single entry by id. Returns MDX with reference/media fields resolved inlinedelete_entryDelete an entry permanentlyset_entry_statusChange an entry's status (draft, updated, published, archived) — publishing requires all required fields to be setlist_entry_revisionsList an entry's revision history, newest firstrollback_entryRestore an entry's fields to a prior revision versionlist_mediaList uploaded media assets, optionally filtered by statusget_upload_urlGet a presigned S3 URL to upload a media asset. After uploading, call confirm_media with the returned s3Key to register itconfirm_mediaRegister an uploaded media asset after it's been PUT to the presigned URL from get_upload_urlreplace_mediaSwap an existing media asset's image (e.g. after re-cropping). Upload the new file to a presigned URL from get_upload_url first, then call this with the returned s3Key. Re-runs the resize pipelineset_media_tagsReplace a media asset's tags with the given listdelete_mediaDelete a media asset and its underlying S3 object