MinerU 教程第三弹:零基础用 n8n 调用 MinerU MCP 搭建文档处理自动化系统
1. 为什么零基础也要用 n8n 调 MinerU MCP 做文档处理自动化如果你手里有一堆 PDF 合同、扫描版论文、带公式的技术手册想批量转成 Markdown 再抽取字段归档纯手工复制粘贴基本等于自虐。MinerU 能把这些文档转成结构化 Markdown支持 OCR、公式和表格识别n8n 是开源可视化工作流工具拖几个节点就能把「上传文件 → 解析 → 大模型抽取 → 写盘归档」串成一条流水线。两者通过 MCPModel Context Protocol对接后你不需要写复杂代码只要在 n8n 里配好 MCP Client 节点就能让大模型直接调用 MinerU 的解析能力。这套组合适合谁适合不想碰 Python 脚本的运营、法务、科研助理也适合想快速验证文档自动化链路的开发者。我实测下来最省事的路径是本地起一个 MinerU MCP Servern8n 里用 MCP Client 节点连上它再挂一个大模型对话节点做触发和字段抽取最后用 Write Files 节点落盘。整条链路跑通后你丢一个 PDF 进去出来的就是 Markdown 加结构化 JSON。这里有个关键点n8n 本身不直接解析 PDF它负责编排MinerU MCP 负责真正的解析和 OCR大模型负责理解你的自然语言指令比如「把这份合同里的甲方、金额、签署日期抽出来」。三者分工明确你只需要把连接参数填对。为了让大模型调用更稳定我建议用 TaoToken 作为模型接入层。它的 API 地址是 https://taotoken.net/api兼容 OpenAI 格式n8n 的 OpenAI 凭证里把 Base URL 填成这个就行。这样你既可以用 GPT-4o-mini 这类模型做对话触发也能在后续扩展里换成其他模型不用改工作流结构。TaoToken 官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后到 API Keys 页面生成密钥即可。2. 前置准备MinerU MCP Server 与 n8n 环境搭建在 n8n 里连 MCP 之前你得先把 MinerU MCP Server 跑起来。这个 Server 是一个本地服务默认监听 8000 端口提供 SSE 接口给 n8n 调用。安装方式推荐用 uv比 pip 快且依赖隔离干净。如果你还没装 uv先执行pip install uv uv --version然后拉取 MinerU MCP Server 的源码并启动。假设你已经把源码放到本地目录进入该目录后执行uv run mineru-mcp-server --host 0.0.0.0 --port 8000启动成功后终端会提示 SSE 端点通常是http://localhost:8000/sse。你可以先用 curl 验证一下服务是否活着curl -N http://localhost:8000/sse如果看到持续的事件流输出不要按 CtrlC另开终端说明 MCP Server 正常。注意这个服务需要能访问 MinerU 的解析能力所以你的 MinerU API Key 要提前配好通常通过环境变量传入比如MINERU_API_KEY你的key。接下来装 n8n。Node.js 14 是硬性要求建议用 18 或 20。全局安装npm install n8n -g n8n startn8n 默认在http://localhost:5678启动。第一次打开会让你设置管理员账号随便填一个你能记住的邮箱和密码。进入后左侧菜单点 Workflows准备创建新工作流。这里有个容易踩的坑n8n 和 MinerU MCP Server 如果不在同一台机器localhost要换成实际 IP如果都在本机但 n8n 跑在 Docker 里那localhost指向的是容器内部得用host.docker.internal或者宿主机的局域网 IP。我试过在 Docker 里直接填 localhost结果一直连不上换成宿主 IP 才通。另外MCP 调用可能比较慢尤其是大 PDF 带 OCR 的时候。n8n 默认的 MCP 超时时间偏短建议在启动 n8n 前设置环境变量export NODES_MCP_TIMEOUT3600000 n8n start3600000 毫秒等于 1 小时足够处理大部分文档。如果你在 Windows PowerShell 里用$env:NODES_MCP_TIMEOUT3600000。3. 可复制配置n8n 工作流节点与 MCP 连接参数现在进入核心部分。打开 n8n点右上角 Create Workflow你会看到一个空白画布。我们需要依次添加这几个节点Chat Trigger对话触发、AI Agent大模型代理、MCP Client Tool连接 MinerU MCP、Write Files from Disk落盘归档。先配大模型凭证。点左侧 Credentials → Add Credential → 选 OpenAI。在 API Key 里填你在 TaoToken 生成的密钥Base URL 填https://taotoken.net/api。保存后回到画布。然后添加 AI Agent 节点。在 Agent 的 Model 里选刚才的 OpenAI 凭证Model ID 填gpt-4o-mini或者你账号里可用的其他模型。Agent 的 System Prompt 可以写你是一个文档处理助手。当用户上传文件时调用 MinerU MCP 的 parse_documents 工具解析文件然后根据用户指令抽取字段并以 JSON 返回。接着添加 MCP Client Tool 节点把它连到 AI Agent 的 Tool 接口。在 MCP Client 配置里SSE Endpoint 填http://localhost:8000/sse如果你改了 MinerU MCP Server 的端口或 IP这里同步改。保存后n8n 会自动拉取该 MCP Server 暴露的工具列表你应该能看到parse_documents之类的工具名。再添加 Write Files from Disk 节点用于把解析结果写到本地。File Path 填一个绝对路径比如/Users/yourname/mineru_output/{{ $now.toFormat(yyyyMMdd_HHmmss) }}.mdWindows 下写成D:\\mineru_output\\{{ $now.toFormat(yyyyMMdd_HHmmss) }}.md。注意路径里的反斜杠要双写或者直接用正斜杠n8n 在 Windows 上也能识别正斜杠。最后把 Chat Trigger 连到 AI Agent 的输入AI Agent 的输出连到 Write Files。整个工作流的 JSON 结构大致如下你可以直接复制到 n8n 的 Import from Clipboard{ nodes: [ { parameters: { public: true, mode: webhook }, name: Chat Trigger, type: n8n/n8n-nodes-langchain.chatTrigger, position: [200, 300] }, { parameters: { model: gpt-4o-mini, options: {} }, name: AI Agent, type: n8n/n8n-nodes-langchain.agent, position: [500, 300] }, { parameters: { endpoint: http://localhost:8000/sse }, name: MCP Client, type: n8n/n8n-nodes-langchain.mcpClientTool, position: [500, 500] }, { parameters: { filePath: /Users/yourname/mineru_output/{{ $now.toFormat(yyyyMMdd_HHmmss) }}.md }, name: Write Files from Disk, type: n8n-nodes-base.writeBinaryFile, position: [800, 300] } ], connections: { Chat Trigger: { main: [[{node: AI Agent, type: main, index: 0}]] }, MCP Client: { ai_tool: [[{node: AI Agent, type: ai_tool, index: 0}]] }, AI Agent: { main: [[{node: Write Files from Disk, type: main, index: 0}]] } } }导入后记得把 Write Files 的路径改成你自己的MCP Client 的 endpoint 也确认一下。如果你用的是 TaoToken 的 Coding Plan 做长期编码任务可以把模型换成更适合代码和结构化输出的型号Base URL 和 Key 不变。4. 端到端验证上传 PDF 看 Markdown 与归档结果配置保存后点画布下方的 Open Chat 按钮会弹出一个对话窗口。在窗口里点回形针图标上传一个 PDF比如一份带表格的发票或者论文首页。然后输入指令请解析这个文件把正文转成 Markdown并抽取标题、作者、日期三个字段以 JSON 返回。点发送。你会看到 AI Agent 开始工作它先调用 MCP Client 的parse_documents工具把文件传给 MinerU MCP ServerMinerU 解析完成后返回 Markdown 文本大模型再根据你的指令抽取字段。整个过程在对话窗口里能看到工具调用日志。如果一切正常Write Files 节点会把结果写到指定路径。打开那个文件你应该能看到类似这样的内容# 文档标题 作者张三 日期2024-05-20 ## 正文 这里是 MinerU 解析出来的 Markdown 正文表格和公式都保留为 Markdown 格式。同时对话窗口里会返回 JSON{ title: 文档标题, author: 张三, date: 2024-05-20 }这说明整条链路跑通了。你可以再试一个扫描版 PDF验证 OCR 是否生效。如果 MinerU 返回的 Markdown 里文字正确说明 OCR 也正常。验证模型对话是否稳定可以到 TaoToken 的模型对话页面单独测一下同一个模型地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。这样能把「模型本身的问题」和「n8n 工作流的问题」分开排查。批量归档的场景你可以把 Chat Trigger 换成 Webhook 或者 Schedule Trigger配合一个循环节点遍历文件夹里的所有 PDF。不过零基础阶段先把单文件跑通再扩展批量否则出错时很难定位是哪个环节的问题。5. 常见报错排查401、local proxy failed、reading choices、OAuth第一个高频报错是 401 Unauthorized。如果你在 n8n 的 OpenAI 凭证里填了 TaoToken 的 Key 但没改 Base URL请求会打到 OpenAI 官方自然 401。检查 Credentials 里的 Base URL 是不是https://taotoken.net/apiKey 有没有多余空格。另外TaoToken 的 Key 是在 API Keys 页面生成的别把登录密码当 Key 填进去。第二个是local proxy failed或连接被拒绝。这通常是 n8n 连不上 MinerU MCP Server。先确认 MCP Server 还在运行终端没关。然后确认 endpoint 写的是/sse结尾不是/mcp或根路径。如果 n8n 在 Docker 里把localhost换成host.docker.internal。防火墙也可能拦Windows 上检查一下 8000 端口是否允许入站。第三个是reading choices相关报错比如Cannot read properties of undefined (reading choices)。这多半是模型返回格式不符合预期常见原因是 Base URL 填错导致返回了 HTML 错误页或者模型 ID 写错。检查 Model ID 是否在你账号的可用列表里TaoToken 的模型列表可以在控制台看到。另外如果 Agent 的 System Prompt 太复杂模型可能返回非 JSON也会触发解析错误先把 Prompt 简化再试。第四个是 OAuth 相关报错。n8n 某些节点会走 OAuth 流程但 MCP Client 和 OpenAI 凭证都不需要 OAuth。如果你看到 OAuth 报错大概率是误点了其他凭证类型删掉重新建一个 OpenAI 类型的凭证即可。TaoToken 的接入文档里有各语言的调用示例地址是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 对照检查请求头格式。还有一个隐蔽的坑MCP 超时。如果 PDF 很大n8n 可能在 MCP 返回前就断了。确认启动 n8n 前设置了NODES_MCP_TIMEOUT并且值足够大。如果还是超时把 PDF 拆小再试或者检查 MinerU MCP Server 那边的日志有没有报错。6. 把链路用起来从单文件到批量归档的下一步单文件跑通后你可以把工作流改成批量模式。具体做法加一个 Read Files from Disk 节点读取文件夹接一个 Loop Over Items 节点把每个文件依次传给 AI Agent。Write Files 的路径里用{{ $itemIndex }}或者文件名变量避免覆盖。如果你想让整个系统长期跑在服务器上n8n 可以用 Docker 部署MinerU MCP Server 也做成 systemd 服务或者 Docker 容器。TaoToken 的 Coding Plan 适合这种长期运行的编码和 Agent 场景地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 按需选套餐即可。最后提醒一点MCP 工具调用会消耗模型 token尤其是大 PDF 解析后返回的 Markdown 很长再让模型抽取字段时上下文会很大。建议在 Agent 里设置合理的 max tokens或者先用 MinerU 解析落盘再用另一个工作流读 Markdown 做抽取把解析和抽取拆成两步成本和稳定性都更好。

相关新闻

CAN总线错误处理机制深度解析:从位错误到Bus Off的硬件级调试

CAN总线错误处理机制深度解析:从位错误到Bus Off的硬件级调试

1. 为什么CAN总线“不报错”才是最危险的错误?在某次车载诊断模块联调中,我亲眼见过一个现象:整车通信看似一切正常——仪表盘无故障灯、ECU日志无报错、CAN分析仪上帧率稳定在500kbps,但车辆在高速变道时突然失去转向助力。排查三…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/14 2:05:49 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/14 2:06:21 阅读更多 →

最新新闻

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

办公设备管理系统OAMS源码实战:从台账混乱到扫码即用

简介:办公设备管理系统OAMS是一套面向企事业单位设备管理员与信息化开发者的全生命周期管理解决方案,覆盖采购、入库、领用、维修、报废等核心环节,适合需要落地资产台账、审批流程与统计报表的Java Web项目学习与二次开发。资源包共451个文件…

2026/10/14 4:00:41 阅读更多 →
SpringBoot2+Vue3流浪宠物管理系统:前后端分离架构实战解析

SpringBoot2+Vue3流浪宠物管理系统:前后端分离架构实战解析

1. 这个系统解决的是什么问题:流浪宠物救助的数字化盲区说实话,市面上打着"宠物管理系统"旗号的项目源码并不少,但真正能落地到流浪动物救助场景的却不多。大部分所谓管理系统要么是单纯的前端页面堆砌,要么后端只做了简…

2026/10/14 4:00:41 阅读更多 →
Matlab实现CNN-GRU多特征分类预测:从数据准备到模型落地

Matlab实现CNN-GRU多特征分类预测:从数据准备到模型落地

涉及到用Matlab做时序或者多维特征数据的分类预测时,CNN-GRU这个组合近年来出镜率非常高。一方面卷积结构擅长局部特征提取,另一方面GRU门控循环单元对序列依赖关系的建模能力又比普通前馈网络强很多,两个搭在一起后,既能处理多维…

2026/10/14 4:00:41 阅读更多 →
Claude Code + git worktree 多分支并行开发实战指南

Claude Code + git worktree 多分支并行开发实战指南

最近半年我一直在重度使用 Claude Code 做日常开发,手头同时维护好几个功能分支是常有的事。一开始我还是老一套:开一个终端窗口,在一个工作目录里反复git checkout切换分支,切来切去不仅脑子乱,更麻烦的是 Claude Cod…

2026/10/14 4:00:41 阅读更多 →
中小团队 CI/CD 工具选哪个:2026 年主流平台对比与 Gitee 方案解析

中小团队 CI/CD 工具选哪个:2026 年主流平台对比与 Gitee 方案解析

中小团队选择 CI/CD 工具的核心结论是:没有"最好"的工具,只有匹配团队规模、技术栈与合规要求的方案;据 JetBrains 2025 年开发者生态系统报告,GitHub Actions 以 33% 采用率领跑,Jenkins 以 28% 紧随其后&a…

2026/10/14 4:00:41 阅读更多 →
从零构建每日晨报:信息过滤系统的设计与实现

从零构建每日晨报:信息过滤系统的设计与实现

1. 一份“每日晨报”到底在解决什么问题每天早上七点半,我习惯性打开自己维护的一个小工具,屏幕上会弹出一份排版干净的简报:昨天圈子里发生了什么、有哪些值得点进去看的链接、今天有什么值得留意的节点。这份东西我管它叫“每日晨报”&…

2026/10/14 3:59:41 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →