关于 Uspto Patent Trial And Appeal Board Ptab Mcp Server
面向 USPTO 专利审判和上诉委员会(PTAB)记录与文档研究的 MCP 服务,结合结构化搜索、响应长度控制、多阶段 PDF 文本提取和下载功能,适用于法律研究工作流。
主要功能
- 01搜索 PTAB 记录
- 02限制结构化响应长度
- 03三阶段 PDF 文本提取
- 04生成持久文档下载链接
- 05交互式搜索与下载视图
适用场景
- 01审查 PTAB 程序及当事方
- 02提取扫描版文件文本
- 03下载并查看案件文档
MCP 相关
向 MCP 客户端提供 USPTO PTAB 搜索和文档工具,包括文档内容提取与下载。支持 stdio 和 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
USPTO PTAB MCP 服务
面向 USPTO 专利审判与上诉委员会(PTAB)开放数据门户 API 的高性能模型上下文协议(MCP)服务,具备节省令牌的上下文缩减能力、混合文档提取功能,以及用于完整专利生命周期分析的无缝跨 MCP 集成。
📚 文档
| 文档 | 说明 |
|---|---|
| 📥 安装指南 | 使用自动化脚本进行跨平台完整设置 |
| 🔑 API 密钥指南 | 获取 USPTO 和 Mistral API 密钥的分步说明,附带截图 |
| 📖 使用示例 | 函数示例、工作流和集成模式 |
| 🎯 提示词模板 | 法律与研究工作流的高级提示词模板详细指南 |
| ⚙️ 字段自定义 | 自定义字段集以实现最佳上下文缩减的综合指南 |
| 🔒 安全指南 | 全面的安全最佳实践 |
| 🛡️ 安全扫描 | 自动检测密钥和防范提示词注入的指南 |
| 内容溯源 | 检索文本处理原则:逐字保留文档文本、标注来源、仅扫描注入内容 |
| 🧪 测试指南 | 测试套件文档和 API 密钥设置 |
| 🔄 MCP 更新指南 | 更新现有 USPTO MCP 以集成 PTAB 的说明 |
| ⚖️ 许可证 | MIT 许可证条款与条件 |
📢 重要:API 迁移更新(2026 年 1 月)
PTAB MCP 延迟发布的原因
由于 USPTO 进行了重大 API 迁移,这款 USPTO PTAB MCP 延迟发布。早期开发版本使用的是 USPTO Developer Hub API 的 PTAB 端点(developer.uspto.gov),该 API 已于 2026 年 1 月 6 日正式停用。详情请参阅官方 USPTO PTAB 迁移指南。
需要采取的操作:更新其他 USPTO MCP
如果你在 2026 年 1 月 19 日之前安装了作者的其他 USPTO MCP 服务,应更新这些服务,以利用增强的 PTAB 集成。现有 MCP 即使不更新也会继续运行,但强烈建议进行更新(尤其是 Patent File Wrapper MCP),以获得最佳的集中式代理支持,并支持涉及 PTAB 的跨 USPTO 工作流。
⚠️ 重要:如果计划安装此 PTAB MCP,强烈建议先安装 Patent File Wrapper(PFW)MCP(如果之前已安装,则先更新),再安装 PTAB。更新后的 PFW 包含必要的集中式代理增强功能,可通过 PFW 的统一代理服务下载 PTAB 文档。
📖 完整的 MCP 更新指南包含以下内容:
- 各个 MCP 的变更内容
- 分步更新说明(Git 和手动 ZIP 方法)
- 更新的好处(集中式代理、修正的工具引用)
- 常见更新问题的故障排除
🚀 FastMCP 4.0 + MCP Apps(2026 年 9 月)
此服务基于 MCP Python SDK 2.x 运行,使用 FastMCP 4.0.3(fastmcp[apps]>=4.0.3,<5.0.0),采用 MCP 协议修订版 2026-07-28,支持 MCP Apps 可视化视图、双传输模式,以及适用于浏览器的下载代理。
新增内容:
- MCP Apps 视图 — 搜索结果以交互式卡片视图呈现(类型/状态/当事方筛选器、排序、Google Patents 和 Patent Center 按钮),下载内容则显示在“最近下载”面板中。在 Claude Desktop 中通过 STDIO 运行,无需设置 HTTP。
- 持久下载链接 — 本地代理现在会生成路径中带加密令牌的链接(PTAB_LINK_TTL_DAYS,默认 1 天;PTAB_LINK_MAX_USES,默认 25 次下载)(
/download/persistent/{hash})。在任何浏览器中点击链接即可直接下载 PDF,无需请求头,也不会出现 401 错误。 - 实时下载页面 — 本地代理会提供
http://localhost:8083/downloads,这是一个列出最近生成的下载链接的浏览器页面。 - 三级文本提取:首先提取 PDF 的原生文本层(pypdf),然后对没有文本层的扫描页面使用 Mistral OCR,最后,对于较短的扫描版文件(文档页数 ≤
DOCLING_MAX_PAGES,默认 20 页),使用 Docling(一种可自托管的 OCR 后端)。长时间提取过程中会持续推送进度通知。 - HTTP 传输模式 — Docker/反向代理部署可使用
FASTMCP_TRANSPORT=http,支持X-API-KEY身份验证、修复 claude.ai 探测问题、添加安全请求头,并提供开放的/health端点。
环境变量:
| 变量 | 默认值 | 用途 |
|---|---|---|
USPTO_API_KEY | — | 必填。 USPTO ODP API 密钥 |
MISTRAL_API_KEY | unset | 可选。为没有文本层的扫描页面启用 Mistral OCR 层 |
MISTRAL_OCR_MODEL | mistral-ocr-latest | 固定使用带日期的 OCR 模型标识 |
DOCLING_SERVE_URL | unset | 可自托管的 docling-serve 实例的基础 URL;启用 Docling 提取层(例如 http://localhost:5001 或 https://your-docling-host.example.com) |
DOCLING_TIMEOUT | 300 | Docling 读取超时时间(秒) |
DOCLING_MAX_PAGES | 20 | 超过此页数时跳过 Docling(大型文档 → Mistral) |
FASTMCP_TRANSPORT | stdio | stdio(Claude Desktop)或 http(Docker/远程) |
FASTMCP_HOST | 127.0.0.1 | HTTP 绑定地址 |
FASTMCP_PORT | 8000 | HTTP 端口 — Windows 上请使用 8765(8000 常位于 Hyper-V 保留范围内) |
FASTMCP_STATELESS_HTTP | true | 无状态可流式传输 HTTP:不使用服务端会话表,每个请求都自包含。适用于不会重放 mcp-session-id 的客户端,以及负载均衡/多副本部署 |
CORS_EXTRA_ORIGIN | unset | HTTP 模式的额外 CORS 源(例如 https://claude.ai) |
INTERNAL_AUTH_SECRET | unset | HTTP 模式下必填(X-API-KEY 身份验证);也用于签署集中式代理 JWT |
ENABLE_ALWAYS_ON_PROXY | true | 在启动时启动下载代理,而非按需启动 |
PTAB_PROXY_PORT | 8083 | 本地下载代理端口 |
PTAB_PROXY_BASE_URL | unset | 外部可访问的代理基础 URL(Docker/反向代理)— 用于每个生成的下载链接 |
PROXY_ALLOWED_IPS | unset | 允许访问代理的额外客户端 IP/CIDR(Docker 子网) |
PROXY_TOKEN | auto | 用于跨进程注册的固定代理身份验证令牌 |
CENTRALIZED_PROXY_URL | unset | PFW 集中式代理的完整基础 URL(例如 Docker 中的 http://pfw:8080)— 优先于 CENTRALIZED_PROXY_PORT |
CENTRALIZED_PROXY_PORT | none | 仅指定端口的旧版 PFW 配置(localhost) |
MCP_APP_EXTRA_DOMAINS | unset | MCP App iframe 的额外 CSP 域名(逗号分隔) |
LOG_LEVEL | INFO | 日志级别。日志仅记录流程元数据(工具、请求 ID、状态、计数)— 从不记录查询文本、响应正文、OCR 文本或签名 URL |
PTAB_LOG_DIR | unset | 启用轮转文件日志(默认仅输出到 stderr) |
PTAB_LOG_MAX_BYTES | 10485760 | 文件日志轮转大小 |
PTAB_LOG_BACKUP_COUNT | 5 | 保留的轮转日志文件数 |
PTAB_ENABLE_PROMPTS | false | 注册 11 个提示词模板。默认关闭;除非设为 true,否则客户端 UI 中不会显示任何内容 |
PTAB_ENABLE_USER_MANAGEMENT | false | 注册 ptab_manage_users。默认关闭,因此默认安装会公开 14 个工具,而不是 15 个。需要 PTAB_AUTH_MODE=oauth |
PTAB_AUTH_MODE | none | none(stdio/X-API-KEY HTTP)或 oauth(OAuth 2.1 授权服务器及受保护资源,仅限 HTTP) |
PTAB_OWNER_EMAILS | unset | oauth 模式:以逗号分隔的所有者账户。设置后,只有这些账户可以拥有 ptab:admin,且只有他们可以授予管理员角色。未设置时,所有活跃名单中的管理员都保留管理员身份 |
PTAB_DATA_DIR | ~/.uspto_ptab_mcp/data | 用于持久链接和加密密钥的运行时数据目录(以 0700 模式创建) |
PTAB_LINK_TTL_DAYS | 1 | 持久下载链接的有效期(天,至少为 1) |
PTAB_LINK_MAX_USES | 25 | 持久链接允许的下载次数上限,达到后链接将被移除(0 表示不设上限) |
PTAB_CONTENT_DEADLINE_SECONDS | 85 | 每次 PTAB_get_document_content 调用的端到端时限,由下载、Mistral OCR 及其重试和 Docling 共用。未能在时限内完成的运行会返回 "Deadline exceeded" 结果 |
PTAB_OCR_DAILY_LIMIT | 500 | 每位调用者的滚动 24 小时 OCR 调用额度(0 表示禁用) |
PYPDF_MAX_PAGES | 200 | 原生文本层提取层的页数上限 |
MISTRAL_OCR_MAX_PAGES | 50 | Mistral OCR 层的页数上限 |
MISTRAL_OCR_TIMEOUT | 120.0 | Mistral OCR 请求超时时间(秒) |
USPTO_SHARED_RATE_LIMIT_DIR | unset | 为跨进程 USPTO 速率限制器提供存储的目录。未设置表示共享限制器关闭,进程内不强制执行速率限制 |
USPTO_SHARED_RATE_LIMIT_RPS | 4.0 | 共享令牌桶补充速率(仅当设置了上方目录时才读取) |
USPTO_SHARED_MAX_CONCURRENT | 1 | 共享并发槽池大小(USPTO 的突发限制为每个密钥同时处理 1 个请求) |
USPTO_SHARED_MAX_WAIT_SECONDS | 45 | 调用在共享 FIFO 队列中等待槽位和令牌的时长,超时后返回速率限制封套。任何进程遇到 429 时,都会写入共享冷却时间(上方目录中的 cooldown.json),时长为 max(5 s, Retry-After);每次获取操作都必须等待冷却结束 |
USPTO_MAX_RESPONSE_CHARS | 40000 | 结构化工具响应的字符数上限(响应大小保护) |
USPTO_MAX_CONTENT_CHARS | 120000 | 提取文档文本的字符数上限 |
USPTO_RESPONSE_BOUNDS_ENABLED | true | 响应大小保护的总开关 |
Docker 就绪性:/health 端点、FASTMCP_TRANSPORT=http、PTAB_PROXY_BASE_URL、CENTRALIZED_PROXY_URL 和 PROXY_ALLOWED_IPS 共同支持服务器通过 Docker/反向代理进行部署。Compose 文件位于独立的 uspto_docker_mcp 仓库中。 |
⚡ 快速开始
Windows 安装
以管理员身份运行 PowerShell,然后:
# Navigate to your user profile
cd $env:USERPROFILE
# If git is installed:
git clone https://github.com/john-walkoe/uspto_ptab_mcp.git
cd uspto_ptab_mcp
# If git is NOT installed:
# Download and extract the repository to C:\Users\YOUR_USERNAME\uspto_ptab_mcp
# Then navigate to the folder:
# cd C:\Users\YOUR_USERNAME\uspto_ptab_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 加密自动安全存储这些密钥
- ✅ 询问是否已安装 USPTO PFW MCP,如果已安装,则使用 USPTO PFW MCP 的默认集中式代理
- ✅ 询问是否要配置 Claude Desktop 集成
- 🔒 提供安全配置方式(推荐)或传统方式(在 MCP JSON 文件中以明文保存 API 密钥)
- ✅ 备份并自动合并现有的 Claude Desktop 配置(保留其他 MCP 服务)
- ✅ 提供安装摘要和后续步骤
Claude Desktop 配置 - 手动安装
{
"mcpServers": {
"uspto_ptab": {
"command": "uv",
"args": [
"--directory",
"C:/Users/YOUR_USERNAME/uspto_ptab_mcp",
"run",
"ptab-mcp"
],
"env": {
"USPTO_API_KEY": "your_actual_USPTO_api_key_here",
"MISTRAL_API_KEY": "your_mistral_api_key_here_OPTIONAL",
"CENTRALIZED_PROXY_PORT": "none",
"PTAB_PROXY_PORT": "8083"
}
}
}
}
代理配置说明:
- CENTRALIZED_PROXY_PORT:
- 独立使用时设置为
"none"(不推荐) - USPTO PFW MCP 已安装且 PFW 使用其本地代理的默认端口时,设置为 8080。(如果 PFW 未使用默认端口,请将此值改为对应端口)
- 独立使用时设置为
- PTAB_PROXY_PORT:本地代理端口(默认:
8083,以避免与 PFW 的8080冲突)- 仅在独立模式下使用(未检测到 PFW MCP)
- 安装 PFW MCP 后,PTAB 会自动使用 PFW 的集中式代理(端口
8080),但会在需要时回退到 PTAB 的本地代理端口 - 集中式代理的优势:所有 USPTO MCP 共用一个端口,持久链接(PFW_LINK_TTL_DAYS / PFW_LINK_MAX_USES,默认 1 天/25 次下载),统一限流
详细安装说明、手动设置和故障排除,请参阅 INSTALL.md
🔑 核心功能
- ⚙️ 用户可自定义字段 - 通过 YAML 配置字段集,无需修改代码
- 🎯 精简上下文 - 获取重点明确的响应,而非海量 API 数据(减少 80-99%)
- 📊 渐进式信息披露策略 - 最简发现 → 均衡分析 → 文档提取
- 🔍 三种数据类型 - 为 Trials(IPR/PGR/CBM)、Appeals(Ex Parte)和 Interferences 提供专用搜索工具
- 🆕 工具搜索优化 - 服务指令引导 Claude 按需高效发现工具;启用工具搜索后,上下文窗口用量可减少 70-85%(测试版功能)
- ✨ 智能文档提取 - 自动优化的混合提取(PyPDF2 → Mistral OCR 备用方案),并支持安全的浏览器下载
- 🆕 集中式代理集成 - 自动检测 PFW MCP,并使用统一代理(端口 8080)提供持久链接和跨 MCP 下载
- 🌐 安全的浏览器下载 - 点击代理 URL 直接下载 PDF,同时确保 API 密钥安全
- 📁 优化的文件名 - 采用包含审判元数据的专业格式:
PTAB-2024-08-23_IPR2024-01353_PAT-7883848_FINAL_WRITTEN_DECISION.pdf - 👁️ 高级 OCR 功能 - 必要时使用 Mistral OCR 从扫描版 PDF 中提取文本,供大模型使用
- 🔐 安全存储 API 密钥 - 可选的 Windows DPAPI 加密,确保 API 密钥安全(配置文件中不存储明文)
- 🚀 高性能 - 支持指数退避重试逻辑,并遵守速率限制
- 🛡️ 可用于生产环境 - 增强的错误处理、自动日志脱敏、带安全文件权限的持久审计跟踪
- 🔒 企业级安全 - SafeLogger 自动屏蔽敏感数据,支持基于文件的日志记录(10MB 轮转),并提供独立的安全日志以满足合规要求
- 💻 跨平台 - 在 Linux 和 Windows 上均可无缝运行
- 📋 完整的 API 覆盖 - 支持 USPTO PTAB Open Data Portal 的所有端点
- 🔗 跨 MCP 集成 - 与 Patent File Wrapper、FPD、Citations 和 Pinecone MCP 无缝集成,支持完整的生命周期分析
工作流设计 - 几乎无需用户引导,全部由大模型完成
用户请求示例:
- “查找 Apple Inc 在 2024 年提交的所有 IPR 程序”
- “显示专利 7883848 的最终书面决定”
- “获取 IPR2024-01353 的立案决定”
- “研究这家公司的 PTAB 挑战记录,并与审查历史相关联” - * 需要安装 USPTO Patent File Wrapper (PFW) - uspto_pfw_mcp,并建议在此操作或任何跨 MCP 提示词之前,让大模型调用 PTAB_get_guidance 工具(请参阅快速参考表,了解章节选择;更多详情见 Usage Examples)
- “分析这一技术领域的 IPR 成功率和引证模式”
大模型执行以下步骤:
步骤 1:发现(精简) → 步骤 2:筛选与分析(均衡 - 可选) → 步骤 3:详细审理审查 → 步骤 4(可选):选择要审查的具体审理文件 → 步骤 5(可选):从文件列表中获取 document_id(s) → 步骤 6(可选):提取文件供大模型使用和/或获取 PDF 下载链接供用户使用
字段配置支持优化的研究流程:
- 发现(精简) 可高效返回 50-100 个审理案例,避免文件过多
- 筛选与分析(均衡 - 可选):根据检索结果筛选可能相关的审理案例。在高级工作流和/或与 Patent File Wrapper 或 FPD 的跨 MCP 工作流中,如有需要,可执行可选的均衡搜索
- 详细审理审查:通过
PTAB_search_trials_complete获取所选审理案例的完整结构化数据,供大模型分析使用 - 选择要审查的具体审理文件(可选),例如最终书面决定、立案决定、申请书
- 从文件列表中获取 document_id(s)(可选):使用
PTAB_get_documents获取 document_id(s) - 提取文件供大模型使用和/或获取下载链接(可选):通过智能混合工具提取文件,该工具会自动优化质量;下载 PDF 文件时使用 HTTP 代理提供的 URL,以避免 USPTO API 密钥出现在聊天记录中
🎯 提示词模板
此 MCP 服务包含先进的 AI 优化提示词模板,用于处理复杂的 PTAB 工作流。提示词注册由服务端选择启用:除非使用 PTAB_ENABLE_PROMPTS=true 启动服务,否则不会注册提示词。有关所有模板、功能和使用示例的详细文档,请参阅 PROMPTS.md。
快速查看模板
| 类别 | 模板 | 用途 |
|---|---|---|
| 法律分析 | /trial_precedent_research、/ipr_challenge_defense_PFW、/portfolio_ptab_risk_assessment_PFW_FPD | 诉讼研究、防御策略、投资组合风险评估 |
| 研究与审查 | /prior_art_board_decision_mining、/ptab_prior_art_validation_PFW_CITATIONS、/technology_landscape_ptab_analysis_PFW | 现有技术研究、审查员引证验证、竞争情报 |
| 文件管理 | /complete_trial_litigation_package、/trial_timeline_analysis、/complete_prosecution_lifecycle_PFW_FPD_CITATIONS | 有序检索、时间线分析、全面的生命周期工作流 |
所有模板的主要功能:
- 增强型输入处理 - 支持灵活的标识符(审理编号、专利编号、当事方名称)
- 智能验证 - 自动检测格式并提供指引
- 跨 MCP 集成 - 与 PFW、FPD、Citations 和 Pinecone MCP 无缝协作
- 上下文优化 - 通过渐进式披露减少令牌用量
📊 可用函数
搜索函数(9 个专用工具 - 每种数据类型 3 个)
审判搜索工具(IPR、PGR、CBM)
| 功能(显示名称) | 上下文缩减 | 使用场景 |
|---|---|---|
PTAB_search_trials_minimal(最简搜索审判) | 通常为 95-99% | 超快速发现审判(用户可自定义最简字段) |
PTAB_search_trials_balanced(均衡搜索审判) | 通常为 85-95% | 全面分析审判(不包含 documentBag) |
PTAB_search_trials_complete(完整搜索审判) | 通常为 80-90% | 获取完整审判数据以进行详细审查 |
上诉搜索工具(单方上诉)
| 功能(显示名称) | 上下文缩减 | 使用场景 |
|---|---|---|
PTAB_search_appeals_minimal(最简搜索上诉) | 通常为 95-99% | 超快速发现上诉(用户可自定义最简字段) |
PTAB_search_appeals_balanced(均衡搜索上诉) | 通常为 85-95% | 全面分析上诉(不包含 documentBag) |
PTAB_search_appeals_complete(完整搜索上诉) | 通常为 80-90% | 获取完整上诉数据以进行详细审查 |
干涉程序搜索工具
| 功能(显示名称) | 上下文缩减 | 使用场景 |
|---|---|---|
PTAB_search_interferences_minimal(最简搜索干涉程序) | 通常为 95-99% | 超快速发现干涉程序(用户可自定义最简字段) |
PTAB_search_interferences_balanced(均衡搜索干涉程序) | 通常为 85-95% | 全面分析干涉程序(不包含 documentBag) |
PTAB_search_interferences_complete(完整搜索干涉程序) | 通常为 80-90% | 获取完整干涉程序数据以进行详细审查 |
搜索策略
专项搜索策略
- IPR/PGR/CBM 分析 - 使用
search_trials_*工具分析双方复审、授权后复审和商业方法涵盖程序 - 单方上诉分析 - 使用
search_appeals_*工具研究 PTAB 上诉裁决和审查员撤销决定的模式 - 干涉程序 - 使用
search_interferences_*工具分析发明人之间的优先权争议 - 跨 MCP 集成 - 使用
applicationNumberText和专利号,将 PTAB 数据与 PFW 审查历史关联起来 - 风险信号识别 - 重点关注立案决定、最终书面决定和和解模式,以评估诉讼风险
查询示例
# Find IPR proceedings for specific patent
PTAB_search_trials_minimal(
patent_number="7883848",
trial_type="IPR",
limit=50
)
# Technology area IPR analysis
PTAB_search_trials_balanced(
petitioner_name="Apple Inc",
filing_date_from="2020-01-01",
filing_date_to="2024-12-31",
limit=100
)
# Cross-MCP workflow example
# 1. Find patents with PFW
# 2. Check PTAB challenge history
PTAB_search_trials_minimal(
patent_number=patent_from_pfw,
limit=20
)
文档处理函数
| 功能(显示名称) | 用途 | 要求 |
|---|---|---|
PTAB_get_documents(获取审判文件) | 通过分页、排序和筛选,完整访问任意 PTAB 程序的案卷。审判使用 POST 搜索端点(返回真实计数和 next_offset);上诉和干涉程序使用 GET。 | USPTO_API_KEY |
PTAB_get_document_content(PTAB 获取文档内容) | 智能混合式文档提取(PyPDF2 + OCR) | USPTO_API_KEY(OCR 回退时还需 MISTRAL_API_KEY) |
PTAB_get_document_download(PTAB 获取文档下载) | 提供可通过浏览器访问的安全下载 URL,并使用增强型文件名 | USPTO_API_KEY |
文档处理能力
- 文档列表层(
PTAB_get_documents):全面访问所有 PTAB 程序类型的案卷- 支持通用标识符 - 适用于审判编号、上诉编号和干涉编号
identifier_type参数 - 指定 "trial"、"appeal" 或 "interference",以正确路由- 审判案件支持完整分页 - 使用 POST 搜索端点(
trials/documents/search);返回真实的total_documents数量(例如,涉诉频繁的 IPR 有 105 份文档)和next_offset提示。旧版 GET 端点会在不提示的情况下将文档数限制为 25 份。 offset+limit参数 - 浏览完整案卷:offset=0, limit=25→ 前 25 份;offset=25, limit=25→ 接下来的 25 份,依此类推。sort_order参数 -"asc"按时间正序排列(请求书、POPR、早期证据);"desc"(默认值)按时间倒序排列(FWD、答复意见、听证会文字记录)document_title筛选条件 - 对documentTypeDescriptionText进行不区分大小写的子串匹配(例如,document_title='Final Written Decision'、document_title='Patent Owner Response')。匹配描述字段,而非标题字段。document_category筛选条件 - 粗略的类别筛选:PETITION、RESPONSE、ORDER、DECISION、MOTION、FINALfiling_party筛选条件 - 按 BOARD、PETITIONER 或 PATENT OWNER 筛选- 针对大模型优化的解析 - 提取文档 ID、描述、提交日期和提交方
- 已知的 API 限制 - 在部分程序中,搜索端点可能无法索引请求书(Paper 1)和立案决定。如果遍历所有结果分页后仍缺少关键的早期文档,请使用审判 ZIP 下载(可通过
PTAB_search_trials_balanced→fileDownloadURI获取),其中包含完整案卷。
- 智能提取层(
PTAB_get_document_content):混合式自动优化提取- 智能方法选择 - 自动优先尝试 PyPDF2;需要时回退到 Mistral OCR(需要 API 密钥)
- 高效使用 OCR - 仅当 PyPDF2 提取未通过质量检查时才运行 OCR
- 质量检测 - 自动判断提取结果是否可用,或是否需要 OCR
- 透明报告 - 显示所用的提取方法
- 统一接口 - 单个工具即可处理所有 PTAB 文档类型(避免工具混淆)
- 高级功能 - 使用 Mistral OCR 从扫描文档中提取文本
- 来源标注 - 每条响应都带有
provenance_note,将提取的文本标记为引用的文档数据(而非指令);当文本呈现注入特征时,检测专用扫描还会添加injection_scan标注(仅包含类型标签,并以文档 ID 为键)——文本内容正常时不包含此键,且始终原样返回文本。请参阅 docs/CONTENT_PROVENANCE.md
- 浏览器下载层(
PTAB_get_document_download):通过安全代理下载,并提供增强文件名- 可在任何浏览器中直接使用的点击下载 URL
- 集中式代理集成 - 如果已设置,会自动检测 PFW MCP,并使用统一代理(端口 8080)下载所有 USPTO 文档;如果检测到集中式代理存在问题,则回退到本地代理。
- 持久链接 - 使用 PFW 集中式代理时提供加密链接(
PFW_LINK_TTL_DAYS/PFW_LINK_MAX_USES,默认为 1 天 / 25 次下载;MCP 重启后仍可使用) - 统一架构 - 安装 PFW 后,所有 USPTO MCP 共用单个 HTTP 代理(端口 8080)
- 独立运行时回退方案 - 未检测到 PFW 时使用本地代理(端口 8083)
- 持久链接 - 使用 PFW 集中式代理时提供加密链接(
- 增强文件名 - 采用专业格式,并包含审判案件元数据
- 格式:
PTAB-2024-08-23_IPR2024-01353_PAT-7883848_FINAL_WRITTEN_DECISION.pdf - 按审判案件提交日期进行时间顺序排序
- 便于专利律师和文件管理即时了解上下文
- 格式:
- API 密钥安全 - USPTO 凭据不会暴露在聊天记录或浏览器中
- 遵守速率限制 - 自动遵守 USPTO 的下载限制
LLM 指引功能
| 功能(显示名称) | 用途 | 要求 |
|---|---|---|
PTAB_get_guidance (PTAB get guidance) | 按需获取指引章节,节省上下文(减少 95-99% 的令牌用量) | 无 |
高效利用上下文的指引系统
新增:PTAB_get_guidance 工具 —— 通过按需获取指引章节,解决 MCP 资源的可见性问题:
🎯 快速参考表 —— 准确了解要调用哪个章节:
- 🔍“按公司/专利/日期查找审判” →
PTAB_get_guidance("tools") - 📄“下载审判文件” →
PTAB_get_guidance("documents") - 🔖“了解审判类型(IPR/PGR/CBM)” →
PTAB_get_guidance("tools") - 🤝“将审判与审查过程关联起来” →
PTAB_get_guidance("workflows_pfw") - 🚩“FPD 申请书 + PTAB 模式” →
PTAB_get_guidance("workflows_fpd") - 📊“引文质量 + PTAB 关联分析” →
PTAB_get_guidance("workflows_citations") - 🧠“与助手一起研究 MPEP 指引” →
PTAB_get_guidance("workflows_pinecone") - 🏢“完整的专利组合尽职调查” →
PTAB_get_guidance("workflows_complete") - ⚙️“渐进式披露策略” →
PTAB_get_guidance("tools") - 📉“减少工作流的令牌占用” →
PTAB_get_guidance("cost") - 📏“响应大小预算和分页标记是什么?” →
PTAB_get_guidance("limits")
该工具提供具体的工作流、字段建议、API 调用优化策略、应避免的反模式,以及 MCP 之间的集成模式,以实现最高效率。cost 章节讲的是令牌占用,而非金钱。详细示例和集成工作流请参阅 USAGE_EXAMPLES.md。
实用功能
| 功能(显示名称) | 用途 | 要求 |
|---|---|---|
PTAB_get_field_configs (Get field configs) | 查看当前 YAML 字段配置 | 无 |
管理功能(可选)
| 功能 | 用途 | 要求 |
|---|---|---|
ptab_manage_users | 管理 OAuth 部署的注册用户 | 需通过 PTAB_ENABLE_USER_MANAGEMENT=true 启用注册(默认关闭);在 OAuth 模式下还需要 ptab:admin 作用域 |
💻 使用示例与集成工作流
全面的使用示例包括:
- 审判检索(专利号、请求人名称、申请日期)
- 上诉分析(技术组、技术中心、裁决结果)
- 干涉程序(当事方分析、优先权争议)
- 高级文件筛选(文件类型、按需下载)
- 跨 MCP 集成工作流(PTAB + PFW + FPD + Citations + Pinecone)
- 完整生命周期尽职调查示例
- 诉讼研究模式
- IPR 成功率分析
- 上下文缩减策略(在最简、均衡和完整层级之间进行渐进式披露)
请参阅详细文档 USAGE_EXAMPLES.md。
🔧 字段自定义
此 MCP 服务支持通过 YAML 配置自定义字段集,以优化上下文缩减。无需更改任何代码即可修改字段集!
全面的字段自定义文档请参阅 CUSTOMIZATION.md。
快速入门
- 在项目根目录中编辑
field_configs.yaml - 移除
#符号,取消注释所需字段 - 保存并重启 Claude Desktop——更改将在重启后生效
可用字段集
三种数据类型,支持渐进式披露:
- 审判(IPR/PGR/CBM):最简(12 个字段)→ 均衡(30-50 个)→ 完整(全部)
- 上诉(单方程序):最简(9 个字段)→ 均衡(25-40 个)→ 完整(全部)
- 干涉程序:最简(6 个字段)→ 均衡(20-30 个)→ 完整(全部)
示例:诉讼研究字段集
trials_minimal:
fields:
- trialNumber # IPR2024-01353
- patentOwnerData.applicationNumberText # → PFW integration
- patentOwnerData.patentNumber # Patent number
- regularPetitionerData.realPartyInInterestName # Petitioner
- trialMetaData.trialStatusCategory # Status
请参阅 CUSTOMIZATION.md,了解:
- 所有数据类型的完整字段参考
- 减少 Token 的策略
- 跨 MCP 集成模式
- 自定义字段集示例
- 故障排除指南
🔗 跨 MCP 集成
此 MCP 专为与其他 USPTO MCP 和知识库无缝协作而设计,可全面分析专利生命周期:
相关 USPTO MCP 服务
| MCP 服务 | 用途 | GitHub 仓库 |
|---|---|---|
| USPTO Patent File Wrapper (PFW) | 审查历史和文件 | uspto_pfw_mcp |
| USPTO Final Petition Decisions (FPD) | 审查过程中的请愿决定 | uspto_fpd_mcp |
| USPTO Enriched Citation | 从 2017 年 10 月至今寄出的 Office Actions 中提取的 AI 引证情报 | uspto_enriched_citation_mcp |
| Pinecone Assistant MCP | 提供 AI 聊天和引证功能的专利法知识库(MPEP、审查指南)——1 个 API 密钥,免费额度有限 | pinecone_assistant_mcp |
| Pinecone RAG MCP | 使用自定义嵌入的专利法知识库(MPEP、审查指南)——需要 Pinecone 和嵌入模型,免费额度每月重置 | pinecone_rag_mcp |
集成概览
Patent Trial and Appeal Board (PTAB) MCP 可访问授权后程序和上诉决定,追踪专利授权后的挑战。与其他 MCP 配合使用时,可实现:
- PTAB + PFW:将 PTAB 程序与审查历史交叉比对,用于诉讼研究
- PTAB + FPD:关联请愿中的风险信号与授权后挑战模式
- PTAB + Citations:分析后来在 PTAB 遭遇挑战的专利中的审查员引证质量
- PTAB + Pinecone(Assistant 或 RAG):在提取完整 PTAB 文件文本前,研究 MPEP 指南和法律标准
- PFW + FPD + PTAB:完整追踪专利从申请到授权后挑战的生命周期
- PFW + FPD + PTAB + Citations:全面尽职调查,涵盖审查、请愿、引证和挑战
关键集成模式
交叉引用字段:
patentOwnerData.applicationNumberText- 将 PTAB 程序关联到 PFW 审查的主键patentOwnerData.patentNumber- 将专利号关联到 Citations 和其他 MCP 的字段patentOwnerData.groupArtUnitNumber- 跨所有 MCP 的技术组分析regularPetitionerData.realPartyInInterestName- 跨 MCP 的当事人匹配patentOwnerData.technologyCenterNumber- 技术分类分析
渐进式工作流:
- 发现(PTAB):使用最少的搜索条件查找相关 IPR/PGR/CBM 程序
- 审查背景(PFW):将遭遇挑战的专利与审查历史交叉比对
- 引证情报(Citations):分析遭遇挑战的专利的审查员引证质量(仅限 2017 年 10 月及以后)
- 请愿核查(FPD):查看审查程序历史中的风险信号
- 知识研究(Pinecone):如有可用资源,研究 MPEP 指南(Assistant MCP:
assistant_context/ RAG MCP:semantic_search) - 文件分析(PTAB):提取特定 PTAB 文件,了解委员会的推理
- 风险评分:根据 PTAB 模式、审查质量和引证分析,量化专利的脆弱性
详细的集成工作流、交叉引用示例和完整用例,请参阅 USAGE_EXAMPLES.md。
🆕 集中式代理集成(PFW + PTAB)
安装了 PFW 和 PTAB MCP 后,PTAB 会自动与 PFW 的集中式代理集成,实现统一的文档管理:
架构优势:
- 单一端口 - 一个 HTTP 服务(端口 8080)用于下载所有 USPTO 文档
- 持久链接 - 通过 PFW 的链接存储提供加密链接(PFW_LINK_TTL_DAYS / PFW_LINK_MAX_USES,默认有效期为 1 天 / 最多下载 25 次;MCP 重启后仍然有效)
- 统一速率限制 - 所有 MCP 共享 USPTO 限制
- 跨 MCP 缓存 - PFW 缓存来自所有 USPTO MCP 的文档,加快访问速度
- 自动检测 - PTAB 会在启动时检测 PFW,并切换到集中式模式
工作原理:
- PTAB 从 USPTO API 响应中提取 PDF 下载 URL
- PTAB 生成增强文件名:
PTAB-{date}_{trial}_{patent}_{description}.pdf - PTAB 向 PFW 注册文档:
POST {CENTRALIZED_PROXY_URL}/register-ptab-document(通过 JWT 进行身份验证,包含增强文件名) - PFW 将元数据存储在数据库中(trial_number、download_url、api_key、enhanced_filename)
- PTAB 返回 PFW 签发的下载链接
- 用户点击链接 → PFW 从 USPTO 获取文档 → 使用增强文件名传输 PDF
- 链接在 PFW_LINK_TTL_DAYS 指定的期限内(默认为 1 天)持续有效,并且 MCP 重启后仍然有效
配置 PFW 地址: 将 CENTRALIZED_PROXY_URL 设置为 PFW 的代理基础 URL — 单机环境使用 http://localhost:8080,Docker 容器之间使用 http://pfw:8080,反向代理后方使用外部 HTTPS 基础 URL。(旧版 CENTRALIZED_PROXY_PORT 在 localhost 环境中仍然可用。)跨主机注册时,PFW 的 PROXY_ALLOWED_IPS 必须允许 PTAB 的源 IP。
独立模式:
- 未安装 PFW 时:PTAB 的本地代理(端口 8083)会签发自己的持久链接(PTAB_LINK_TTL_DAYS,默认有效期为 1 天;PTAB_LINK_MAX_USES,默认最多下载 25 次)(
/download/persistent/{hash})— 使用 SQLite 加密存储,可在浏览器中安全使用,且代理重启后仍然有效 - 增强文件名仍然可用(本地使用相同的生成逻辑)
- 优雅回退机制确保 PTAB 可独立运行,并提供完整的下载功能
📈 性能对比
| 方法 | 响应大小 | 上下文用量 | 功能 |
|---|---|---|---|
| Direct curl | ~200KB+ | 高 | 原始 API 访问 |
| MCP Balanced | ~30KB | 中 | 用于分析的关键字段 |
| MCP Minimal | ~5KB | 很低 | 仅包含必要数据 |
| Custom Fields | ~2KB | 极低 | 仅包含 2–3 个字段(减少 99%) |
🧪 测试
端到端手动测试套件(从这里开始)
tests/TEST_SUITE.md:通过 Claude Desktop 对接实时 USPTO API,测试默认注册的 14 个工具,共 18 项测试,涵盖 MCP Apps 视图、持久下载链接、下载页面、提取层级和 HTTP 传输模式。任何重大变更后都应运行此测试套件。
自动化开发者测试
# Full pytest suite — hermetic by default: no API key or network needed
# (tests marked @pytest.mark.network auto-skip unless PTAB_RUN_NETWORK_TESTS=1)
uv run pytest
# test_deployment bash-helper tests need bash on PATH
配置文件:
-
pyproject.toml(
[tool.pytest.ini_options]):配置 pytest 以运行异步测试- 启用
asyncio_mode = "auto",便于无缝测试 async/await - 注册
network标记,用于实时 API 测试
- 启用
-
.pre-commit-config.yaml:用于安全检查的 Git pre-commit 钩子
- 每次提交前运行
detect-secrets和提示词注入扫描 - 防止意外提交 API 密钥
- 使用以下命令安装:
uv run pre-commit install
- 每次提交前运行
完整测试指南请参阅 tests/README.md。
📁 项目结构
uspto_ptab_mcp/
├── field_configs.yaml # Root-level field customization (YAML)
├── .pre-commit-config.yaml # Pre-commit hooks for security scanning
├── .secrets.baseline # Baseline file for detect-secrets (tracks known secrets)
├── .prompt_injections.baseline # Baseline file for prompt injection detection
├── src/
│ └── ptab_mcp/
│ ├── main.py # Composition root: FastMCP server, instructions, tool registration
│ ├── runtime.py # Settings/logging/keys and service singletons
│ ├── server_bootstrap.py # Server/proxy startup (stdio, HTTP, hybrid)
│ ├── middleware.py # HTTP auth + security-header middleware
│ ├── __main__.py # Entry point for -m execution
│ ├── app_uris.py # MCP App resource URIs
│ ├── shared_secure_storage.py # Secure API key storage (DPAPI/chmod 600)
│ ├── tools/ # The 15 MCP tools (14 register by default)
│ │ ├── trials.py # PTAB_search_trials_minimal/balanced/complete
│ │ ├── appeals.py # PTAB_search_appeals_minimal/balanced/complete
│ │ ├── interferences.py # PTAB_search_interferences_minimal/balanced/complete
│ │ ├── documents.py # PTAB_get_documents/download/content (+ extraction tiers)
│ │ ├── guidance.py # PTAB_get_guidance, PTAB_get_field_configs
│ │ └── admin.py # ptab_manage_users (registration-gated)
│ ├── auth/ # Optional OAuth 2.1 sign-in (PTAB_AUTH_MODE=oauth)
│ ├── config/
│ │ ├── field_manager.py # YAML field configuration management
│ │ ├── settings.py # Environment configuration
│ │ ├── tool_reflections.py # Sectioned LLM guidance (10 sections, 95-99% token reduction)
│ │ ├── api_constants.py # API configuration constants (official USPTO rate limits)
│ │ ├── filter_field_mapping.py # Field mapping for search filters
│ │ ├── log_config.py # Logging configuration (SanitizingFilter on every handler)
│ │ └── storage_paths.py # File storage path utilities
│ ├── prompts/ # 11 AI-optimized prompt templates
│ ├── api/
│ │ ├── ptab_client.py # PTAB API client (ODP API integration)
│ │ ├── proceedings.py # Trial/appeal/interference adapters
│ │ ├── docling_client.py # Docling OCR client (self-hosted tier)
│ │ └── field_constants.py # Field name constants
│ ├── proxy/
│ │ ├── server.py # HTTP proxy for secure downloads
│ │ ├── rate_limiter.py # USPTO rate limiting compliance
│ │ ├── secure_link_cache.py # Persistent download links
│ │ ├── centralized_integration.py # PFW proxy integration
│ │ └── models.py # Pydantic models for proxy
│ ├── shared/
│ │ ├── error_utils.py # Error handling utilities
│ │ ├── circuit_breaker.py # Circuit breaker pattern
│ │ ├── internal_auth.py # Internal authentication (JWT)
│ │ ├── injection_scan.py # Detection-only scanner + provenance note for retrieved text
│ │ ├── dpapi_crypto.py # Windows DPAPI encryption
│ │ ├── cache.py # Caching utilities
│ │ ├── log_sanitizer.py # Log sanitization (API key masking)
│ │ ├── safe_logger.py # SafeLogger wrapper (auto-sanitization)
│ │ └── uspto_shared_rate_limiter.py # Cross-process USPTO rate limiter
│ ├── services/
│ │ └── ocr_service.py # OCR quality detection and processing
│ ├── ui/ # MCP App HTML views (search results, downloads, user management)
│ ├── validation/
│ │ └── validators.py # Input validation functions
│ └── util/
│ ├── response_formatter.py # Response formatting
│ ├── search_runner.py # Shared search execution path
│ ├── identity.py # Authenticated-identity helpers
│ ├── database.py # SQLite helpers
│ └── filter_builder.py # Search filter construction
├── deploy/
│ ├── linux_setup.sh # Linux deployment script (chmod 600 security)
│ ├── windows_setup.ps1 # PowerShell deployment script (DPAPI)
│ ├── manage_api_keys.ps1 # API key management utilities
│ ├── Validation-Helpers.psm1 # PowerShell validation module
│ ├── validation-helpers.sh # Bash validation helpers
│ ├── merge_ptab_to_claude_json.py # Claude Code config merger (Python)
│ └── quick_merge_claude_config.sh # Claude Code config merger (Bash wrapper)
├── docs/
│ └── CONTENT_PROVENANCE.md # Retrieved-text handling posture (security questionnaire answer)
├── tests/ # Hermetic pytest suite + manual end-to-end guide
│ ├── conftest.py # Network-test auto-skip gate + shared mock fixtures
│ ├── TEST_SUITE.md # Manual end-to-end suite (live API via Claude Desktop)
│ └── README.md # Testing documentation
├── .security/ # Commit-time security scanning tools
│ ├── check_prompt_injections.py # Prompt injection detector
│ ├── ptab_prompt_injection_detector.py # Detection engine
│ ├── test_benign.txt # Test benign inputs
│ ├── test_malicious.txt # Test malicious inputs
│ ├── VALIDATION_REPORT.md # Security validation results
│ └── README.md # Security tools documentation
├── reference/
│ ├── PTAB_swagger.yaml # API specification
│ ├── PTAB-to-ODP-PTAB-API-Mapping.txt # Legacy API mapping
│ └── Document_Descriptions_List.csv # Document type reference
├── documentation_photos/ # Visual documentation
├── pyproject.toml # Package configuration (incl. pytest + ruff config)
├── uv.lock # uv lockfile
├── README.md # This file
├── INSTALL.md # Comprehensive installation guide
├── CUSTOMIZATION.md # Field customization guide
├── USAGE_EXAMPLES.md # Function examples and workflows
├── PROMPTS.md # Prompt templates documentation
├── API_KEY_GUIDE.md # API key setup guide
├── SSO_SETUP.md # OAuth sign-in setup walkthrough
├── SECURITY_GUIDELINES.md # Security best practices
├── SECURITY_SCANNING.md # Automated secret detection guide
└── LICENSE # MIT License
Runtime Generated Files (not in repo):
~/.uspto_ptab_mcp/
├── logs/
│ ├── ptab_mcp.log # Application logs (10MB rotation, 5 backups)
│ └── security.log # Security events (10MB rotation, 10 backups)
├── .uspto_api_key # Encrypted USPTO API key (DPAPI/chmod 600)
├── .mistral_api_key # Encrypted Mistral API key (DPAPI/chmod 600)
└── .uspto_internal_auth_secret # Internal auth secret (shared across MCPs)
🔍 故障排除
常见问题
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前缀
字段未返回数据
- 原因: YAML 配置中未包含该字段名称
- 解决方案: 编辑
field_configs.yaml,添加所需字段
身份验证错误
- 原因: API 密钥缺失或无效
- 解决方案: 检查
USPTO_API_KEY环境变量或 Claude Desktop 配置 - API 密钥来源: 从 USPTO Open Data Portal 获取免费 API 密钥
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_ptab_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 (if any)
Remove-Item ./proxy_documents.db -Force -ErrorAction SilentlyContinue
Remove-Item ./ptab_links.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_ptab_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_documents.db ptab_links.db
# Run setup script again
./deploy/linux_setup.sh
获取帮助
- 查看测试脚本中的可用示例
- 查看
field_configs.yaml中的字段配置 - 检查 Claude Desktop 配置是否与 INSTALL.md 中提供的模板一致
- 使用
PTAB_get_guidance获取特定工作流的指导
🛡️ 安全性与生产就绪性
增强的错误处理
- 带指数退避的重试逻辑 - 自动重试临时故障(共 3 次,间隔为 1 秒、2 秒、4 秒)
- 智能重试策略 - 不重试身份验证错误或客户端错误(4xx)
- 结构化日志记录 - 跟踪请求 ID,便于调试和监控
- 生产级韧性 - 妥善处理超时、网络问题和 API 速率限制
- 可配置超时 - 使用 USPTO_TIMEOUT 和 USPTO_DOWNLOAD_TIMEOUT 环境变量调整 API 请求
安全功能
- 🔐 Windows DPAPI 安全存储 - 使用 Windows 数据保护 API 加密 API 密钥(用户专属加密)
- 环境变量 API 密钥 - 代码库中不硬编码任何凭据
- 零明文 API 密钥 - 安全存储选项可避免将 API 密钥写入 Claude Desktop 配置文件
- 跨平台安全性 - 在非 Windows 系统上自动回退到环境变量
- 安全测试模式 - 测试文件使用带回退机制的环境变量
- 全面的 .gitignore - 防止意外提交凭据
- 安全指南 - 提供安全开发实践的完整文档
- 自动化机密扫描 - GitHub Actions 工作流可防止 API 密钥泄漏(detect-secrets)
- 检测 20 多种机密类型 - 包括 AWS 密钥、GitHub 令牌、JWT、私钥、API 密钥等
- 提示词注入检测 - 通过 70 多种模式检测机制防范针对 AI 的攻击
- 基线管理 - 两套基线系统(机密与提示词注入)会跟踪已知发现,同时捕获真实威胁
- 字段名称常量 - 消除魔法字符串,减少由拼写错误导致的安全问题
内容来源标注与检索文本处理方式
PTAB 文档由当事方起草,属于诉讼主张材料:请愿书、陈述书和证据附件中可能包含当事方提交的任何文本。因此,检索到的文档文本会原样提供(不会删除或改写任何内容——原文保真就是产品的核心),并通过标注加检测的方式处理:
- 来源标注 -
PTAB_get_document_content响应包含provenance_note,说明提取的文本是引用的文档数据,而非指令;服务指令会引导使用该文本的模型报告其中类似指令的内容,而不是照做 - 仅进行检测的注入扫描 - 在工具调用时扫描提取的文本,检测符合注入特征的内容(指令覆盖、提示词提取、编码规避、不可见 Unicode 隐写密度)。命中时会添加
injection_scan注释,其中包含按文档 ID 关联的类型标签——绝不包含匹配到的文本;文本未发现问题时则完全不包含该键(src/ptab_mcp/shared/injection_scan.py) - 尽量减少内容的日志记录 - 日志仅记录流程元数据;扫描结果仅包含类型标签,可安全转发,不会将文档内容写入日志
完整说明:docs/CONTENT_PROVENANCE.md
请求跟踪与调试
所有 API 请求都包含唯一请求 ID(8 位 UUID),用于关联请求:
[a1b2c3d4] Starting POST request to trials/proceedings/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 PTAB MCP 服务很有用,请考虑支持其开发!这个项目是我利用个人时间,经过数小时开发而成,旨在为专利界提供一款全面且可用于生产环境的工具。
您的支持有助于为专利界的所有人维护和改进这款开源工具。谢谢!
致谢
- 感谢 USPTO 提供 PTAB Open Data Portal API
- 感谢 Model Context Protocol 提供 MCP 规范
- 感谢 Claude Code 在整个项目中提供出色的开发协助、架构指导、文档编写、PowerShell 自动化、测试组织和全面的代码开发支持
- 感谢 Claude Desktop 提供额外的开发支持和测试协助
有疑问? 请参阅 INSTALL.md,了解完整的跨平台安装指南;也可查看测试脚本中的可运行示例。
共享 USPTO 速率限制(多 MCP 部署)
如果你在同一台机器上将全部 4 个 USPTO MCP(Citations、PFW、PTAB、FPD)作为 HTTP 容器运行,为多个用户提供服务,并使用同一个 USPTO API 密钥,那么每个服务自身进程内的限流器都无法获知其他 3 个进程的操作情况。而 USPTO 公布的限制是按密钥计算的(突发请求数为 1,具体取决于调用类型,为 4-15 req/sec;此外还有每周配额,并且收到 429 后 5 s 内不得重试),而非按进程计算。将全部 4 个容器指向同一个绑定挂载目录,它们便可共享一个跨进程 FIFO 队列、一组有界的在途请求槽位、一个容量为 1 的令牌桶和 429 冷却机制,并通过 POSIX 文件锁进行协调(可安全处理崩溃——进程终止后,其锁会由内核释放)。单个 MCP 或 STDIO 部署无需进行任何配置;只有设置目录变量后,限流器才会启用。
# docker-compose.yml (excerpt, all 4 USPTO MCP services)
volumes:
uspto-rate-limit: {}
services:
ptab-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 (burst=1 per key)
USPTO_SHARED_MAX_WAIT_SECONDS: "45" # default; queue wait ceiling
每个挂载该目录的进程都会共享一个队列、一个令牌桶和一个并发槽位。等待请求按到达顺序处理;如果调用无法在等待上限内获得槽位,就会立即返回速率限制响应(rate_limited: true、retry_after_seconds)。先获取槽位,再获取令牌,因此对该密钥的两次连续发送之间始终至少间隔 1/RPS。任一进程收到 429 后都会写入 cooldown.json(时长为 max(5 s, Retry-After)),所有进程都会等待冷却结束;收到 429 的调用会在等待结束后重试一次(如果等待时间不超过 10 s),否则返回响应。下载代理会在占用槽位期间从 USPTO 缓冲 PDF(大小受 PTAB_MAX_PDF_BYTES 限制),然后释放槽位,再将字节内容发送给用户,因此槽位占用时间取决于 USPTO 的传输速度,而非用户的连接速度。
OAuth 登录(可选)
设置 PTAB_AUTH_MODE=oauth,即可通过 Google + Microsoft 登录保护 HTTP 端点(采用 OAuth 2.1 和动态客户端注册——可用作 Claude.ai / Claude Desktop 自定义连接器)。访问权限由本地 SQLite 用户列表控制;admin 角色可使用 ptab_manage_users 用户管理工具及其 MCP App 面板。默认设置(none)和 STDIO 不受影响。完整操作指南:SSO_SETUP.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
