🚀 Re:port Flow MCP

一个 MCP(Model Context Protocol)服务器,可将你在 Re:port Flow 中设计的模板 —— 发票、合同、对账单,以及任何你亲手设计的版式 —— 直接转换为 PDF 报告,并可从 Claude 或任何兼容 MCP 的 AI 代理中调用。
📛 官方显示名称:Re:port Flow MCP
📦 包与实现标识符:reportflow-mcp
🔍 旧版搜索别名:ReportFlow MCP Server、ReportFlow
✨ 主要特性
- 📝 自然语言生成 PDF —— 例如对 AI 说:"为 Acme Corp 创建一张金额为 $300 的发票"
- 🔌 设计即资源 —— 将你的 Re:port Flow 设计及其参数 schema 作为 MCP Resources 直接暴露给 AI
- 📦 批量生成 —— 一次性批量生成多份 PDF,并打包为单个 ZIP 下载
- 💾 自动保存 —— 将输出保存到用户当前所在的工作区文件夹(支持 Claude Desktop / Claude Code / Cursor / VS Code)
📦 安装指南
Re:port Flow MCP 提供两种运行方式,可根据你的客户端选择其一。
☁️ 远程服务器(claude.ai / Web 客户端)—— Streamable HTTP
将 Re:port Flow 作为**自定义连接器(custom connector)**添加到托管端点:
https://mcp.re-port-flow.com/mcp
在 Claude(claude.ai)中进入 Settings → Connectors → Add custom connector,粘贴上述 URL 即可。身份验证通过应用内的 OAuth 完成(详见身份验证)—— 本地无需安装任何内容。
💻 本地服务器(Claude Desktop / Claude Code / Cursor)—— 通过 npx 使用 stdio
在配置文件中添加以下内容(.mcp.json、claude_desktop_config.json、~/.cursor/mcp.json 等):
{
"mcpServers": {
"reportflow": {
"command": "npx",
"args": ["-y", "reportflow-mcp"]
}
}
}
配置到此结束 —— 没有环境变量、没有 API key、没有需要管理的密钥。
VS Code(支持 MCP 的版本)
在 .vscode/mcp.json 中写入相同的 JSON 即可。
📋 环境要求
| 部署方式 |
要求 |
| ☁️ 远程 |
支持自定义 HTTP 连接器的 MCP 客户端(如 claude.ai);无需本地安装 |
| 💻 本地(stdio) |
Node.js 22+(由 npx 自动获取),且首次登录时需要可用浏览器 |
| 👤 账号 |
生效的 Re:port Flow 账号(两种方式均需) |
🔧 支持的协议版本
两种传输方式(stdio / Streamable HTTP)均可从单一端点同时服务两代 MCP 协议:
2026-07-28(当前版本)—— 无状态的按请求协议。现代客户端通过 server/discover 发现它;无会话头(session header),请求在 _meta 中携带各自的协议版本。
- 2025 年代的修订版本(
2025-11-25、2025-06-18、2025-03-26、2024-11-05、2024-10-07)—— 经典的 initialize 握手流程,为兼容现有客户端而保留(Claude Desktop、claude.ai 自定义连接器、Cursor、ChatGPT、n8n 等)。
版本选择在两种传输方式上均自动完成:现代客户端通过 server/discover 探测,旧版客户端继续发送 initialize —— 双方均无需任何配置,现有连接可无感持续工作。
🔐 身份验证
☁️ 远程(claude.ai)
添加连接器时,Claude 会自动为你执行 OAuth 流程:登录 → 选择工作区 → 授权。Token 由客户端持有,本地无需管理钥匙串或浏览器步骤。
💻 本地(stdio)
重新加载 MCP 客户端后,向 AI 说:
Authenticate with Re:port Flow
浏览器窗口会自动打开。完成 登录 → 选择工作区 → 授权 即可。Token 存储于操作系统钥匙串(macOS Keychain / Windows Credential Manager / Linux libsecret),并以 chmod-0600 文件作为后备方案,同时会自动刷新。
💻 使用示例
以下每个示例都是可直接粘贴使用的提示语,AI 会自动选用合适的工具。
1️⃣ 生成单份 PDF(列出 → schema → 生成)
Using the invoice template, create a PDF for Acme Corp totalling $330.
AI 会通过 list_templates 列出设计,使用 get_design_parameters 获取参数 schema,填入具体值,然后调用 generate_pdf_sync。
- 远程:返回下载链接(
fileUrl)。
- 本地:同时保存文件并返回其绝对路径。
2️⃣ 批量生成多份 PDF
From the statement template, generate one PDF per customer
(Acme $100, Globex $250, Initech $80) and give them to me together.
- 本地(stdio):
generate_pdfs_sync 会在工作区中写入一个 ZIP 文件。
- 远程:
generate_pdfs_async 执行批处理,并返回一个请求 ID 及下载链接。
3️⃣ 异步生成后下载(本地)
Kick off the contract PDF in the background, then download it once it's ready.
AI 会调用 generate_pdf_async(立即返回 requestId),随后调用 download_file 保存已完成的 PDF。批量操作的等价流程为 generate_pdfs_async → download_zip。这些下载工具仅在 stdio 模式下可用;在远程服务器上,同步/异步工具本身已返回 fileUrl。
💡 提示 —— 自然语言参数
在支持 Sampling 的客户端上,你可以直接说 "draft the params for a $1,000 invoice to A社",AI 会调用 suggest_params 将该简述转换为合法的 params 对象,再进行生成。
4️⃣ 从零模板开始(图库 → 复制 → 生成)
I don't have any templates yet — create an invoice PDF for Acme Corp.
当 list_templates 为空时,AI 会通过 search_gallery_templates 搜索公共模板图库,向你展示候选模板,使用 copy_gallery_template 将你选中的模板复制到工作区,然后继续正常流程(get_design_parameters → generate_pdf_sync)。复制操作始终落在你在 OAuth 授权页面选择的工作区中 —— AI 无法指定其他工作区。
⚡ 斜杠命令
| 命令 |
用途 |
/generate_pdf |
生成单份 PDF 的分步配方 |
/generate_pdfs |
批量生成 PDF 的配方 |
/reportflow_help |
快速功能导览 |
📁 文件保存位置(本地模式)
输出位置按以下顺序解析:
- 用户的明确指令(例如 "save to my Desktop")
- 当前打开的工作区根目录(Claude Code / Cursor / VS Code)
- 操作系统临时目录(作为后备方案)
📚 参考文档
🛠️ 工具(由 AI 调用)
| 工具 |
用途 |
authenticate |
首次 / 重新身份验证 |
list_templates |
列出可用设计 |
get_design_parameters |
获取某个设计的参数 schema |
generate_pdf_sync / _async |
生成单份 PDF(同步返回路径;异步返回请求 ID) |
generate_pdfs_sync / _async |
生成多份 PDF(返回一个 ZIP) |
download_file / download_zip |
下载由异步工具生成的产物 |
suggest_params |
通过 MCP Sampling 将自然语言简述转换为 params JSON(需要支持 Sampling 的客户端) |
search / fetch |
ChatGPT 连接器约定工具(单一字符串参数),封闭世界(openWorldHint: false)—— 仅读取你自己工作区的内部模板目录,绝不访问网络。search 按名称解析模板;fetch 按 id 返回模板的参数 schema。它们是 list_templates / get_design_parameters 的轻量包装,以便 ChatGPT(含 Plus/Pro 无 Developer Mode)能够发现并检视模板。 |
search_gallery_templates |
按关键词/分类搜索公共模板图库(无需身份验证)。返回尚未存在于你工作区中的候选模板 —— 在复制之前,其 slug 无法用于 PDF 生成。 |
get_gallery_template |
按 slug 获取某个公共图库模板的完整详情(无需身份验证) |
copy_gallery_template |
写入工具。 将图库模板复制到你已授权的工作区(目标工作区由访问 Token 固定,无法作为参数传入)。返回可用于 get_design_parameters / generate_pdf_sync 的 designId + version。每次调用都会创建一个新设计 —— 绝不会复用先前的副本。 |
📎 资源(可作为 AI 上下文附加)
| URI |
内容 |
reportflow://designs |
可用设计列表 |
reportflow://designs/{designId}/parameters |
某个设计的参数 schema |
reportflow://errors |
来自 Content Service 的错误信息目录 |
reportflow://server-info |
服务器功能概览 |
📝 提示词(斜杠命令配方卡片)
/generate_pdf、/generate_pdfs、/reportflow_help —— 传入参数后,AI 会依照预制的工作流执行。
🔧 故障排查
| 症状 |
解决方案 |
错误信息包含 re-authentication required |
对 AI 说:"re-authenticate with Re:port Flow" |
npx 无法找到该包 |
先执行 npm cache clean --force,然后重试 |
| Linux 上没有可用的钥匙串 |
自动回退到 $XDG_STATE_HOME/reportflow-mcp/ 下的 chmod-0600 文件 |
| SSH / 远程 shell 下无法打开浏览器 |
先在本地机器上完成一次身份验证;之后缓存的 Token 即可在远程主机上使用 |
🔒 隐私
Re:port Flow MCP 是一个轻量客户端:它只将你的请求转发至你自己的 Re:port Flow 账号,并返回生成的 PDF。它不会向第三方出售或共享你的数据。身份验证 Token 存储在本地(操作系统钥匙串,或 chmod-0600 文件后备方案),且仅发送给 Re:port Flow 自身的服务 —— 在 OAuth 登录过程中,以及每次已认证 API 调用(列出模板、生成或下载 PDF)时作为 Bearer 凭据发送。这些 Token 绝不会与任何第三方共享。
关于完整的隐私政策 —— 收集了哪些信息、保留多长时间、如何处理 —— 请参见:lp.re-port-flow.com
🛡️ 安全性
托管端点会校验 Host 头(DNS 重绑定防护),并依据 MCP Streamable HTTP 规范的安全要求,以 403 Forbidden 拒绝结构性无效的 Origin 头。身份验证仅使用 Bearer Token —— 无 Cookie,且 CORS 永不接受凭据。完整政策及其威胁模型记录于 docs/security.md(日文)。
💬 支持
需要帮助、发现 bug,或有目录审核相关疑问?
- 📖 Re:port Flow(隐私与支持):https://lp.re-port-flow.com
- 🐛 GitHub Issues:https://github.com/re-port-flow/reportflow-mcp/issues
📄 许可证
MIT —— 详见 LICENSE。
🔗 相关链接
- 🌐 Re:port Flow:https://re-port-flow.com
- 🔒 隐私与支持:https://lp.re-port-flow.com
- 📦 npm:https://www.npmjs.com/package/reportflow-mcp
- 🐛 Issues:https://github.com/re-port-flow/reportflow-mcp/issues