Docs MCP Server

Docs MCP Server

Captures selected web content as HTML snapshots with preserved DOM and inline styles, enabling AI agents to read and understand document content via MCP.

Category
Visit Server

README

Docs MCP Server

将网页选中区域以 HTML 快照方式捕获,保留渲染后的 DOM 结构与内联样式,并通过 MCP 服务供 AI 智能体读取。

演示

使用 — 选中并捕获

在飞书文档中拖选内容(含代码块),点击 Chrome 扩展一键捕获为 HTML 快照。

选中飞书文档内容并捕获

效果 — 智能体精准读取

将 content id 粘贴给 Cursor / Claude,智能体通过 MCP 读取完整快照并理解文档内容。

AI 智能体通过 MCP 读取快照

方案调研结论:可行

能力 可行性 说明
保留 DOM 结构 ✅ 完全可行 克隆选区 DOM 树,独立 HTML 文件可离线打开
内联样式 ✅ 完全可行 将 getComputedStyle() 转为 inline style,还原视觉布局
代码块 ✅ 可行 飞书代码块是 DOM 渲染,样式可内联保留
SVG 流程图 ✅ 可行 直接序列化 SVG 节点
Canvas 图表 ✅ 可行 扩展端栅格化为 data URL 传输,服务端保存为 PNG 文件
图片 ✅ 可行 扩展保留原始 URL;服务端下载并保存为 assets/ 文件,HTML 引用本地链接
Web 字体 ⚠️ 部分可行 离线打开可能 fallback 到系统字体,不影响文字内容
iframe 嵌入内容 ❌ 不可行 跨文档内容无法捕获
Shadow DOM ⚠️ 有限 开放 shadow root 可遍历,closed shadow 无法访问

结论:对于飞书文档这类 DOM 渲染的富文本(标题、段落、代码块、图片、SVG 流程图),HTML 快照方案比纯文本提取更可靠,推荐采用。

架构

选中区域 → clone DOM + 内联 computed styles
         → HTML + 图片 URL(blob/canvas 临时 data URL 传输)
         → 服务端 externalize:data URL / 远程图片 → data/snapshots/{id}/assets/*
         → data/snapshots/{id}/index.html
         → MCP Resource: docs://snapshot/{id}

快速开始

cd docs-mcp-server
npm install
npm run build
npm run server          # HTTP API :3847
# MCP 由 Cursor 通过 stdio 启动

Chrome 扩展

  1. chrome://extensions/ → 开发者模式 → 加载 extension/ 目录
  2. 在页面先选中内容,再打开弹窗点击「捕获当前选区」
  3. 或使用右键 → Capture selection to MCP

Cursor MCP 配置

{
  "mcpServers": {
    "docs-mcp-server": {
      "command": "node",
      "args": ["/Users/bryan.ren/faco/office/docs-mcp-server/dist/server/mcp.js"],
      "env": {
        "DOCS_MCP_DATA_DIR": "/Users/bryan.ren/faco/office/docs-mcp-server/data"
      }
    }
  }
}

重要:HTTP 服务与 MCP 必须指向同一 data/ 目录。在 MCP 配置的 env.DOCS_MCP_DATA_DIR 中填写绝对路径后,智能体可通过 Read 工具直接读取 {DOCS_MCP_DATA_DIR}/snapshots/{id}/ 下的 HTML 与图片,无需走 HTTP。

MCP 能力

类型 名称 说明
Resource docs://index 文档索引(含本地文件路径)
Resource docs://document/{id} 元数据 + 文本预览 + 本地路径
Resource docs://snapshot/{id} 完整 HTML 快照
Resource docs://snapshot/{id}/paths 本地文件绝对路径
Tool list_documents 列出所有快照(含 localPaths)
Tool get_snapshot_paths 获取 HTML / 图片目录绝对路径
Tool get_snapshot_html 获取完整 HTML 内容
Tool get_document 获取元数据
Tool search_documents 关键词搜索

智能体推荐用法

扩展「复制 ID」或粘贴以下内容给 Cursor / Claude:

docs-mcp-server content id: 052cb4c2-401e-4c1b-b816-a085ae567b98

请优先用 Read 直接读取本地文件(路径由 MCP 配置 env.DOCS_MCP_DATA_DIR 决定;必须阅读快照的 assets 目录里资源):
- 数据目录: /Users/you/docs-mcp-server/data
- HTML: /Users/you/docs-mcp-server/data/snapshots/052cb4c2-.../index.html
- 图片目录: /Users/you/docs-mcp-server/data/snapshots/052cb4c2-.../assets/
- 图片文件 (3):
  - /Users/you/docs-mcp-server/data/snapshots/052cb4c2-.../assets/img-001-abc.png
  ...

或通过 MCP 读取完整 HTML:
- Resource: docs://snapshot/052cb4c2-401e-4c1b-b816-a085ae567b98
- Tool: get_snapshot_html({ "id": "052cb4c2-401e-4c1b-b816-a085ae567b98" })

浏览器预览: http://127.0.0.1:3847/api/snapshots/052cb4c2-401e-4c1b-b816-a085ae567b98.html

说明:

  • 本地文件 / Read — 在 MCP 配置中设置 DOCS_MCP_DATA_DIR 绝对路径后,复制内容会包含 HTML 与图片的本地路径,智能体可直接 Read
  • MCP Resource / Tool — 也可通过 MCP 读取 HTML,或用 get_snapshot_paths / docs://snapshot/{id}/paths 获取路径
  • 浏览器预览 — 本地 HTTP 服务运行时人工打开查看

捕获内容说明

每次捕获生成 HTML + 图片资源目录:

  • 选区 DOM 完整克隆
  • 所有可见样式内联化(getComputedStyle → style="")
  • 图片:扩展端保留 https:// 原始链接;服务端尝试下载并保存为独立文件,HTML 中 src 指向 /api/snapshots/{id}/assets/...;下载失败则保持原链接(data-original-src 备份)
  • blob / Canvas:扩展端临时转为 data URL 传输,服务端落盘为 PNG 等资源文件
  • SVG:保留原始 markup
  • 移除 script / 事件处理器

目录结构:

data/snapshots/{id}/
├── index.html          # 快照 HTML(图片引用本地 asset URL)
└── assets/
    ├── img-000-a1b2c3d4.png
    └── img-001-e5f6g7h8.webp

预览:

http://127.0.0.1:3847/api/snapshots/{id}.html
http://127.0.0.1:3847/api/snapshots/{id}/assets/img-000-xxxx.png

旧版单文件 {id}.html 仍可正常读取;新捕获均使用目录结构。

HTTP API

Method Path 说明
GET /api/health 健康检查
POST /api/documents 上传 HTML 快照
GET /api/documents 列出文档
GET /api/documents/:id 文档元数据
GET /api/snapshots/:id.html 下载 HTML 快照
GET /api/snapshots/:id/assets/:filename 快照图片资源
DELETE /api/documents/:id 删除文档及快照

开发

npm run dev:server
npm run dev:mcp
npm run build

环境变量

变量 默认值 说明
DOCS_MCP_PORT 3847 HTTP API 端口
DOCS_MCP_PUBLIC_URL http://127.0.0.1:3847 写入 HTML 中的图片 asset 绝对 URL 前缀
DOCS_MCP_DATA_DIR {project}/data 数据目录(MCP 配置必填绝对路径),快照存于 {dir}/snapshots/{id}/

产品演示幻灯片

HTML 演示文稿见 ppt/index.html。

cd docs-mcp-server
python3 -m http.server 8765
open http://127.0.0.1:8765/ppt/index.html

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured