AI MCP 接入指南
从理解,到动手实现。步骤、协议与可复制的示例,都在这份文档中。
1. 客户端配置
MCP 客户端只需要服务地址,不需要部署 UniDoc 源码:
{
"mcpServers": {
"unidoc": {
"url": "https://app.unidoc.top/mcp",
"oauth": {
"authorizationServer": "https://app.unidoc.top/.well-known/oauth-authorization-server",
"scopes": ["mcp:read", "mcp:write"]
}
}
}
}支持 OAuth 动态注册的客户端直接按发现文档完成注册、S256 PKCE、UniDoc 登录和授权确认。
客户端实现固定回调时,可由部署者设置 UNIDOC_MCP_REDIRECT_URIS(JSON 字符串数组),例如:
UNIDOC_MCP_REDIRECT_URIS=["https://ai.example.test/oauth/callback"]不要把真实 token、会话 Cookie 或生产密钥写入配置文件、仓库、日志或提示词。
2. 推荐调用顺序
initializetools/listunidoc_open_document(传入已获取的 UDoc JSON)unidoc_list_blocks/unidoc_list_comments- 读取目标段落和当前
revision - 执行一个带
expectedRevision与稳定requestId的写操作 - 冲突时重新读取,不要盲目覆盖
- 需要下载时调用
unidoc_export_udoc
若任务是“把这份 HTML 发布成网站”,直接使用下面的网站发布流程,无需先调用unidoc_open_document。
示例:
{
"jsonrpc": "2.0",
"id": 10,
"method": "tools/call",
"params": {
"name": "unidoc_create_comment",
"arguments": {
"documentId": "doc_…",
"paraId": 42,
"start": 12,
"end": 25,
"text": "请补充这一段的来源。",
"author": "AI 审阅",
"expectedRevision": 3,
"requestId": "review-20260912-42-1"
}
}
}3. AI 直接发布 HTML 网站
网站发布使用独立授权范围。客户端配置示例:
{
"mcpServers": {
"unidoc": {
"url": "https://app.unidoc.top/mcp",
"oauth": {
"authorizationServer": "https://app.unidoc.top/.well-known/oauth-authorization-server",
"scopes": ["mcp:read", "mcp:publish"]
}
}
}
}旧 mcp:read / mcp:write 授权不包含网站发布。客户端应完成包含 mcp:publish 的授权,
然后读取 tools/list,确认服务器提供 unidoc_publish_website。这是补充发布权限;已有
UniDoc 登录会话有效时无需重新登录。单独的浏览器 Cookie 也不会被提升为发布授权。
{
"jsonrpc": "2.0",
"id": 20,
"method": "tools/call",
"params": {
"name": "unidoc_publish_website",
"arguments": {
"html": "<!doctype html><meta charset=\"utf-8\"><title>实验课堂</title><h1>实验课堂</h1><button onclick=\"this.textContent='已开始'\">开始</button>",
"title": "实验课堂",
"requestId": "classroom-page-20260916-v1"
}
}
}这是立即公开发布操作。服务端为显式提交内容保存账户归属的 .udoc 来源,再返回独立
公网 URL;AI 不需要浏览器 Cookie、OmniDoc 上传签名或服务器 SSH 权限。网络超时后以
同一个 requestId 和原参数重试;修改内容应使用新 ID,不要用随机 ID 重放同一次发布。
baseUrl 可选,仅用于解析资源相对地址,不抓取网页。本地相邻文件需内联或改为可公开
访问的 HTTPS 地址;前端工程应提交构建产物中的 HTML,后端服务和原网站的登录状态
不会随 HTML 迁移。取得 URL 后实际打开页面,检查按钮和资源加载,再向用户报告完成。
发布结果包含 siteId、url、status:"published"、contentSha256、bytes、createdAt、replayed 及 source:{"kind":"udoc","persisted":true}。
后续使用 unidoc_get_website({"siteId":"…"}) 查询发布信息,使用unidoc_export_website({"siteId":"…"}) 取回来源 .udoc。这两个工具校验账户归属。
导出结果的 fileName、mimeType、base64 描述原生文件;将 base64 解码后保存为返回的.udoc 文件名。完整说明与重试规则见 AI 网页发布说明。
4. 与编辑器、iframe 和 WASM 的关系
MCP 是可选的 AI 控制平面:它不参与编辑器启动,不改变页面排版,也不取代 iframe 整档
桥。iframe 适合宿主加载/读取整份 HTML 或 UDoc;MCP 适合 AI 按 para_id、批注 ID 和
revision 做局部读写。WASM 离线兜底仍只加载通用编译器,不包含 MCP token、Rust 后端源码
或账号数据。
当前 unidoc_open_document 的会话是进程内隔离会话,完成一次转换或审阅后可导出 UDoc;
如果需要把写入绑定到云文稿,应由宿主先完成账号授权和文稿存取,再把最新 UDoc 交给 MCP,
或在后续版本接入同一账号授权的持久存储。网站发布工具使用独立的持久来源与发布收据,
不会依赖这个进程内文稿会话存活。