Jamdesk Documentation logo

MCP 服务器

每个 Jamdesk 站点都内置 MCP 服务器。Claude、Cursor 等 AI 助手可直接搜索和读取您的文档。

每个 Jamdesk 站点都内置了 MCP(Model Context Protocol,模型上下文协议)服务器。llms.txt 为 AI 工具提供文档的静态快照,而 MCP 允许它们搜索和查询文档,从而无需通读全部内容即可找到具体答案。

什么是 MCP?

Model Context Protocol 是一种用于将 AI 工具连接到外部数据源的开放标准。您的 Jamdesk 文档提供两个 MCP 工具:

工具用途
searchDocs按关键词搜索文档,返回排序后的结果
getPage以完整 Markdown 格式获取页面

端点 URL

您的 MCP 端点是文档 URL 加上 /_mcp。如果您已启用自定义域名,请使用该域名:

设置端点
自定义域名 docs.acme.comhttps://docs.acme.com/_mcp
无自定义域名https://my-project.jamdesk.app/_mcp

连接了自定义域名时,请使用该域名的端点。这样 AI 工具看到的每个 URL 都会保留您的品牌标识。如果您之后通过仅自定义域名隐藏 .jamdesk.app 子域名,该端点也仍可正常使用。

快速设置

将您的文档添加为 MCP 服务器:

claude mcp add --transport http my-docs https://docs.acme.com/_mcp

将 docs.acme.com 替换为您的文档域名。如果尚未连接自定义域名,请使用 my-project.jamdesk.app。

当您询问项目相关问题时,Claude 现在可以搜索并读取您的文档。

可用工具

searchDocs

搜索您的文档并获取排序后的结果。

参数:

参数类型必填说明
querystring是搜索词(例如 "authentication"、"getting started")
limitnumber否最大结果数(默认:10,最大:50)
typestring否按内容类型筛选:all、api、guide、quickstart、help、component

请求示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "searchDocs",
    "arguments": {
      "query": "authentication",
      "limit": 5
    }
  }
}

响应示例:

{
  "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

以 Markdown 格式获取文档页面。表格、列表和代码块会完整返回,而非简短摘录。将 searchDocs 返回的 url 作为 url 传入,或将页面路径作为 slug 传入。超过 80,000 个字符的页面会在该长度处被截断,并附带指向该页面 .md URL 的链接以获取其余内容。

参数:

参数类型必填说明
urlstringurl 或 slug 二选一searchDocs 结果中的 url(例如 /docs/api/authentication)。完整页面 URL 和 .md 链接同样有效。
slugstringurl 或 slug 二选一不含 /docs 前缀的页面路径(例如 api/authentication)

只需发送其中一个。如果同时发送两者,将使用 slug。

请求示例:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "getPage",
    "arguments": {
      "url": "/docs/api/authentication"
    }
  }
}

响应示例:

{
  "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\"}"
    }]
  }
}

测试端点

使用 curl 测试您的 MCP 端点:

# List available tools
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Search for content
curl -X POST https://docs.acme.com/_mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"searchDocs","arguments":{"query":"getting started"}}}'

受登录保护的网站

如果您的站点使用密码或 JWT 身份验证,MCP 服务器需要项目 API 密钥。请在 Project Settings > API Keys 中创建密钥,并将其作为请求头发送:

claude mcp add --transport http my-docs https://docs.example.com/_mcp \
  --header "Authorization: Bearer jd_live_..."

密钥允许 MCP 客户端搜索和读取站点中可搜索的页面,即站点搜索所覆盖的同一批页面。受分组限制的页面无论是否有密钥都无法通过 MCP 访问。隐藏页面和设置了 search: false 的页面不会被包含,除非您已将其设为可搜索。请像对待密码一样保管该密钥;如果泄露,请在控制面板中撤销。

同一密钥也可用于打开 .md 页面 URL、llms.txt 和 llms-full.txt。参见 llms.txt 和 Markdown 源文件。该密钥无法打开 HTML 页面或 AI 聊天,这些仍需登录。

不提供密钥时,服务器会返回 401 以及一个说明如何添加密钥的 JSON 响应体。来自其他项目的密钥会被拒绝。错误代码如下:

状态码error含义
401auth_required未发送密钥。
401invalid_api_key该密钥对此站点无效。
503auth_unavailable无法验证该密钥。请在 Retry-After 响应头指定的秒数后重试。

工作原理

MCP 端点使用与文档一同构建的搜索索引:

  • **BM25 排序:**按相关性对结果排序
  • **模糊匹配:**容忍 1 个字符的拼写错误
  • **字段加权:**标题和章节标题比正文权重更高
  • **类型筛选:**按内容类型(API、指南等)筛选结果

每次部署时都会重建索引。

速率限制

未使用 API 密钥的请求,每个 IP 地址限制约为每分钟 60 次。这对于一个人的 AI 助手来说已经足够。同一共享 IP 后的所有用户(例如办公网络或您自己的后端)共用这一配额。

携带项目 API 密钥的请求不受按 IP 的限制,而是按密钥享有每分钟 120 次的配额,适用于任何站点。请按照需要登录的站点的方式,将密钥添加到您的 MCP 客户端配置中。

在需要登录的站点上,使用密钥发出的 .md 页面请求,以及 llms.txt 或 llms-full.txt 请求,也会计入该密钥的配额。Search API 拥有独立的限制,即每个密钥每分钟 60 次。

超出限制的请求会收到 429 响应,并附带 Retry-After: 60。

故障排除

验证端点 URL 是否正确且可访问:

curl https://docs.acme.com/_mcp

您应当看到包含服务器信息的 JSON 响应。如果没有,请检查您的文档是否至少构建过一次。

Jamdesk 在构建时生成搜索索引。请从 Jamdesk 控制面板触发重新构建,以索引新内容。

请传入 searchDocs 结果中的 url,以避免 slug 不匹配。如果您传入 slug,请确保它与页面路径完全一致,且不含 .mdx 扩展名。位于 api/authentication.mdx 的页面,其 slug 为 api/authentication。

该站点使用密码或 JWT 身份验证,请求需要项目 API 密钥。请在请求中添加 Authorization: Bearer 请求头,并使用来自 Project Settings > API Keys 的密钥。参见需要登录的站点。

接下来

使用 AI 编写

使用 AI 工具编写文档的技巧

llms.txt

为 AI 工具自动生成的页面索引