专利数据访问服务

通过USPTO专利公共搜索API和开放数据门户API提供专利和专利申请数据的访问服务,支持专利搜索、全文获取、PDF下载和元数据访问。

  • by wmikuriy
  • 本地部署
  • 更新于
在 GitHub 查看 wmikuriy/patent_mcp_server

使用说明

USPTO专利MCP服务器

A. FastMCP服务器 通过以下方式访问美国专利商标局(USPTO)的专利和专利申请数据 专利公开检索 API和 开放数据门户(ODP)API使用此服务器,Claude Desktop可以使用公共搜索API(专利中心的后端)或ODP API从USPTO提取数据:

有关MCP服务器的介绍,请参阅 介绍模型上下文协议.

特别感谢 帕克·汉考克《惊奇》的作者 专利客户项目,为 开拓道路 了解通过公共搜索API获取数据所需的请求和响应字符串。

特性

此服务器提供以下工具:

  1. 专利检索 -搜索专利和专利申请
  2. 全文文档 -获取专利的完整文本,包括权利要求、描述等。
  3. PDF下载 -下载PDF格式的专利。(但Claude Desktop目前不支持将其作为客户端。)
  4. 元数据 -访问专利文献信息、转让和诉讼数据

API来源

此服务器与两个USPTO源交互:

  • ppubs.uspto.gov -用于全文文档访问、PDF下载和高级搜索
  • api.uspto.gov -用于元数据、连续性信息、事务和分配

先决条件

  • Python 3.10或更高版本
  • Claude Desktop(用于集成)。其他型号和MCP客户端尚未经过测试。
  • 对于专利公开搜索请求,不需要API密钥,但是 有费率限制。此API不适用于批量下载。
  • 对于ODP API请求,USPTO ODP API密钥(见下文)。
  • 紫外线 用于python版本和依赖关系管理。

如果你是一名python开发人员,但仍然不熟悉uv,那么你会得到一种享受。它比使用单独的python版本管理器(如pyenv)以及使用venv和pip设置、激活和维护虚拟环境更快、更容易。

如果你还没有安装紫外线, curl -LsSf https://astral.sh/uv/install.sh | sh 应该会成功。

安装

  1. 克隆此存储库:

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

    uv sync
    

    如果安装正确,则:

    uv run patent-mcp-server
    

    应该写:

    INFO     Starting USPTO Patent MCP server with stdio transport
    

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

API密钥设置

要使用api.uspto.gov工具,您需要获得开放数据门户(ODP)api密钥:

  1. 访问 美国专利商标局的入门页面 如果您还没有API密钥,请按照说明请求该密钥。

  2. 创建一个 .env 使用API密钥在patent_mcp_server目录中的文件:

    USPTO_API_KEY=your_actual_key_here
    

    你的钥匙周围不需要引号。ppubs工具将在没有此API密钥的情况下运行,但API.uspto.gov工具需要API密钥。

配置

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

# API Keys
USPTO_API_KEY=your_key_here

# Logging
LOG_LEVEL=INFO  # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL

# HTTP Settings
REQUEST_TIMEOUT=30.0  # Request timeout in seconds
MAX_RETRIES=3         # Maximum number of retry attempts for failed requests
RETRY_MIN_WAIT=2      # Minimum wait time between retries (seconds)
RETRY_MAX_WAIT=10     # Maximum wait time between retries (seconds)

# Session Management
SESSION_EXPIRY_MINUTES=30  # How long to cache ppubs sessions
ENABLE_CACHING=true        # Enable/disable session caching

# API Endpoints (usually don't need to change)
PPUBS_BASE_URL=https://ppubs.uspto.gov
API_BASE_URL=https://api.uspto.gov

Claude桌面配置

要将此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"
           ]
         }
       }
     }
    

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

  2. 替换 /Users/username/patent_mcp_server 如果您的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 -从ppubs.uspto.gov获取GUID的完整专利文件详细信息
  • ppubs_get_patent_by_number -从ppubs.uspto.gov按编号获取已授予专利的全文
  • ppubs_download_patent_pdf -从ppubs.uspto.gov下载PDF格式的已授权专利(Claude Desktop目前不支持)

开放数据门户API(API.usto.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(...) -通过标识符获取特定产品

详细参数信息请参考代码中的函数docstring。

最近的改进(v0.2.2)

此版本对代码质量、可靠性和可维护性进行了重大改进:

架构和代码质量

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

可靠性和性能

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

开发者体验

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

测试

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

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

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

运行测试

# Run all tests with pytest (recommended)
uv run pytest test/test_tools_pytest.py -v

# Run excluding slow tests (like PDF downloads)
uv run pytest test/test_tools_pytest.py -v -m "not slow"

# Run with coverage report
uv run pytest test/test_tools_pytest.py --cov=patent_mcp_server

# Run legacy test suite
uv run test/test_tools.py

发展

要安装开发依赖项,请执行以下操作:

uv sync --dev

许可证

麻省理工学院