MCP Server
Every Jamdesk site includes a built-in MCP server. AI assistants like Claude and Cursor can search and read your docs directly.
Every Jamdesk site includes a built-in MCP (Model Context Protocol) server. While llms.txt gives AI tools a static snapshot of your docs, MCP lets them search and query interactively — useful when AI agents need to find specific answers rather than reading everything.
What is MCP?
The Model Context Protocol is an open standard that allows AI tools to access external data sources. Your Jamdesk docs expose two tools via MCP:
| Tool | Purpose |
|---|---|
searchDocs | Search documentation by keyword, returns ranked results |
getPage | Retrieve full content of a specific page |
Quick Setup
Add your docs as an MCP server:
claude mcp add --transport http my-docs https://my-project.jamdesk.app/_mcpReplace my-project with your Jamdesk subdomain.
Now when you ask Claude about your project, it can search and read your documentation directly.
Custom domains work too. If your docs are at docs.example.com, use https://docs.example.com/_mcp as the endpoint.
Available Tools
searchDocs
Search your documentation and get ranked results.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search terms (e.g., "authentication", "getting started") |
limit | number | No | Max results (default: 10, max: 50) |
type | string | No | Filter by content type: all, api, guide, quickstart, help, component |
Example request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "searchDocs",
"arguments": {
"query": "authentication",
"limit": 5
}
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{\"query\":\"authentication\",\"total\":1,\"results\":[{\"title\":\"Authentication\",\"description\":\"How to authenticate API requests\",\"url\":\"/docs/api/authentication\",\"type\":\"api\",\"score\":0.95}]}"
}]
}
}
getPage
Retrieve the full content of a specific documentation page.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Page path without /docs prefix (e.g., api/authentication) |
Example request:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "getPage",
"arguments": {
"slug": "api/authentication"
}
}
}
Example response:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{
"type": "text",
"text": "{\"title\":\"Authentication\",\"description\":\"How to authenticate\",\"content\":\"## Overview\\n\\nUse API keys to authenticate...\",\"url\":\"/docs/api/authentication\"}"
}]
}
}
Testing the Endpoint
You can test your MCP endpoint directly with curl:
# List available tools
curl -X POST https://my-project.jamdesk.app/_mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# Search for content
curl -X POST https://my-project.jamdesk.app/_mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"searchDocs","arguments":{"query":"getting started"}}}'
How It Works
The MCP endpoint uses a search index built alongside your docs:
- BM25 ranking - Ranks results by relevance
- Fuzzy matching - Handles typos (1-character tolerance)
- Field boosting - Titles and section headers are weighted higher than body content
- Type filtering - Filter results by content type (API, guide, etc.)
The index rebuilds with every deploy.
Rate Limits
The MCP endpoint has a rate limit of 60 requests per minute per IP address. This is sufficient for normal AI assistant usage. If you exceed the limit, you'll receive a 429 response.
Troubleshooting
Verify your endpoint URL is correct and accessible:
curl https://my-project.jamdesk.app/_mcpYou should see a JSON response with server info. If not, check that your docs have been built at least once.
The search index is generated at build time. If you recently added content, trigger a rebuild from your Jamdesk dashboard to update the index.
Make sure the slug matches your page path exactly (without the .mdx extension). For example, if your page is at api/authentication.mdx, use api/authentication as the slug.
