关于 USPTO Patent File Wrapper MCP Server
USPTO Patent File Wrapper MCP 服务连接 USPTO 专利档案 API,面向专利研究和法律工作流。它提供分层字段检索、文档提取与安全下载,并通过精简结果减少上下文占用。
主要功能
- 01支持 USPTO PFW API 端点
- 02分层字段与渐进式检索
- 03发明人多策略搜索
- 04专利文档提取与 PDF 下载
- 05可自定义字段配置
- 06API 密钥安全存储选项
适用场景
- 01查找并筛选专利申请
- 02分析专利权利要求及摘要
- 03提取审查档案文档内容
- 04生成专利 PDF 下载链接
MCP 相关
它向 MCP 客户端提供专利申请、元数据和文档检索工具;可选提示词及 MCP Apps 提供工作流指导和可视化结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
USPTO 专利案卷 MCP 服务
一款高性能的 USPTO Patent File Wrapper API 模型上下文协议(MCP)服务,具备节省令牌的上下文缩减功能、智能字段映射,以及可通过浏览器安全访问的下载功能。
📚 文档
| 文档 | 说明 |
|---|---|
| 📥 安装指南 | 完整的跨平台设置指南,包含自动化脚本 |
| 🔑 API 密钥指南 | 获取 USPTO 和 Mistral API 密钥的分步说明,附带截图 |
| 📖 使用示例 | 函数示例、工作流和集成模式 |
| 🎯 提示词模板 | 面向法律和研究工作流的高级提示词模板详细指南 |
| ⚙️ 字段自定义 | 如何为精简版和均衡版工具自定义字段集的全面指南 |
| 🔒 安全指南 | 全面的安全最佳实践 |
| 🛡️ 安全扫描 | 自动检测密钥和防范提示词注入的指南 |
| 内容来源 | 检索到的文档文本如何标记和注释(将数据视为数据,而非指令) |
| 🧪 测试指南 | 测试套件文档和 API 密钥设置 |
| ⚖️ 许可证 | MIT 许可证条款和条件 |
⚡快速开始
Windows 安装
以管理员身份运行 PowerShell,然后:
# Navigate to your user profile
cd $env:USERPROFILE
# If git is installed:
git clone https://github.com/john-walkoe/uspto_pfw_mcp.git
cd uspto_pfw_mcp
# If git is NOT installed:
# Download and extract the repository to C:\Users\YOUR_USERNAME\uspto_pfw_mcp
# Then navigate to the folder:
# cd C:\Users\YOUR_USERNAME\uspto_pfw_mcp
# The script detects if uv is installed and if it is not it will install uv - https://docs.astral.sh/uv
# Run setup script (sets execution policy for this session only):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
.\deploy\windows_setup.ps1
# View INSTALL.md for sample script output.
# Close Powershell Window.
# If choose option to "configure Claude Desktop integration" during the script then restart Claude Desktop
PowerShell 脚本将:
- ✅ 检查并自动安装 uv(通过 winget 或 PowerShell 脚本)
- ✅ 安装依赖项并创建可执行文件
- ✅ 提示输入 USPTO API 密钥(必需)和 Mistral API 密钥(可选),或检测是否已安装开发者的其他 USPTO MCP 服务,并询问是否要使用那些安装中已有的密钥。
- 🔒 如果输入 API 密钥,脚本将使用 Windows DPAPI 加密安全存储 API 密钥
- ✅ 询问是否要配置 Claude Desktop 集成
- 🔒 提供安全配置方式(推荐)或传统方式(在 MCP JSON 文件中以纯文本形式存储 API 密钥)
- ✅ 备份现有 Claude Desktop 配置,然后自动合并新配置(保留其他 MCP 服务)
- ✅ 提供安装摘要和后续步骤
Claude Desktop 配置 - 手动安装
{
"mcpServers": {
"uspto_pfw": {
"command": "uv",
"args": [
"--directory",
"C:/Users/YOUR_USERNAME/uspto_pfw_mcp",
"run",
"patent-filewrapper-mcp"
],
"env": {
"USPTO_API_KEY": "your_actual_USPTO_api_key_here",
"MISTRAL_API_KEY": "your_mistral_api_key_here_OPTIONAL",
"MISTRAL_OCR_MODEL": "mistral-ocr-latest_OPTIONAL_pin_a_dated_slug",
"DOCLING_SERVE_URL": "http://localhost:5001",
"PROXY_PORT": "8080"
}
}
}
}
有关详细安装、手动设置和故障排除,请参阅 INSTALL.md
🎯主要优势
-
🔒 安全的 API 密钥存储 - 使用 Windows DPAPI 加密 API 密钥(设置期间可选择安全存储方式)
-
🗺️ 智能字段映射 - 使用
"inventionTitle"等简单名称,而不必使用"applicationMetaData.inventionTitle" -
⚙️ 用户可自定义字段 - 无需更改代码,即可通过 YAML 配置字段集
-
🎯 缩减上下文 - 获取重点明确的响应,而不是大量 API 数据
-
🔍 多策略搜索 - 全面的模糊和精确发明人搜索
-
⚡ 便捷参数 - 对律师友好的搜索参数(art_unit、examiner_name、applicant_name 等),无需使用复杂的查询语法
-
🏛️ 专业级字段 - 为专利审查、国际业务和分析提供额外字段
-
🔄 熔断器韧性 - 自动重试逻辑和指数退避可防止 API 故障
-
📊 渐进式披露 - 通过优化的最简 → 均衡 → 详细工作流缩减上下文
-
🔗 跨 MCP 集成 - 专为多数据库专利研究打造,可与开发者的其他 PTAB、FPD、Citations 和 Pinecone(Assistant 或 RAG)MCP 配合使用
- 🆕 集中式文档中心 - PFW 代理现在为所有 USPTO MCP 提供统一的下载基础设施(接受 FPD 文档注册)
-
📝 面向律师的提示词模板 - 提供 10 多种复杂的工作流模板,用于法律研究、诉讼和尽职调查(选择启用服务端模板:设置
PFW_ENABLE_PROMPTS=true以注册;默认关闭) -
✨ 智能文档提取 - 4 层混合提取:USPTO 自由文本变体 → pypdf 原生文本层 → Mistral OCR → Docling OCR(可自托管,设置
DOCLING_SERVE_URL)。两种 OCR 后端均为可选项 -
🌐 安全的浏览器下载 - 点击代理 URL 可直接下载 PDF,同时保障 API 密钥安全
-
👁️ 高级 OCR 功能 - 通过 Mistral OCR 或 Docling(EasyOCR 引擎),从扫描版 PDF、公式、图表和复杂版式中提取文本,供大模型使用
-
📁 文档包集成 - 完整访问审查文件(摘要、权利要求、NOA 等),并可对专利/申请的 XML 内容进行分析
-
🚀 高性能 - 针对 AI 工作流优化,支持定向字段选择和带指数退避的重试逻辑
-
🛡️ 可用于生产环境 - 增强的错误处理、带请求 ID 的结构化日志,以及全面的安全指南
-
💻 跨平台 - 在 Linux 和 Windows 上均可流畅运行
-
📋 完整 API 覆盖 - 支持所有 USPTO Patent File Wrapper 端点
🔍 工具搜索优化(Claude Code v2.1.7+)
新增:PFW MCP 现已支持 Claude Code 内置的工具搜索优化功能,通过动态发现工具,可减少 65-75% 的上下文窗口占用。
工作原理
- 自动启用:当 MCP 工具占用的上下文超过 10% 时,工具搜索会自动启用
- 智能发现:Claude 会预先加载必要工具,并通过 MCPSearch 按需发现其他工具
- 节省令牌:约 8-12K 个令牌 → 约 2-3K 个令牌(可为实际工作节省 5-10K 个令牌)
- 无需配置:Claude Code v2.1.7+ 开箱即用
入口工具(始终可用)
以下 3 个工具会立即加载,便于快速访问:
PFW_search_applications_minimal- 专利申请的主要发现工具PFW_get_guidance- 工作流指南和文档PFW_get_application_documents- 专利申请的文档列表
渐进式工具发现
Claude 会根据需要发现其他工具:
- 第 1 层(最简):快速获取,仅包含必要字段(约 10 个字段)
- 第 2 层(均衡):适用于常见用例(约 25 个字段)
- 第 3 层(完整):所有可用数据(50 多个字段)
启用工具搜索
如果工具搜索未自动启用:
Windows:
$env:ENABLE_TOOL_SEARCH = "true"
claude
Linux/Mac:
export ENABLE_TOOL_SEARCH=true
claude
验证是否正常运行
在 Claude Code 中运行 /context:
MCP tools: loaded on-demand (N servers) ← Tool search IS working
工作流设计 - 全部由 LLM 执行,用户只需提供最少指引
用户请求示例:
- “查找与 QLED 相关的 LCD 电视技术专利”
- “显示 Apple 在 2024 年提交的专利申请”
- “给我专利“用于数字对象的集成式交付和保护设备”的 PDF 下载链接”
- “我需要你查看专利 7971071 的详细信息并为我总结”
- “研究 IPR 案例 IPR2025-00562,并将其与原始审查程序进行比较” -* 需要安装 USPTO Patent Trial and Appeal Board (PTAB) - uspto_ptab_mcp,此外,建议在此提示词或任何跨 MCP 提示词之前,先让 LLM 调用 PFW_get_guidance 工具(有关章节选择,请参阅快速参考表;更多详情请参阅 Usage Examples)
LLM 执行以下步骤:
步骤 1:最少量发现 → 步骤 2:选择(并进行均衡搜索 - 可选) → 步骤 3:内容分析 → 步骤 4(可选):选择其他审查程序文件进行检查 → 步骤 5(可选):从 documentBag 中获取所选文件的 doc_id(s) → 步骤 6(可选):提取文档供 LLM 使用,和/或获取 PDF 下载链接供用户使用
字段配置支持优化的研究流程:
- 最少量的发现搜索,可高效返回 20-50 项申请,避免审查程序文件造成内容臃肿
- 从检索结果中**选择(并进行均衡搜索 - 可选)**可能相关的申请和/或专利。在高级工作流和/或 USPTO PTAB(Patent Trial and Appeal Board)MCP 跨服务工作流中,可按需执行可选的均衡搜索
- 通过 XML 检索所选专利的内容分析,为 LLM 分析提供结构化数据
- 选择其他审查程序文件进行检查(可选),例如授权通知、申请人引证(披露的现有技术)、审查员的驳回意见等
- 从 documentBag 中获取所选文件的 doc_id(s)(可选),使用获取申请文件工具获取 doc_id(s)
- 提取文档供 LLM 使用,和/或获取 PDF 下载链接供用户使用(可选)。通过智能混合工具提取文档,该工具会自动优化速度和质量;将文档下载为 PDF 时,使用 HTTP 代理提供的 URL,以免 USPTO API 密钥出现在聊天记录中
🎯 提示词模板
此 MCP 服务包含经过精心设计、针对 AI 优化的提示词模板,适用于复杂的专利工作流。如需了解所有模板、功能和使用示例的详细文档,请参阅 PROMPTS.md。
模板快速概览
| 类别 | 模板 | 用途 |
|---|---|---|
| 法律分析 | /patent_search、/patent_explanation_for_attorneys、/patent_invalidity_analysis_defense_pinecone_PTAB | 专利发现、技术翻译、防御性诉讼 |
| 研究与审查程序 | /art_unit_quality_assessment_FPD、/litigation_research_setup_PTAB_FPD、/technology_landscape_mapping_PTAB | 审查员分析、诉讼准备、竞争情报 |
| 文档管理 | /complete_patent_package、/document_filtering_assistant、/inventor_portfolio_analysis | 有序检索、智能筛选、专利组合梳理 |
所有模板的主要功能:
- 增强型输入处理 - 支持灵活的标识符(专利号、申请号、标题关键词)
- 智能验证 - 自动检测格式并提供指引
- 跨 MCP 集成 - 与 PTAB、FPD、Citations 和 Pinecone MCP 无缝协作
- 上下文优化 - 通过渐进式信息披露减少 token 用量
🖼️ MCP Apps(Claude 中的可视化 UI)
PFW MCP 内置了四种可视化视图,它们会以 iframe 的形式在 Claude Desktop 中呈现(第五种视图——用户管理面板——仅在启用了 OAuth 且设置了 PFW_ENABLE_USER_MANAGEMENT=true 的部署中显示):
| 触发条件 | 视图 | 显示内容 |
|---|---|---|
任意 PFW_search_* 工具 | 搜索结果 | 结果表格,包含状态/艺术单元筛选标签和 Patent Center 链接 |
PFW_get_patent_or_application_xml | 权利要求与摘要阅读器 | 带有 IND/DEP 权利要求检测功能的分栏权利要求/摘要查看器 |
PFW_get_document_download / PFW_get_granted_patent_documents_download | 最近下载 | 最近下载的 10 份文档,附带可点击的 PDF 链接 |
PFW_get_family | 专利族 | 按代际展示的专利族树,带有 CON/CIP/DIV 关系标签、Patent Center 和 Google Patents 链接 |
MCP Apps 需要使用 FASTMCP_TRANSPORT=http 模式。Claude Desktop 会通过 FastMCP 4 Apps 扩展(从 fastmcp.apps 导入)自动加载 ui://pfw/ 资源。
📊可用函数
已注册的 MCP 工具名称:下表使用工具的显示名称。在
tools/list中,服务会以以下确切名称注册 17 个工具:PFW_search_applications、PFW_search_inventor、PFW_search_applications_minimal、PFW_search_applications_balanced、PFW_search_inventor_minimal、PFW_search_inventor_balanced、PFW_get_application_documents、PFW_get_patent_or_application_xml、PFW_get_granted_patent_documents_download、PFW_get_oa_rejections、PFW_get_oa_text、PFW_get_document_content_with_ocr、PFW_get_document_download、PFW_get_family、PFW_get_term_adjustment、PFW_get_guidance,以及(仅限启用了 OAuth 且设置了PFW_ENABLE_USER_MANAGEMENT=true的部署)pfw_manage_users。
标识符格式
一个不带其他标记的 8 位数字既是有效的美国专利号,也是有效的申请序列号(2024 年专利号已超过 12,000,000),因此,接受标识符的工具无法自行区分二者。解析时会先查询专利号通道,再查询申请序列号通道;所有受影响的响应都会报告 identifier_resolved_as、identifier_lanes_tried,如果输入存在歧义,还会报告 identifier_ambiguous 和 identifier_note。
请使用能消除歧义的格式书写标识符:
| 目标 | 输入格式 | 原因 |
|---|---|---|
| 申请序列号 11/752,072 | 11/752,072 | 斜杠可以明确表示序列号;解析会直接转到申请通道 |
| 申请序列号,但无法使用斜杠 | 11752072,并设置 content_type='application' | 强制使用申请通道 |
| 已授权专利 7,971,071 | 7971071 或 7,971,071 | 七位或更少的数字表示专利号,没有歧义 |
| 已授权专利 11,752,072 | 11752072 或 11,752,072 | 仅带逗号的数字会走优先查询专利号的通道,这适用于已授权专利 |
因此,直接输入 11752072 会被识别为专利 11,752,072(申请号
16816197,“用于牙髓盖髓的快速固化骨水泥及相关使用方法”),而不是申请号 11/752,072。传入无法识别的 content_type 值会返回 400,而不会静默回退到 auto。
响应标记(有界或分页响应如何表明这一点)
工具结果过大时,客户端会将其替换为截断错误,服务器无法获知,因此响应会在服务器端进行限制,并且每个限制都会明确标示。预算按字符数计算(len(json.dumps(...))),绝不使用 Token 估算。无操作时,所有四种标记都不会出现——未受限制的响应会逐字节保持不变。
| 标记 | 出现于 | 包含 |
|---|---|---|
_bounds | 为满足限制而精简或截断的任何响应 | applied、reason("size" 或 "window")、size_chars、size_limit、stages、slimmed_fields、items_returned、items_total、note |
_window | 分页文本(PFW_get_document_content_with_ocr、PFW_get_oa_text) | unit(始终为 "char",即以下计数器的单位)、edges("char" 或 "page":窗口边界是否与页面标记对齐)、offset、returned、total、has_more、next_offset、note。将 next_offset 作为 char_offset 传回以继续获取 |
paging | 每次搜索 | limit_requested、limit_applied、offset、returned、total、has_more、next_offset。如果大小保护机制裁剪了页面,相关信息会根据实际返回的行数重写,因此 next_offset 不会跳过任何行 |
limit_clamped | 搜索请求的结果超过 MAX_SEARCH_LIMIT(100)时 | requested、applied、note。调用会将限制钳制到上限后继续执行,不会返回 400 错误。limit < 1 仍会返回 400 错误 |
PFW_get_guidance("limits") 会显示当前预算和相同的约定。
环境变量:USPTO_MAX_RESPONSE_CHARS、USPTO_MAX_CONTENT_CHARS、
USPTO_RESPONSE_BOUNDS_ENABLED(参见 INSTALL.md)。
搜索函数(6 个专用工具)
| 函数(显示名称) | 上下文缩减 | 用例 |
|---|---|---|
PFW_search_applications (Search applications custom) | 可变 | 使用用户定义字段进行自定义专利搜索 |
PFW_search_inventor (Search inventor custom) | 可变 | 使用多种策略进行智能发明人搜索 |
PFW_search_applications_minimal (Search applications minimal) | 通常为 95-99% | 超快搜索(用户可自定义最小字段) |
PFW_search_applications_balanced (Search applications balanced) | 通常为 85-95% | 用于发现的关键字段(不含 documentBag) |
PFW_search_inventor_minimal (Search inventor minimal) | 通常为 95-99% | 超快发明人搜索(用户可自定义) |
PFW_search_inventor_balanced (Search inventor balanced) | 通常为 85-95% | 均衡的发明人搜索(不含 documentBag) |
搜索策略
发明人搜索策略
exact- 仅精确匹配姓名fuzzy- 匹配多种姓名格式comprehensive- 使用所有策略并进行部分匹配
查询示例
# Exact strategy
"applicationMetaData.inventorBag.inventorNameText:\"John Smith\""
# Comprehensive strategy
[
"applicationMetaData.inventorBag.inventorNameText:\"John Smith\"",
"applicationMetaData.inventorBag.inventorNameText:\"Smith, John\"",
"applicationMetaData.inventorBag.inventorNameText:Smith*",
"applicationMetaData.inventorBag.inventorNameText:*Smith*"
]
文档处理功能
| 功能(显示名称) | 用途 | 要求 |
|---|---|---|
PFW_get_patent_or_application_xml(获取专利或申请 XML) | 获取专利/申请的结构化 XML 内容,供大模型使用;通过 include_raw_xml=False(推荐)可减少 91-99% 的 token,并可通过可选的 include_fields 选择性提取字段 | USPTO_API_KEY |
PFW_get_granted_patent_documents_download(获取已授权专利文档下载) | 一次调用即可获取完整的已授权专利文档包(摘要、附图、说明书、权利要求),并提供可通过浏览器安全访问的下载 URL | USPTO_API_KEY |
PFW_get_application_documents(获取申请文档) | 从 documentBag 获取审查文档的 doc_id,并提供高级筛选功能(document_code、direction_category) | USPTO_API_KEY |
PFW_get_document_content_with_ocr(PFW 获取带 OCR 的文档内容) | 四层混合文本提取:USPTO 免费文本变体 → pypdf 原生文本层 → Mistral OCR → Docling OCR | USPTO_API_KEY(扫描文档还需 MISTRAL_API_KEY 或 DOCLING_SERVE_URL) |
PFW_get_document_download(PFW 获取文档下载) | 提供可通过浏览器安全访问的下载 URL | USPTO_API_KEY |
PFW_get_oa_rejections(PFW 获取 OA 驳回) | USPTO ODP Office Action API — 按每次非最终/最终驳回列出驳回类型(§101/§102/§103/§112),并统计每次审查意见文本中的陈述数量 | USPTO_API_KEY |
PFW_get_oa_text(PFW 获取 OA 文本) | USPTO ODP Office Action API — 完整的审查意见文本及特定章节摘录 | USPTO_API_KEY |
PFW_get_family(PFW 获取专利族) | 标准化的连续性专利族关系图(包含具有 CON/CIP/DIV 关系类型的节点和边、最早的祖先),以及外国优先权声明。可选深度为 2 的遍历。 | USPTO_API_KEY |
PFW_get_term_adjustment(PFW 获取期限调整) | 从 ODP /adjustment 端点获取专利期限调整信息:总天数、A/B/C 类延迟及申请人延迟、有限的事件历史记录。不计算到期日。 | USPTO_API_KEY |
PFW_get_guidance(PFW 获取指南) | 推荐:按需获取上下文高效的指南章节(减少 95-99% 的 token) | 无 |
文档处理能力
- XML 内容层(
PFW_get_patent_or_application_xml):结构化专利/申请内容,上下文优化效果极佳- 🎯 推荐:
include_raw_xml=False——移除约 50K token 的原始 XML 开销(减少 91% token!) - 按需提取字段(
include_fields)——仅请求所需字段,减少 95-99% token - 默认优化响应——返回摘要、权利要求和说明书(设置
include_raw_xml=False时约 5K token) - 超高效模式——仅权利要求(约 1.5K token)、仅引文(569 token)、仅发明人(428 token)
- 智能专利到申请的映射——自动查找已授权专利对应的申请
- 自动检测——根据标识符自动判断是专利还是申请
- 针对大模型优化的解析——按需提取摘要、权利要求、发明人、分类和引文
- 支持两种 XML 格式——可处理 PTGRXML(已授权专利)和 APPXML(申请)
- 数据限制——仅适用于 2001 年 1 月 1 日之后提交的专利/申请
- 🎯 推荐:
- 完整专利资料包层(
PFW_get_granted_patent_documents_download):一次调用即可获取已授权专利- 一站式便捷获取——一次调用获取摘要、附图、说明书和权利要求(取代 4 次单独调用)
- 智能选择组件——自动选择原始或授权后的权利要求,并可选附图
- 有序的下载链接——为所有组件返回包含代理下载 URL 的结构化元数据
- 适合法律从业者——非常适用于尽职调查、诉讼准备、专利组合审查和生成纸质副本
- 高效工作流——用户提出“给我这份专利”等请求时使用,无需手动查找文档
- 优雅降级——4 个组件中有 3 个或更多可用时即可成功,并明确指出缺失项
- 针对大模型优化的指引——内置格式说明,便于生成可点击的 Markdown 链接
- 总页数——预先显示文档总页数,方便规划(通常为 40-80 页)
- 审查文档层(
PFW_get_application_documents):从 documentBag 定向访问文档- 节省 token 的设计——仅在需要时获取审查文档(避免搜索结果臃肿)
- 高级筛选——按
document_code(NOA、CTFR、892 等)和direction_category(INCOMING/OUTGOING/INTERNAL)筛选 - 缩减上下文——对于诉讼较多的申请,可减少 98.6% 的上下文(200 多份文档 → 1-2 份文档)
- 智能文档筛选——聚焦关键文档(ABST、CLM、SPEC、NOA 等)
- 优化工作流——对特定申请进行发现搜索后使用
- 文档指引——提供智能摘要和下载建议
- 替代搜索结果中的 documentBag——避免发现工作流中的 token 数量暴增 100 倍
- ✨ 智能提取层(
PFW_get_document_content_with_ocr):自动优化提取- 第 0 层 — 免费文本变体(即时,无需 OCR):USPTO API 随 PDF 渲染文件一并提供的
.docx、xmlarchive或上传时的 PDF(USPTO 撰写的文件,以及电子提交的权利要求/意见/IDS);每个变体都会与所请求的申请编号进行核对 - 第 1 层 — pypdf(即时):适用于基于文本的 PDF;若文本层为空,则报告为失败,而非成功
- 第 2 层 - Mistral OCR:处理扫描版 USPTO 文档;需要
MISTRAL_API_KEY(可选) - 第 3 层 - Docling OCR:通过
DOCLING_SERVE_URL自托管 EasyOCR;可处理与 Mistral 相同的扫描文档,也可配置为替代 Mistral,而非仅在其后使用 - 逐层升级——仅当原生文本层缺失或不可用时才运行 OCR 层;未配置凭据或端点的层会跳过
- 透明报告——每个响应中均返回
extraction_method - 统一接口——单个工具即可处理所有文档类型(避免工具选择混乱)
- 第 0 层 — 免费文本变体(即时,无需 OCR):USPTO API 随 PDF 渲染文件一并提供的
- 浏览器下载层(
PFW_get_document_download):安全代理下载- 可直接在任意浏览器中使用的点击下载 URL
- API 密钥安全——USPTO API 凭据不会暴露在聊天记录或浏览器中
- 遵守速率限制——自动遵循 USPTO 每 10 秒最多下载 5 次的限制
- 增强文件名——为 PFW 和 FPD 文档提供专业、易读的文件名:
- PFW:
APP-{app_number}_PAT-{patent_number}_{invention_title}_{type}.pdf - FPD:
PET-{date}_APP-{app}_PAT-{patent}_{description}.pdf
- PFW:
- 混合式服务架构——HTTP 代理与 MCP 服务并行运行
- 可调整 TCP 端口——可通过环境变量调整 HTTP 代理的 TCP 端口
- 🆕 集中式代理中心——PFW 代理(端口 8080)现可接收来自 FPD MCP 的文档注册,实现跨 USPTO MCP 的统一下载体验。(未来计划推出 PTAB 集中式代理中心)
- 默认将 CORS 限定为 localhost——代理和 MCP App 仅接受来自
localhost的请求;如需用于反向代理或 MCP 网关部署,可通过CORS_EXTRA_ORIGIN和MCP_APP_EXTRA_DOMAINS环境变量进行配置——参见 INSTALL.md
PFW_get_document_download 和 PFW_get_granted_patent_documents_download 使用的增强型文件名格式
系统会根据申请元数据自动生成描述性文件名:
PFW 文件 - 已授权专利:
APP-11752072_PAT-7971071_INTEGRATED_DELIVERY_AND_PROTECTION_ABST.pdf
APP-14171705_PAT-9049188_HYBRID_DEVICE_HAVING_A_PERSONAL_DIGITAL_CLM.pdf
PFW 文件 - 待审申请:
APP-18462633_SURFACE_DENSITY_DEVICE_CALIBRATION_APPARATU_SPEC.pdf
APP-18823722_BACK_CONTACT_SOLAR_CELL_AND_METHOD_FOR_PREP_DRW.pdf
FPD 文件 - 请愿决定:
PET-2025-09-03_APP-13632078_PAT-8803593_PATENT_PROSECUTION_HIGHWAY_DECISION.pdf
PET-2024-05-15_APP-17414168_PAT-12252554_REVIVAL_PETITION_DECISION.pdf
生成的文件名中的申请号是 USPTO API 返回的纯数字(
applicationNumberText)。在工具中输入申请序列号时,应使用带斜杠和逗号的格式(11/752,072):请参阅上文的标识符格式。
功能:
- APP- 前缀,用于清晰标识申请号
- PAT- 前缀,显示已授权专利号(如有)
- PET- 前缀,用于带决定日期的 FPD 请愿文件
- 40 个字符的标题,提升可读性(PFW);或 40 个字符的描述(FPD)
- 文档类型代码(PFW:ABST、CLM、SPEC、DRW;FPD:DECISION 等)
- 按时间顺序排序——FPD 文件名以日期开头,便于按时间线浏览
- 跨平台安全的字符和长度限制
- 便于专利律师整理的作品集友好型组织方式
大模型指导函数
| 函数(显示名称) | 用途 | 要求 |
|---|---|---|
PFW_get_guidance(PFW 获取指导) | 高效利用上下文的选择性指导 | 无 |
高效利用上下文的指导系统
新增:PFW_get_guidance 工具——通过选择性指导章节解决 MCP 资源的可见性问题:
🎯 快速参考表——准确了解应调用哪个章节:
- 🔍 “按发明人/公司/技术中心查找专利” →
PFW_get_guidance("fields") - 📄 “获取完整专利包/文档” →
PFW_get_guidance("documents") - 🔖 “解读文档代码(NOA、CTFR、892 等)” →
PFW_get_guidance("document_codes") - 🤝 “研究 IPR 与审查流程模式” →
PFW_get_guidance("workflows_ptab") - 🚩 “分析请愿风险信号 + 审查流程” →
PFW_get_guidance("workflows_fpd") - 📊 “分析引证,了解审查员行为” →
PFW_get_guidance("workflows_citations") - 🧠 “基于领域的法律框架 RAG(§101、§103、§112)” →
PFW_get_guidance("workflows_pinecone") - 🏢 “完整的公司尽职调查” →
PFW_get_guidance("workflows_complete") - ⚙️ “便捷的参数搜索” →
PFW_get_guidance("tools") - ❌ “搜索错误或下载问题” →
PFW_get_guidance("errors") - ⚡ “优化提取和上下文用量” →
PFW_get_guidance("cost")
智能字段映射
将复杂的 API 字段名称转换为易于用户使用的替代名称:
# User-friendly (automatically mapped)
fields = [
"applicationNumberText", # Direct passthrough
"inventionTitle", # applicationMetaData.inventionTitle
"patentNumber", # applicationMetaData.patentNumber
"filingDate", # applicationMetaData.filingDate
"parentPatentNumber" # parentContinuityBag.parentPatentNumber
]
# Advanced API paths (still supported)
fields = [
"applicationMetaData.inventionTitle",
"applicationMetaData.examinerNameText",
"parentContinuityBag.parentApplicationNumberText"
]
支持的字段映射
| 用户友好名称 | 映射到的 API 字段 |
|---|---|
inventionTitle | applicationMetaData.inventionTitle |
patentNumber | applicationMetaData.patentNumber |
filingDate | applicationMetaData.filingDate |
applicationStatusDescriptionText | applicationMetaData.applicationStatusDescriptionText |
firstInventorName | applicationMetaData.firstInventorName |
parentPatentNumber | parentContinuityBag.parentPatentNumber |
docketNumber | applicationMetaData.docketNumber |
完整映射包含 30 多个字段,详见 src/patent_filewrapper_mcp/api/helpers.py。
💻 使用示例与集成工作流
如需查看全面的使用示例,包括:
- 便捷参数搜索(技术中心、审查员、申请人、日期)
- 高级文档筛选(文档代码、方向类别、上下文缩减)
- 跨 MCP 集成工作流(PFW + PTAB + FPD + Pinecone)
- 完整生命周期尽职调查示例
- 诉讼研究模式
- 技术中心质量评估
- 提取和上下文效率策略
请参阅详细的 USAGE_EXAMPLES.md 文档。
🔧 字段自定义
此 MCP 服务支持通过 YAML 配置自定义字段集,以实现最佳上下文缩减。无需更改任何代码,即可修改字段集!
配置文件: field_configs.yaml(位于项目根目录)
如需完整的自定义指南,包括渐进式工作流策略、令牌优化和高级字段选择模式,请参阅 CUSTOMIZATION.md。
🔗 MCP 交叉集成
此 MCP 旨在与另外三个 USPTO MCP 无缝协作,以全面分析专利生命周期:
相关 USPTO MCP 服务
| MCP 服务 | 用途 | GitHub 仓库 |
|---|---|---|
| USPTO Patent File Wrapper (PFW) | 审查历史记录和文档 | uspto_pfw_mcp |
| USPTO Patent Trial and Appeal Board (PTAB) | 专利审判与上诉委员会程序 | uspto_ptab_mcp |
| USPTO Enriched Citation | 关于特定专利申请的审查意见通知书中引用了哪些参考资料或现有技术的信息。使用 USPTO Enriched Citation API v3 | uspto_enriched_citation_mcp |
| USPTO Final Petition Decisions (FPD) | 最终请愿决定 | uspto_fpd_mcp |
| Pinecone Assistant MCP | 专利法知识库,支持 AI 驱动的聊天和引用(MPEP、审查指南)— 1 个 API 密钥,免费层额度有限 | pinecone_assistant_mcp |
| Pinecone RAG MCP | 使用自定义嵌入的专利法知识库(MPEP、审查指南)— 需要 Pinecone 和嵌入模型,免费层额度每月重置 | pinecone_rag_mcp |
集成概览
Patent File Wrapper (PFW) MCP 是专利研究的基础,可提供审查历史记录和文档访问。与其他 MCP 结合后,它可以实现:
- PFW + PTAB:交叉参照 PTAB 程序与审查历史记录,用于诉讼研究
- PFW + Enriched Citations:AI 驱动的审查员引用分析和现有技术研究模式
- PFW + FPD:了解审查过程中的请愿历史和程序问题
- PFW + FPD + PTAB:完整追踪专利生命周期,从申请到授权后挑战
- PFW + Pinecone(Assistant 或 RAG):在将完整的审查文件纳入上下文之前,研究 MPEP 指南
关键集成模式
交叉引用字段:
applicationNumberText- 将 PTAB 程序与 PFW 审查流程关联起来的主键groupArtUnitNumber- 跨所有 MCP 分析技术中心examinerNameText- 审查员行为模式和质量评估firstApplicantName/inventorBag- 跨 MCP 匹配当事方
渐进式工作流:
- 发现(PFW):使用简便参数进行最简搜索,查找申请或专利
- 引证分析(Enriched Citations):分析审查员的引证模式和现有技术参考文献
- 申请审查情况查询(FPD):查看审查流程的程序历史
- 挑战评估(PTAB):检查是否存在授权后挑战
- 知识研究(Pinecone):在有相关资料时研究 MPEP 指南(Assistant MCP:
assistant_context/ RAG MCP:semantic_search) - 文档分析(PFW):提取指定的审查流程文档
如需详细了解集成工作流、交叉引用示例和完整用例,请参阅 USAGE_EXAMPLES.md。
📈性能对比
| 方法 | 响应大小 | 上下文用量 | 功能 |
|---|---|---|---|
| 直接 curl | ~100KB+ | 高 | 原始 API 访问 |
| MCP 平衡模式 | ~5KB | 中 | 关键字段 + 映射 |
| MCP 最简模式 | ~1KB | 极低 | 仅基本数据 |
🧪测试
步骤 1:手动端到端测试(从这里开始)
打开已连接此 MCP 服务的 Claude Desktop,并粘贴 tests/TEST_SUITE.md 中的提示词。该测试套件会通过其覆盖的 12 个工具,针对实时 USPTO API 运行 21 项测试(测试 0 至测试 20),并验证已知的预期输出;无需编写代码。它不测试 PFW_get_family、PFW_get_term_adjustment、PFW_search_inventor 或 PFW_search_inventor_balanced。
初次设置后、升级后或修改工具逻辑后运行。
步骤 2:开发者测试
# Full test suite (pytest, asyncio_mode=auto)
# test_unified_key_management.py is excluded because it overwrites the real
# secure-storage keys mid-test — only run it deliberately.
uv run pytest --ignore=tests/test_unified_key_management.py
# If no download proxy is running on port 8080, skip the proxy integration test:
SKIP_PROXY_TESTS=1 uv run pytest --ignore=tests/test_unified_key_management.py
# Single-file smoke test
uv run python tests/test_fields_fix.py
如需完整的开发者测试套件,包括代理服务器、OCR 提取和 API 密钥设置,请参阅 测试指南。
📁项目结构
uspto_pfw_mcp/
├── field_configs.yaml # Root-level field customization
├── launcher.py # Entry point launcher
├── .security/ # Security scanning components
│ ├── patent_prompt_injection_detector.py # Enhanced prompt injection detection
│ ├── check_prompt_injections.py # Standalone scanning script with baseline support
│ └── .prompt_injections.baseline # Baseline tracking for prompt injection findings
├── src/
│ └── patent_filewrapper_mcp/
│ ├── main.py # FastMCP server assembly (instructions, resources, tool registration)
│ ├── server_bootstrap.py # Entry point, transport selection, proxy lifecycle
│ ├── fastmcp_compat.py # FastMCP 4 / MCP SDK 2.x shims (defer_loading, tool titles)
│ ├── middleware.py # Streamable-HTTP probe shim and x-api-key gate
│ ├── guidance.py # PFW_get_guidance section bodies
│ ├── app_uris.py # ui://pfw/ MCP App resource URIs
│ ├── client_registry.py # Shared USPTO API client (lazy init)
│ ├── __init__.py
│ ├── __main__.py
│ ├── exceptions.py
│ ├── shared_secure_storage.py # Cross-platform secure API key storage (DPAPI / Fernet)
│ ├── config/
│ │ ├── field_manager.py # Configuration management
│ │ ├── tool_reflections.py # Migration notices (guidance moved to PFW_get_guidance)
│ │ └── log_config.py # 🆕 Logging configuration with file-based rotation
│ ├── api/
│ │ ├── enhanced_client.py # 4-tier extraction (free-text variants → pypdf → Mistral → Docling)
│ │ ├── docling_client.py # docling-serve REST client (self-hosted OCR via DOCLING_SERVE_URL)
│ │ ├── office_action_client.py # USPTO ODP Office Action API (search + full text)
│ │ ├── field_constants.py # Field constant definitions
│ │ └── helpers.py # Field mapping & utilities
│ ├── models/
│ │ ├── constants.py # System constants
│ │ └── search_params.py # Search parameter models
│ ├── prompts/ # AI prompt templates
│ │ ├── patent_search.py
│ │ ├── patent_explanation_for_attorneys.py
│ │ ├── patent_invalidity_analysis_defense_Pinecone_PTAB_FPD_Citations.py
│ │ ├── litigation_research_setup_PTAB_FPD.py
│ │ ├── technology_landscape_mapping_PTAB.py
│ │ ├── art_unit_quality_assessment_FPD.py
│ │ ├── complete_patent_package_retrieval_PTAB_FPD.py
│ │ ├── document_filtering_assistant.py
│ │ ├── inventor_portfolio_analysis.py
│ │ ├── examiner_behavior_intelligence_CITATION.py
│ │ └── prior_art_analysis_CITATION.py
│ ├── proxy/
│ │ ├── server.py # HTTP proxy for secure downloads
│ │ ├── rate_limiter.py # USPTO rate limiting compliance
│ │ ├── secure_link_cache.py
│ │ ├── models.py
│ │ ├── fpd_document_store.py
│ │ └── ptab_document_store.py
│ ├── reflections/ # Reflection system (legacy)
│ │ ├── base_reflection.py
│ │ ├── pfw_reflections.py
│ │ └── reflection_manager.py
│ ├── services/
│ │ └── ocr_service.py # OCR quality detection and processing
│ ├── tools/ # MCP tool registration (search, documents, OA, guidance, admin)
│ ├── auth/ # Optional OAuth 2.1 sign-in (PFW_AUTH_MODE=oauth)
│ ├── ui/ # MCP App HTML views (ui://pfw/ resources)
│ ├── shared/
│ │ ├── injection_scan.py # Runtime detection-only injection scanner + provenance note
│ │ ├── internal_auth.py # Shared authentication
│ │ ├── log_sanitizer.py # Automatic sensitive data sanitization
│ │ ├── safe_logger.py # Safe logger with auto-sanitization
│ │ ├── response_bounds.py # Shared response-size guard (_bounds / _window)
│ │ ├── fernet_key_store.py
│ │ └── uspto_shared_rate_limiter.py # Cross-process shared USPTO rate limiter
│ ├── util/
│ │ ├── database.py
│ │ ├── dpapi_utils.py
│ │ ├── error_handlers.py
│ │ ├── identifier_normalization.py
│ │ ├── identifier_resolution.py # Patent-vs-application lane resolution
│ │ ├── linux_secret_store.py
│ │ ├── input_processing.py
│ │ ├── logging.py # Enhanced logging utilities
│ │ ├── package_manager.py
│ │ └── security_logger.py
│ └── json/
│ └── search_query.json # Sample JSON structures
├── deploy/
│ ├── linux_setup.sh # Linux deployment script
│ ├── windows_setup.ps1 # PowerShell deployment script
│ ├── manage_api_keys.ps1 # API key management utilities
│ ├── Validation-Helpers.psm1 # PowerShell validation module
│ └── validation_helpers.sh # Bash validation helpers
├── tests/ # Current test files (see tests/README.md for the full list)
│ ├── README.md # Testing documentation
│ ├── TEST_SUITE.md # Manual end-to-end suite against the live USPTO API
│ ├── conftest.py
│ ├── test_fields_fix.py # Core functionality test
│ ├── test_proxy_simple.py # Proxy server test
│ ├── test_quality_detection.py # Extraction quality detection test
│ ├── test_unified_key_management.py # Secure key storage test (excluded by default)
│ ├── test_identifier_resolution_order.py # Resolve-then-validate order guard
│ ├── test_response_bounds.py # Shared response-size guard
│ ├── test_download.py
│ ├── test_enhanced_filename.py
│ ├── test_fpd_integration.py
│ ├── test_granted_patent_documents_download.py
│ ├── test_injection_scan.py # Runtime injection scanner + tool wiring tests
│ ├── test_mistral_key_logic.py
│ ├── test_optional_mistral.py
│ ├── test_placeholder_detection.py
│ ├── test_ptab_integration.py
│ ├── test_resilience_features.py
│ ├── test_tool_reflections.py
│ └── test_utils.py
├── reference/
│ ├── README.md
│ ├── Document_Descriptions_List.csv
│ └── PatentFileWrapper_swagger.yaml
├── scripts/
│ ├── manage_mcp_users.py # Bootstrap and manage the OAuth mcp_users table
│ └── rotate_internal_auth_secret.py # Rolling rotation for INTERNAL_AUTH_SECRET
├── docs/
│ └── CONTENT_PROVENANCE.md # Retrieved-text provenance and injection-annotation posture
├── pyproject.toml # Package configuration
├── uv.lock # uv lockfile
├── README.md # This file
├── INSTALL.md # Comprehensive installation guide
├── USAGE_EXAMPLES.md # Function examples and workflows
├── CUSTOMIZATION.md # Field configuration and optimization guide
├── PROMPTS.md # Prompt templates documentation
├── API_KEY_GUIDE.md # USPTO and optional Mistral key setup
├── SSO_SETUP.md # OAuth 2.1 sign-in (Google / Entra ID)
├── SECURITY_GUIDELINES.md # Security best practices
├── SECURITY_SCANNING.md # Automated secret detection guide
└── .env.example # Every environment variable, commented
🔍故障排除
常见问题
API 密钥问题
- **Claude Desktop:**配置文件中的 API 密钥已足够
- **测试脚本:**必须设置环境变量
设置 USPTO API 密钥:
- Windows 命令提示符:
set USPTO_API_KEY=your_key - Windows PowerShell:
$env:USPTO_API_KEY="your_key" - Linux/macOS:
export USPTO_API_KEY=your_key
设置 Mistral API 密钥(用于 OCR):
- Windows 命令提示符:
set MISTRAL_API_KEY=your_key - Windows PowerShell:
$env:MISTRAL_API_KEY="your_key" - Linux/macOS:
export MISTRAL_API_KEY=your_key
uv 与 pip 问题
- **uv 的优势:**依赖解析更好,安装速度更快
- **混合安装:**可以同时使用
uv sync和pip install -e . - **测试:**对于由 uv 管理的项目,使用
uv run前缀
字段未返回数据
- **原因:**字段名称不在映射中
- **解决方案:**在
helpers.py的field_mapping中添加该字段,或使用完整的 API 字段名称
身份验证错误
- **原因:**缺少或 API 密钥无效
- **解决方案:**检查
USPTO_API_KEY环境变量或 Claude Desktop 配置
MCP 服务无法启动
- **原因:**缺少依赖项或路径不正确
- **解决方案:**重新运行设置脚本,重启所有 PowerShell 窗口,重启 Claude Desktop(或其他 MCP 客户端),并检查配置
- **如果问题仍然存在:**重置 MCP 安装(见下文“重置 MCP 安装”)
虚拟环境问题(Windows 设置)
- 症状: 运行
windows_setup.ps1时出现“No pyvenv.cfg file”错误 - 原因: Claude Desktop 运行时会锁定
.venv文件,导致无法正确创建虚拟环境 - 解决方案:
- 运行设置脚本前,完全关闭 Claude Desktop
- 删除
.venv文件夹:Remove-Item ./.venv -Force -Recurse -ErrorAction SilentlyContinue - 再次运行
.\deploy\windows_setup.ps1
重置 MCP 安装
如果需要完全重置 MCP 安装,以便再次运行 Windows 快速安装程序:
# Navigate to the project directory
cd C:\Users\YOUR_USERNAME\uspto_pfw_mcp
# Remove Python cache directories
Get-ChildItem -Path ./src -Directory -Recurse -Force | Where-Object { $_.Name -eq '__pycache__' } | Remove-Item -Recurse -Force
# Remove virtual environment
if (Test-Path ".venv") {
Remove-Item ./.venv -Force -Recurse -ErrorAction SilentlyContinue
}
# Remove database files
Remove-Item ./proxy_link_cache.db -Force -ErrorAction SilentlyContinue
Remove-Item ./fpd_documents.db -Force -ErrorAction SilentlyContinue
Remove-Item ./ptab_documents.db -Force -ErrorAction SilentlyContinue
# Now you can run the setup script again
.\deploy\windows_setup.ps1
Linux/macOS 重置:
# Navigate to the project directory
cd ~/uspto_pfw_mcp
# Remove Python cache directories
find ./src -type d -name '__pycache__' -exec rm -rf {} + 2>/dev/null || true
# Remove virtual environment and database files
rm -rf .venv
rm -f proxy_link_cache.db fpd_documents.db ptab_documents.db
# Run setup script again
./deploy/linux_setup.sh
获取帮助
- 查看测试脚本中的可用示例
- 查看
src/patent_filewrapper_mcp/api/helpers.py中的字段映射 - 确认 Claude Desktop 配置与 INSTALL.md 中提供的模板一致
🛡️ 安全与生产就绪
增强的错误处理
- 带指数退避的重试逻辑——针对暂时性故障自动重试(共 3 次,间隔分别为 1 秒、2 秒、4 秒)
- 智能重试策略——不重试身份验证错误或客户端错误(4xx)
- 结构化日志记录——跟踪请求 ID,以便更好地调试和监控
- 生产级弹性——从容处理超时、网络问题和 API 速率限制
安全功能
- 使用环境变量存储 API 密钥——代码库中没有硬编码的凭据
- 安全的测试模式——测试文件使用带有回退值的环境变量
- 全面的 .gitignore——防止意外提交凭据
- 安全指南——关于安全开发实践的完整文档
- CORS 仅限本地主机——代理和 MCP App 默认拒绝跨源请求;可通过
CORS_EXTRA_ORIGIN/MCP_APP_EXTRA_DOMAINS为反向代理/网关进行配置(参见 INSTALL.md) - 自动扫描机密信息——CI/CD 和提交前钩子可防止 API 密钥泄漏(detect-secrets)
- 可检测 20 多种机密类型——AWS 密钥、GitHub 令牌、JWT、私钥、API 密钥等
- 基线管理——跟踪已知占位符,同时发现真实机密
- 🆕 自动脱敏的 SafeLogger——自动遮蔽所有日志消息中的 API 密钥、JWT、密码、IP、电子邮件地址(CWE-532)
- 🆕 基于文件并支持轮转的日志记录——持久审计跟踪,支持 10MB 轮转和 5/10 个备份(CWE-778)
- 🆕 提示词注入基线系统——跟踪已知发现项,仅通过 SHA256 指纹标记新模式
- 提示词注入检测——70 多种模式检测系统,可防护针对 AI 的攻击
- 专利领域专项安全防护——自定义模式可检测 USPTO API 绕过和数据提取尝试
- 增强过滤——在全面覆盖威胁的同时尽量减少误报
内容来源与注入标注
检索到的专利审查文本会原样提供——不会删减或改写,因为法律文本的原文保真度就是产品的核心。相反,服务会进行标记和注释:
provenance_note— 每个返回文本的工具 (PFW_get_document_content_with_ocr、PFW_get_oa_text、PFW_get_patent_or_application_xml)都会附加机器可读的说明,指出检索到的文件封装文本是引用数据,而非指令,并且申请人或审查员撰写的定性描述属于其归属方的立场。injection_scan— 仅用于检测的运行时扫描器 (src/patent_filewrapper_mcp/shared/injection_scan.py)会检查返回的 OCR 输出、审查意见文本和 XML 内容,查找指令覆盖、提示词提取和编码规避相关语言,以及可疑密度的不可见 Unicode 字符。如果检测到匹配项,响应会添加注释,指出被标记的文档和发现的模式类型——绝不会包含匹配到的文本。如果内容干净,则完全不包含该键。- 服务端指令会声明相同的处理原则,以便使用这些内容的模型将检索文档中的类指令语言视为应报告的引用内容,而不是应遵循的指令。
这一运行时层与提交时的代码库扫描器 .security/ 互为补充(参见 SECURITY_SCANNING.md)。完整说明:
docs/CONTENT_PROVENANCE.md。
请求跟踪与调试
所有 API 请求都包含唯一的请求 ID(8 个字符的 UUID),用于关联:
[a1b2c3d4] Starting GET request to applications/search
[a1b2c3d4] Request successful on attempt 1
文档
SECURITY_GUIDELINES.md- 全面的安全最佳实践SECURITY_SCANNING.md- 自动化机密检测与防护指南tests/README.md- 完整的测试指南,包含 API 密钥设置- 改进的错误消息包含请求 ID,便于获得支持
📝贡献
- Fork 仓库
- 创建功能分支
- 为新功能添加测试
- 确保所有测试通过
- 提交拉取请求
📄许可证
MIT 许可证
⚠️ 免责声明
本软件按“原样”提供,不附带任何形式的保证。
独立项目声明:这是一个独立的个人项目,与美国专利商标局(USPTO)无关,也未获得其认可或赞助。
作者不作任何明示或默示的陈述或保证,包括但不限于:
- 准确性与 AI 生成内容:不保证数据准确、完整或适用于任何目的。特别提醒用户,人工智能(AI)组件生成或辅助生成的输出(包括但不限于文本、数据或分析)可能不准确、不完整、虚构,或属于 AI 模型的“幻觉”(虚构内容)。
- 可用性:USPTO API 和 Mistral API 依赖项可能导致服务中断。
- 法律合规:用户独自负责确保其对本软件的使用,以及基于软件输出进行的任何提交或操作,严格遵守所有适用法律、法规和政策,包括但不限于:
- 最新的在美国专利商标局办理业务时使用基于人工智能的工具的指南(USPTO 指南)。
- USPTO 的坦诚与善意义务(例如,37 CFR 1.56、11.303),其中包括披露重要信息并纠正错误的义务。
- USPTO 的签名要求(例如,37 CFR 1.4(d)、2.193(c)、11.18),用于证明已由人工审查并进行了合理调查。
- 所有有关发明人资格的规定(例如,每项权利要求所涵盖的发明都必须至少有一名人类发明人)。
- 法律建议:此工具仅提供数据访问和处理功能,不提供法律咨询。所有结果均须由具备资质的法律专业人士独立核实、审慎分析并作出专业判断。
- 商业用途:用户必须核实 USPTO 和 Mistral 对商业应用的相关条款。
- 保密与数据安全:对于用户输入软件 AI 组件或传输至第三方 AI 服务(例如 Mistral API)的任何数据(包括涉及客户的敏感信息或技术信息)的保密性或安全性,作者均不作任何陈述。用户有责任了解并接受任何集成的第三方 AI 服务的隐私政策、数据保留做法和安全措施。
- 外国申请许可证与出口管制:用户独自负责确保通过本软件的 AI 组件输入或处理任何数据(尤其是技术信息)不会违反美国外国申请许可证要求(例如,35 U.S.C. 184、37 CFR Part 5)或出口管制法规(例如,EAR、ITAR)。这包括了解潜在的“视同出口”情形,例如外国人员访问此类数据,或 AI 服务器位于美国境外。
责任限制: 在任何情况下,作者均不对因使用本软件而产生的任何直接、间接、附带、特殊或后果性损害承担责任,即使作者已被告知可能发生此类损害。
用户责任:您对向 USPTO 提交的所有文件及采取的所有行动的完整性与合规性负全部责任。
- 独立核验:在依赖、采取行动或向 USPTO 或任何其他实体提交之前,必须由人工彻底审查、独立核验并更正本软件中由 AI 生成或协助生成的所有输出、分析和内容。这包括事实陈述、法律主张、引文、证据支持和技术披露。
- 坦诚与诚信义务:您必须履行对 USPTO 的坦诚与诚信义务,包括披露任何重要信息(例如有关发明人身份或错误的信息),并及时更正记录中的任何不准确信息。
- 签名与认证:您必须亲自签署或在提交给 USPTO 的任何函件上署名,证明您已亲自审查其内容并进行了合理调查,具体要求见 37 CFR 11.18(b)。AI 工具无法签署文件,也无法进行所要求的人工调查。
- 保密信息:未经客户充分同意,且未明确了解底层 AI 提供商的数据处理实践,不得将机密、专有或涉及客户敏感信息的内容输入本软件的 AI 组件。您有责任防止信息被意外或未经授权地披露。
- 出口管制:在使用本工具处理敏感技术数据时,请了解并遵守所有外国申请许可和出口管制法规。
- 服务合规性:确保遵守 USPTO 的所有要求(例如 USPTO 网站的使用条款、USPTO.gov 账户政策、对自动化数据挖掘的限制)以及 Mistral 服务条款。AI 工具无法获取 USPTO.gov 账户。
- 安全性:妥善安全地处理 API 凭据和客户信息。
- 测试:投入生产使用前,请进行全面测试。
- 专业判断:本工具仅用于辅助,不能替代您自身的专业判断和专业知识。
使用本软件即表示您确认已阅读本免责声明,并同意自行承担使用本软件的风险,对所有结果以及遵守相关法律和道德义务承担全部责任。
**致法律专业人士的说明:**虽然本工具提供了法律实践中常用的专利研究工具,但它仅是一个数据检索和 AI 辅助处理系统。所有结果都需要独立核验和严格的专业分析,不能替代合格的法律顾问,也不能替代您履行 USPTO 关于 AI 使用指南中所述的个人专业判断和职责。
🔗相关链接
💝 支持本项目
如果您觉得这个 USPTO 专利档案 MCP 服务很实用,请考虑支持项目开发!这个项目是在我个人的业余时间里,耗费许多时间开发而成,旨在为专利界提供一款全面且可用于生产环境的工具。
您的支持有助于为专利界的所有人维护和改进这款开源工具。谢谢!
致谢
- 感谢 USPTO 提供 Patent File Wrapper API
- 感谢 Model Context Protocol 提供 MCP 规范
- 感谢 Claude Code 在整个项目中提供出色的开发协助、架构指导、文档编写、PowerShell 自动化、测试组织和全面的代码开发支持
- 感谢 Claude Desktop 提供额外的开发支持和测试协助
有疑问? 请参阅 INSTALL.md,获取完整的跨平台安装指南,或查看测试脚本中的可运行示例。
OAuth 登录(可选)
设置 PFW_AUTH_MODE=oauth,即可使用 Google +
Microsoft 登录(OAuth 2.1,支持动态客户端注册——可用作
Claude.ai / Claude Desktop 自定义连接器),保护 HTTP 端点。访问权限由本地
SQLite 用户列表控制;admin 角色可使用 pfw_manage_users 用户管理
工具及其 MCP App 面板。只有在设置
PFW_ENABLE_USER_MANAGEMENT=true 时才会注册此工具(默认关闭——在 STDIO 和非 OAuth HTTP
场景中,请改用 scripts/manage_mcp_users.py)。默认设置(none)和 STDIO
不受影响。完整指南:SSO_SETUP.md。
共享 USPTO 速率限制(多 MCP 部署)
如果你将全部 4 个 USPTO MCP(Citations、PFW、PTAB、FPD)作为 HTTP 容器运行在
同一台主机上,为多位用户提供服务,并且使用同一个 USPTO API 密钥,那么
每个服务各自的进程内限流器都无法看到其他 3 个进程的请求情况——而 USPTO 公布的限制是按密钥计算(突发限制为 1,根据调用类型为 4-15
次请求/秒,另有每周配额),并非按进程计算。将全部 4 个容器指向同一个绑定挂载目录,它们就会共享一个跨进程 FIFO 队列、一组有上限的在途请求槽位、一个容量为 1 的令牌桶,以及一个 429 冷却文件(cooldown.json:该密钥收到一次 429 后,所有进程在下一次发送前都必须等待 max(5 s, Retry-After)),并通过 POSIX 文件锁进行仲裁(可安全应对崩溃:进程死亡后,其锁会由内核释放)。单个 MCP 或 STDIO 部署无需任何配置;只有在设置目录变量后,限流器才会启用。
# docker-compose.yml (excerpt, all 4 USPTO MCP services)
volumes:
uspto-rate-limit: {}
services:
pfw-mcp:
volumes:
- uspto-rate-limit:/var/run/uspto-shared-rate-limit
environment:
USPTO_SHARED_RATE_LIMIT_DIR: /var/run/uspto-shared-rate-limit
USPTO_SHARED_RATE_LIMIT_RPS: "4" # default; total across ALL 4 MCPs
USPTO_SHARED_MAX_CONCURRENT: "1" # default; shared in-flight slots (USPTO burst=1)
USPTO_SHARED_MAX_WAIT_SECONDS: "45" # default; queue wait ceiling, then the
# rate-limit envelope (no retry)
所有挂载该目录的进程共享一个队列、一个令牌桶和一个并发槽位,并按请求到达顺序处理。通过代理下载 PDF 时,会在占用槽位期间从 USPTO 缓冲数据,并在向最终用户发送第一个字节之前释放槽位,因此槽位占用时间取决于 USPTO 的传输速度,而不是用户的连接速度。收到 429 时,每个 ODP 调用点都会记录共享冷却时间,然后在等待时间不超过 10 秒且符合该调用的时间预算时,在 max(5 s, Retry-After) 后重试一次;否则会返回速率限制响应体(retry_after_seconds = max(5, Retry-After))。等待时间超过上限的调用会立即返回相同的响应体(rate_limit_source: "shared_uspto_limiter")。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
