Docs MCP server
Every public docs site exposes its own read-only MCP server at <site URL>/mcp. An AI agent connected to it can search your docs, read a page as Markdown and list every page, which is how your customers' coding agents answer questions about your product from your real documentation.
This is a different server from the one in MCP server. That one is for your own team: it takes an API key and works on your Jotly workspace. This one is public, takes no key and only reads published docs.
The server URL
Add /mcp to the address of the site. It works on every way a site can be published:
| Site | MCP server |
|---|---|
| Jotly address | https://jotly.si/b/acme/docs/mcp |
| Custom domain | https://help.acme.com/docs/mcp |
| Subdirectory | https://acme.com/docs/mcp |
Opening the URL in a browser shows a short page that explains how to connect. A request for JSON returns the URL, the tools and the connect links.
Connect a client
No key or header is needed. Replace the URL with your site's.
In Claude Code, run:
claude mcp add --transport http acme-docs https://acme.com/docs/mcpIn Claude Desktop, open Settings, then Connectors, press Add custom connector and paste the URL.
In Cursor, add the server to .cursor/mcp.json:
{ "mcpServers": { "acme-docs": { "url": "https://acme.com/docs/mcp" } }}In VS Code, add it to .vscode/mcp.json:
{ "servers": { "acme-docs": { "type": "http", "url": "https://acme.com/docs/mcp" } }}Your readers do not have to copy any of this. If you add MCP to Design, Configure, Page actions, the page menu shows Copy MCP server URL, Connect to Cursor, Connect to VS Code and Connect to Claude (which copies the Claude Code command).
Tools
| Tool | What it does |
|---|---|
search_docs | Searches the site. Takes query (up to 200 characters) and limit (1 to 10, default 5). Returns the title, section, path, absolute URL and a snippet of each match. |
get_page | Returns a page as Markdown, with its title and URL. Takes the path (/guides/webhooks), the same path with .md or an #anchor, or the full URL. |
list_pages | Returns every page, grouped by section. It is the same index as llms.txt. |
When a client connects, the server sends the name of the site and instructions that explain what the site documents and when to use each tool.
Test it by hand:
curl -s -X POST "https://acme.com/docs/mcp" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'What it can see
The server always reads as an anonymous visitor. It never uses a cookie, a dashboard session, a widget token or a share link, not even for your own team.
- It serves a site only when the site is public, published and the MCP server switch is on.
- It exposes the same pages as
llms.txt: published, in the menu and without a “Visible to” rule. Conditional blocks come out as their public version. - Private, share-link, authenticated, unpublished and switched-off sites all answer with the same 404, so the response never reveals that a site exists.
Limits: 60 requests per minute per network, 600 per minute per site, batches of up to 10 messages and bodies up to 64 KB. Streaming (SSE) is not supported.
Turn it on or off
In Docs, Settings, AI & MCP, the “For agents” section has the MCP server switch (on by default), the URL with a copy button and ready-made snippets for Claude Code, Claude Desktop, Cursor and VS Code.
See also API and MCP