<!-- release-blog: covers 383f32ff, bcfea9ee, cc9385fb -->
Docapybara now speaks MCP. If you use Claude Code, Claude Desktop, or Cursor, you can connect Docapybara as a server and your AI tool can list, read, create, update, and delete pages in your Docapybara vault. Same vault, same content, just accessible from outside the app.
This is the change a lot of Claude Code users have been asking for. If you live inside Claude Code and you keep your notes in Docapybara, the gap was real — your repo on one side, your notes on the other, and the agent couldn't reach across.
What MCP is, in one sentence
MCP (Model Context Protocol) is a standard for letting AI tools talk to apps. Claude Code, Claude Desktop, and Cursor all speak it. Docapybara now speaks it back.
What you can do with it
Five tools, each scoped to your own vault:
list_pages — get a list of every page in your vault
get_page — fetch the markdown for a specific page
create_page — make a new page in a section
update_page — rewrite an existing page
delete_page — remove a page
Per-user means exactly that: your token sees your vault, nothing else. Two Docapybara users connecting from the same Claude Code instance get two separate, isolated views. Every query is filtered through workspace.user, the same way the app does.
What this looks like in practice
A concrete example. You're in Claude Code on a project, and you say: "Summarize the last three product calls and add a status page to my vault."
Claude Code uses MCP to list pages in your vault, finds the recordings section, fetches the markdown of the relevant transcripts, drafts a status summary, and calls create_page to drop a new page into your "Status" section. You review the draft in Docapybara on the same screen.
That's the shape of every workflow it enables: read context from the vault, do work in your AI tool of choice, write the result back to the vault. Your vault becomes addressable from anywhere your AI tool runs.
You can also go the other direction. From Claude Code, dump a code-review summary into a vault page so you can find it later. From Cursor, save the design doc you're iterating on as a Docapybara page so it survives across sessions. Whatever your AI tool can do, it can now do to your vault.
What's locked off (intentionally)
Audio recordings and inline databases are not exposed via MCP. The reason is straightforward: the update_page tool writes raw markdown, and a transcript or a database row isn't safe to overwrite that way without corruption. We'd rather the MCP surface be narrow and trustworthy than broad and prone to silent damage.
Pages are markdown end-to-end, and writes are safe. Recordings are a transcript plus summary plus audio file with metadata — overwriting any of that with raw markdown loses information. Databases are typed cells — overwriting a column-typed value as a markdown blob is a quiet data loss, not an edit. So update_page doesn't see them. They're still fully usable in the app; they're just not on the MCP surface yet.
The right MCP surface for those objects is different — search_recordings, get_transcript, query_database, add_row — and we'd rather wait and ship that surface deliberately than expose a generic update that silently destroys typed data.
Try it
If you want to wire it up, you'll need a token. Run this against your account (we're working on a UI for it; for now it's a one-line management command we run for you — drop us a note and we'll issue one):
python manage.py drf_create_token <your_username>
Then point Claude Code (or Claude Desktop, or Cursor) at:
https://docapybara.com/mcp
with Authorization: Token <your_token> as the header. Your AI tool now sees your vault as five callable tools.
The token-issuing flow will land inside the app shortly so you don't have to ask us.
What else got machine-friendly this week
The MCP server was the headline change. A few smaller things landed alongside it that are worth a paragraph each.
Blog posts now serve as raw markdown. Send Accept: text/markdown to any blog URL — say, https://docapybara.com/blog/this-post/ — and you'll get the original .md file back. Or just append .md to the URL. AI agents that need clean text grab the source instead of stripping HTML. Every blog page also exposes a <link rel="alternate" type="text/markdown"> pointing at its .md mirror so crawlers find it without you having to ask.
robots.txt now uses Cloudflare Content Signals. We're explicit: search and AI input are fine; AI training without permission is not. (Content-Signal: search=yes, ai-input=yes, ai-train=no.) The Anthropic, OpenAI, Perplexity, and Google AI bots are listed by name — if they crawl us, we know what they're allowed to do.
/.well-known/api-catalog (RFC 9727) and /.well-known/skills/default/skill.md (Agent Skills v1.0). Both are standard discovery endpoints. If an agent goes looking for what docapybara.com exposes, it doesn't have to guess.
What's coming, and what isn't
Coming: a token-issuing UI inside Docapybara, more MCP tools (search across the vault, work with recordings the right way), and a hosted MCP Server Card once that spec stops being a draft.
Not coming: a self-hostable Docapybara MCP server, an open-source build, or a multi-user shared MCP endpoint. Single-user remains the shape — the server is a hosted endpoint, like the rest of Docapybara. If that's the wrong shape for you, Obsidian's MCP plugin ecosystem is built for the local-vault case.
Where to start
If you want a deeper look at why we built Docapybara to live next to Claude Code instead of compete with it, Claude Code for documents is the longer read. If you're in Cursor instead, the same MCP endpoint works.
Otherwise: get the token, point your tool at /mcp, and try list_pages. The first call should round-trip in a second.