返回市场
专利_mcp_服务器

专利_mcp_服务器

作者:riemannzeta28 星标更新:2025-11-15

项目介绍

技术文档摘要

USPTO 专利 MCP 服务器

这是一个 FastMCP 服务器,通过 Patent Public Search API、Open Data Portal (ODP) APIGoogle Patents Public Datasets(通过 BigQuery)访问美国专利商标局(USPTO)的专利和专利申请数据。使用此服务器,Claude Desktop 可以从 USPTO 的 API 中提取数据或通过 Google 的 BigQuery 搜索来自 17 多个国家的 9000 万以上的专利出版物:

Claude Desktop 使用 Patents MCP 服务器的屏幕截图

要了解 MCP 服务器,请参阅 介绍 Model Context Protocol

特别感谢 Parker Hancock,他是令人惊叹的 Patent Client 项目 的作者,他为理解通过 Public Search API 获取数据所需的请求和响应序列铺平了道路。

功能

此服务器提供了以下工具:

  1. 专利搜索 - 在 USPTO 和 Google Patents 数据库中搜索专利和专利申请
  2. 全文文档 - 获取完整的专利文本,包括权利要求、描述等
  3. PDF 下载 - 将专利下载为 PDF 文件(当前 Claude Desktop 不支持此功能)
  4. 元数据 - 访问专利书目信息、转让和诉讼数据
  5. Google Patents 集成 - 通过 BigQuery 访问来自 17 多个国家的 9000 万以上的专利出版物
  6. 高级搜索 - 根据发明人、受让人、CPC 分类等进行搜索

API 数据源

此服务器与三个专利数据源交互:

  • ppubs.uspto.gov - 用于全文文档访问、PDF 下载和高级搜索
  • api.uspto.gov - 用于元数据、连续性信息、交易和转让
  • Google Patents Public Datasets (BigQuery) - 用于跨 9000 万以上出版物的全面专利搜索,这些出版物来自 17 多个国家

先决条件

  • Python 3.10-3.13(推荐 3.12)
  • Claude Desktop(用于集成)。其他模型和 MCP 客户端尚未测试。
  • 对于 Patent Public Search 请求,不需要 API 密钥,但 存在速率限制。此 API 不适合批量下载。
  • 对于 ODP API 请求,需要一个 USPTO ODP API 密钥(见下文)。
  • 对于 Google Patents:一个启用了 BigQuery API 的 Google Cloud 账户(见下文的 Google Cloud 设置)。
  • UV 用于 Python 版本和依赖管理。

如果你是 Python 开发者,但还不熟悉 UV,你会喜欢它。它比单独的 Python 版本管理器(如 pyenv)更快更简单,并且设置、激活和维护虚拟环境也更容易,使用 venv 和 pip。

如果还没有安装 UV,可以运行 curl -LsSf https://astral.sh/uv/install.sh | sh 来安装。

安装

  1. 克隆此仓库:

    git clone https://github.com/riemannzeta/patent_m
    cd patent_mcp_server
    
  2. 使用 UV 安装依赖项:

    uv sync
    

    如果安装正确,则:

    uv run patent-mcp-server
    

    应该在控制台写入:

    INFO     正在启动 USPTO 专利 MCP 服务器,使用 stdio 传输
    

    在环境中安装 API 密钥并配置 Claude Desktop 后,专利 MCP 服务器就准备好了。

API 密钥设置

USPTO API 密钥

要使用 api.uspto.gov 工具,你需要获取 Open Data Portal (ODP) API 密钥:

  1. 访问 USPTO 的入门页面 并按照说明请求 API 密钥,如果你还没有的话。
  2. 在专利_mcp_server 目录中创建一个 .env 文件,并添加你的 API 密钥:
    USPTO_API_KEY=your_actual_key_here
    
    你的密钥周围不需要引号。ppubs 工具可以在没有此 API 密钥的情况下运行,但对于 api.uspto.gov 工具来说,API 密钥是必需的。

Google Cloud 设置(用于 Google Patents)

要使用 Google Patents Public Datasets,你需要设置 Google Cloud 凭证:

  1. 创建 Google Cloud 项目

  2. 启用 BigQuery API

    • 在你的项目中,前往“APIs & Services” > “库”
    • 搜索“BigQuery API”并启用它
  3. 创建服务账户凭证

    • 前往“APIs & Services” > “凭证”
    • 点击“创建凭证” > “服务账户”
    • 给它命名(例如,“patent-mcp-bigquery”)
    • 授予它“BigQuery 用户”角色
    • 点击“完成”
    • 点击创建的服务账户
    • 前往“密钥”标签 > “添加密钥” > “创建新密钥”
    • 选择 JSON 格式并下载密钥文件
  4. 配置环境变量: 在你的 .env 文件中添加:

    GOOGLE_CLOUD_PROJECT=your-project-id
    GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json
    

费用信息:Google BigQuery 提供每月 1TB 的免费查询。之后,每 TB 查询费用为 5 美元。专利查询通常很小且高效。详情请参阅 BigQuery 定价

配置

服务器可以通过 .env 文件中的环境变量进行配置。所有设置都是可选的,默认值合理:

# API 密钥
USPTO_API_KEY=your_key_here

# Google Cloud / BigQuery
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
BIGQUERY_DATASET=patents-public-data:patents
BIGQUERY_LOCATION=US
BIGQUERY_QUERY_TIMEOUT=60
BIGQUERY_MAX_RESULTS=1000

# 日志记录
LOG_LEVEL=INFO  # 选项:DEBUG, INFO, WARNING, ERROR, CRITICAL

# HTTP 设置
REQUEST_TIMEOUT=30.0  # 请求超时时间(秒)
MAX_RETRIES=3         # 失败请求的最大重试次数
RETRY_MIN_WAIT=2      # 重试之间的最小等待时间(秒)
RETRY_MAX_WAIT=10     # 重试之间的最大等待时间(秒)

# 会话管理
SESSION_EXPIRY_MINUTES=30  # 缓存 ppubs 会话的时间长度
ENABLE_CACHING=true        # 启用/禁用会话缓存

# API 端点(通常不需要更改)
PPUBS_BASE_URL=https://ppubs.uspto.gov
API_BASE_URL=https://api.uspto.gov

Claude Desktop 配置

要将此 MCP 服务器与 Claude Desktop 集成:

  1. 更新你的 Claude Desktop 配置文件(claude_desktop_config.json):

     {
       "mcpServers": {
         "patents": {
           "command": "uv",
           "args": [
             "--directory",
             "/Users/username/patent_mcp_server",
             "run",
             "patent-mcp-server"
           ]
         }
       }
     }
    

    你可以在 Mac 上通过打开 Claude Desktop 应用程序,打开设置(从 Claude 菜单或通过键盘上的 Command + '),点击侧边栏中的“开发者”,然后编辑配置来找到 claude_desktop_config.json

  2. 如果专利_mcp_server 目录不是克隆的位置,请替换 /Users/username/patent_mcp_server 为实际路径。(如果你使用的是 Mac,这可能意味着只需将 username 替换为你自己的用户名。)

当与 Claude Desktop 集成时,服务器将在需要时自动启动,无需单独运行。服务器使用 stdio 传输与 Claude Desktop 或在同一主机上运行的其他 MCP 客户端通信。

可用函数

服务器提供以下函数来与 USPTO 数据交互。请注意,Claude Desktop 客户端并不完全支持所有这些工具。例如,Claude Desktop 当前不允许下载 PDF。

公共专利搜索(ppubs.uspto.gov)

  • ppubs_search_patents - 在 USPTO 公共搜索中搜索已授予的专利
  • ppubs_search_applications - 在 USPTO 公共搜索中搜索已公布的专利申请
  • ppubs_get_full_document - 通过 GUID 从 ppubs.uspto.gov 获取完整的专利文档详细信息
  • ppubs_get_patent_by_number - 通过编号从 ppubs.uspto.gov 获取已授予专利的全文
  • ppubs_download_patent_pdf - 从 ppubs.uspto.gov 下载已授予专利的 PDF(目前不被 Claude Desktop 支持)

开放数据门户 API(api.uspto.gov)

  • get_app(app_num) - 获取基本专利申请数据
  • search_applications(...) - 使用查询参数搜索专利申请
  • download_applications(...) - 使用查询参数下载专利申请
  • get_app_metadata(app_num) - 获取申请元数据
  • get_app_adjustment(app_num) - 获取专利期限调整数据
  • get_app_assignment(app_num) - 获取转让数据
  • get_app_attorney(app_num) - 获取律师/代理人信息
  • get_app_continuity(app_num) - 获取连续性数据
  • get_app_foreign_priority(app_num) - 获取外国优先权声明
  • get_app_transactions(app_num) - 获取交易历史
  • get_app_documents(app_num) - 获取文档详细信息
  • get_app_associated_documents(app_num) - 获取关联文档
  • get_status_codes(...) - 搜索状态代码
  • search_datasets(...) - 搜索批量数据集产品
  • get_dataset_product(...) - 通过其标识符获取特定产品

Google Patents 公共数据集(BigQuery)

  • google_search_patents(query, country, limit) - 通过标题/摘要中的文本搜索 9000 万以上的出版物中的专利
  • google_get_patent(publication_number) - 通过出版物编号获取完整的专利详细信息
  • google_get_patent_claims(publication_number) - 获取专利的所有权利要求
  • google_get_patent_description(publication_number) - 获取完整的专利描述/规范
  • google_search_by_inventor(inventor_name, country, limit) - 通过发明人姓名查找专利
  • google_search_by_assignee(assignee_name, country, limit) - 通过公司/受让人查找专利
  • google_search_by_cpc(cpc_code, country, limit) - 通过 CPC 分类代码搜索专利

支持的国家:US(美国)、EP(欧洲专利局)、WO(WIPO/PCT)、JP(日本)、CN(中国)、KR(韩国)、GB(英国)、DE(德国)、FR(法国)、CA(加拿大)、AU(澳大利亚)

注意:Google Patents 工具需要 Google Cloud 凭证(见上文的 Google Cloud 设置)。

有关详细参数信息,请参阅代码中的函数文档字符串。

最近改进(v0.2.2)

此次发布包括对代码质量、可靠性和可维护性的重大改进:

架构与代码质量

  • 集中配置 - 所有设置现在通过具有合理默认值的环境变量进行管理
  • 常量模块 - 将魔术字符串提取到专用的常量模块中,以保持一致性
  • 错误处理 - 使用 ApiError 实用类在整个端点中标准化错误响应
  • 代码去重 - 提取通用的专利搜索逻辑,消除约 80 行重复代码
  • 输入验证 - 使用 Pydantic 自动验证和清理专利/申请编号

可靠性与性能

  • 重试逻辑 - 使用 tenacity 实现网络错误的指数退避重试机制
  • 会话缓存 - ppubs.uspto.gov 会话缓存 30 分钟(可配置),以减少开销
  • 资源管理 - 使用上下文管理器和关闭处理器正确清理 HTTP 客户端
  • 类型提示 - 整个代码库中有全面的类型注释

开发者体验

  • pytest 框架 - 现代测试框架,具有异步支持,替代自定义测试运行器
  • Python 3.10+ 支持 - 将要求从 3.13 降低到 3.10,以实现更广泛的兼容性
  • 更好的日志记录 - 通过环境变量配置日志级别
  • 开发工具 - 添加 pytest、pytest-asyncio 和 pytest-cov 到开发依赖项

测试

/test/ 目录包含验证 MCP 服务器功能的测试套件:

  • test_tools_pytest.py - 现代的 pytest 基础测试套件,适用于所有 MCP 工具(推荐)
  • test_tools.py - 遗留测试运行器(仍然有效)
  • test_patents.py - 用于调试的直接 HTTP 请求测试

测试结果以 JSON 和 PDF 格式存储在 /test/test_results 子目录中。

运行测试

# 使用 pytest 运行所有测试(推荐)
uv run pytest test/test_tools_pytest.py -v

# 运行排除慢速测试(如 PDF 下载)
uv run pytest test/test_tools_pytest.py -v -m "not slow"

# 运行带有覆盖率报告
uv run pytest test/test_tools_pytest.py --cov=patent_mcp_server

# 运行遗留测试套件
uv run test/test_tools.py

开发

要安装开发依赖项:

uv sync --dev

许可证

MIT