Skip to main content
Glama
KunihiroS

Google Patents MCP Server

by KunihiroS

Google Patents MCP 서버( google-patents-mcp )

npm 버전

이 프로젝트는 SerpApi Google Patents API를 통해 Google Patents 정보를 검색할 수 있는 MCP(Model Context Protocol) 서버를 제공합니다.

변경 사항

v0.2.0 (2025년 4월 17일)

  • 수정 사항: resources/list 및 prompts/list MCP 메서드에 대한 빈 핸들러를 구현했습니다.

  • 수정: 서버 초기화 시 prompts 기능을 선언했습니다.

  • 집안일: 종속성 업데이트.

이러한 변경 사항은 Claude Desktop과 같은 MCP 클라이언트와의 호환성을 개선하는 것을 목표로 하며, 이러한 클라이언트는 표준 엔드포인트를 필요로 할 수 있지만 Claude Desktop을 통한 직접 테스트는 아직 수행되지 않았습니다.

Related MCP server: Serper MCP Server

특징

  • Google Patents를 검색하기 위한 MCP 도구 search_patents 제공합니다.

  • 백엔드로 SerpApi를 사용합니다.

  • 로컬 설치 없이 npx 사용하여 직접 실행할 수 있습니다.

필수 조건

  • Node.js: 버전 18 이상을 권장합니다.

  • npm: npx 명령을 실행하는 데 필요합니다.

  • SerpApi API 키: Google Patents API를 사용하려면 SerpApi 의 유효한 API 키가 필요합니다.

빠른 시작(npx 사용)

이 서버를 실행하는 가장 쉬운 방법은 npx 사용하는 것입니다. 이 명령은 (필요한 경우) 서버를 직접 다운로드하고 실행합니다.

지엑스피1

참고: @kunihiros/google-patents-mcp 실제 게시된 패키지 이름으로 바꾸세요(다른 경우).

서버가 시작되어 표준 입출력에서 MCP 요청을 수신합니다.

구성

서버에는 SerpApi API 키가 필요합니다. 다음 방법 중 하나로 키를 제공하세요.

  1. 환경 변수(MCP 호스트 권장): 서버를 실행할 때 SERPAPI_API_KEY 환경 변수를 설정하세요. MCP 호스트 구성에서 서버의 환경 변수를 설정할 수 있는 경우가 많습니다.

    MCP 호스트 구성 스니펫 예( config.json 또는 유사):

    {
      "mcpServers": {
        "google-patents-mcp": {
          "command": "npx",
          "args": [
            "-y", // Skips confirmation if the package isn't installed locally
            "@kunihiros/google-patents-mcp" // Use the correct package name
          ],
          "env": {
            "SERPAPI_API_KEY": "YOUR_ACTUAL_SERPAPI_KEY"
            // Optional: Set log level
            // "LOG_LEVEL": "debug"
          }
        }
      }
    }
  2. .env 파일: npx 명령을 실행하는 디렉토리(로컬 테스트용 또는 MCP 호스트를 사용하지 않는 경우) 또는 홈 디렉토리( ~/.google-patents-mcp.env )에 다음 내용으로 .env 파일을 만듭니다.

    SERPAPI_API_KEY=YOUR_ACTUAL_SERPAPI_KEY
    # Optional: Set log level (e.g., debug, info, warn, error)
    # LOG_LEVEL=debug

    참고: 로컬 테스트에는 .env 파일을 사용하는 것이 편리하지만, 프로덕션 환경이나 MCP 호스트와의 통합 환경에서는 호스트 구성을 통해 환경 변수를 직접 설정하는 것이 권장되고 더 안전한 방법입니다. 주요 사용 사례는 npx 통한 실행이며, 이 경우 환경 변수는 일반적으로 호출 프로세스 또는 MCP 호스트에서 관리됩니다.

서버는 다음 순서로 .env 파일을 검색합니다. * ./.env npx 실행되는 위치를 기준으로) * ~/.google-patents-mcp.env (홈 디렉토리에 있음)

MCP 도구 제공

search_patents

SerpApi를 통해 Google 특허를 검색합니다.

입력 스키마:

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Search query (required). Although optional in SerpApi docs, a non-empty query is practically needed. Use semicolon (;) to separate multiple terms. Advanced syntax like '(Coffee) OR (Tea);(A47J)' is supported. See 'About Google Patents' for details."
    },
    "page": {
      "type": "integer",
      "description": "Page number for pagination (default: 1).",
      "default": 1
    },
    "num": {
      "type": "integer",
      "description": "Number of results per page (default: 10). **IMPORTANT: Must be 10 or greater (up to 100).**",
      "default": 10,
      "minimum": 10,
      "maximum": 100
    },
    "sort": {
      "type": "string",
      "enum": ["relevance", "new", "old"],
      "description": "Sorting method. 'relevance' (default), 'new' (newest by filing/publication date), 'old' (oldest by filing/publication date).",
      "default": "relevance"
    },
    "before": {
      "type": "string",
      "description": "Maximum date filter (e.g., 'publication:20231231', 'filing:20220101'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'."
    },
    "after": {
      "type": "string",
      "description": "Minimum date filter (e.g., 'publication:20230101', 'filing:20220601'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'."
    },
    "inventor": {
      "type": "string",
      "description": "Filter by inventor names. Separate multiple names with a comma (,)."
    },
    "assignee": {
      "type": "string",
      "description": "Filter by assignee names. Separate multiple names with a comma (,)."
    },
    "country": {
      "type": "string",
      "description": "Filter by country codes (e.g., 'US', 'WO,JP'). Separate multiple codes with a comma (,)."
    },
    "language": {
      "type": "string",
      "description": "Filter by language (e.g., 'ENGLISH', 'JAPANESE,GERMAN'). Separate multiple languages with a comma (,). Supported: ENGLISH, GERMAN, CHINESE, FRENCH, SPANISH, ARABIC, JAPANESE, KOREAN, PORTUGUESE, RUSSIAN, ITALIAN, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH."
    },
    "status": {
      "type": "string",
      "enum": ["GRANT", "APPLICATION"],
      "description": "Filter by patent status: 'GRANT' or 'APPLICATION'."
    },
    "type": {
      "type": "string",
      "enum": ["PATENT", "DESIGN"],
      "description": "Filter by patent type: 'PATENT' or 'DESIGN'."
    },
    "scholar": {
      "type": "boolean",
      "description": "Include Google Scholar results (default: false).",
      "default": false
    }
  },
  "required": ["q"]
}

산출:

SerpApi의 검색 결과를 포함하는 JSON 객체를 반환합니다. 구조는 SerpApi 응답 형식을 따릅니다.

예시 사용(MCP 요청):

{
  "mcp_version": "1.0",
  "type": "CallToolRequest",
  "id": "req-123",
  "server_name": "google-patents-mcp",
  "params": {
    "name": "search_patents",
    "arguments": {
      "q": "organic light emitting diode",
      "num": 10,
      "language": "ENGLISH",
      "status": "GRANT",
      "after": "publication:20230101"
    }
  }
}

개발

  1. (개발에 필요한 경우) 저장소를 복제합니다.

    # git clone <repository-url>
    # cd google-patents-mcp
  2. 종속성 설치:

    npm install
  3. .env 파일을 만듭니다. .env.example``.env 로 복사하고 SERPAPI_API_KEY 추가합니다.

  4. 짓다:

    npm run build
  5. 로컬로 실행:

    npm start

    또는 자동 재빌드를 통한 개발의 경우:

    npm run dev

벌채 반출

  • 로그는 표준 오류로 출력됩니다.

  • 로그 수준은 LOG_LEVEL 환경 변수( error , warn , info , http , verbose , debug , silly )를 통해 제어할 수 있습니다. 기본값은 info 입니다.

  • 프로젝트 루트( google-patents-server.log ), 사용자 홈 디렉토리( ~/.google-patents-server.log ) 또는 /tmp/google-patents-server.log 에 로그 파일을 생성하려고 시도했습니다.

특허

MIT 라이센스(LICENSE 파일 참조)

Available Tools

1 tool
search_patentsC

Searches Google Patents using SerpApi. Allows filtering by date, inventor, assignee, country, language, status, type, and sorting.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoMinimum date filter (e.g., 'publication:20230101', 'filing:20220601'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'.
assigneeNoFilter by assignee names. Separate multiple names with a comma (,).
beforeNoMaximum date filter (e.g., 'publication:20231231', 'filing:20220101'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'.
countryNoFilter by country codes (e.g., 'US', 'WO,JP'). Separate multiple codes with a comma (,).
inventorNoFilter by inventor names. Separate multiple names with a comma (,).
languageNoFilter by language (e.g., 'ENGLISH', 'JAPANESE,GERMAN'). Separate multiple languages with a comma (,). Supported: ENGLISH, GERMAN, CHINESE, FRENCH, SPANISH, ARABIC, JAPANESE, KOREAN, PORTUGUESE, RUSSIAN, ITALIAN, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH.
numNoNumber of results per page (default: 10). **IMPORTANT: Must be 10 or greater (up to 100).**
pageNoPage number for pagination (default: 1).
qYesSearch query (required). Although optional in SerpApi docs, a non-empty query is practically needed. Use semicolon (;) to separate multiple terms. Advanced syntax like '(Coffee) OR (Tea);(A47J)' is supported. See 'About Google Patents' for details.
scholarNoInclude Google Scholar results (default: false).
sortNoSorting method. 'relevance' (default), 'new' (newest by filing/publication date), 'old' (oldest by filing/publication date).relevance
statusNoFilter by patent status: 'GRANT' or 'APPLICATION'.
typeNoFilter by patent type: 'PATENT' or 'DESIGN'.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions filtering and sorting but omits critical details like rate limits, authentication needs, pagination behavior, error handling, or response format. For a search tool with 13 parameters, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose and enumerates key capabilities without redundancy. Every word serves a purpose, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex search tool with 13 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context, usage guidelines, and details on results or errors, leaving significant gaps for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 13 parameters. The description adds no additional parameter semantics beyond listing filter types, which are already covered in schema descriptions. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Searches Google Patents') and resource ('patents'), and mentions the service provider ('using SerpApi'). It lists key filtering capabilities, making the purpose specific and actionable. However, without sibling tools, it cannot differentiate from alternatives, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, prerequisites, or typical use cases. It lists filtering options but lacks context on optimal scenarios or limitations, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedsearch_patents

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or confusion between tools. The single tool has a clear, distinct purpose focused on searching patents.

Naming Consistency5/5

The single tool name 'search_patents' follows a consistent verb_noun pattern. Since there is only one tool, naming consistency is inherently perfect with no deviations to assess.

Tool Count2/5

A single tool for a patents server feels thin and under-scoped. While search is a core function, the domain suggests potential for additional operations like retrieving patent details, analyzing trends, or filtering by categories, making the count too low for the apparent scope.

Completeness2/5

The tool surface is severely incomplete for a patents domain. It only provides search functionality, with obvious gaps such as retrieving full patent documents, getting metadata like citations or legal status, or managing saved searches, which limits agent workflows and causes dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol server that provides Google Jobs search capabilities through SerpAPI integration, featuring multi-language support, flexible search parameters, and rich job details.
    1
    14 npm
    23
    MIT
  • F
    license
    C
    quality
    C
    maintenance
    A Model Context Protocol server that enables LLMs to perform Google searches via the Serper API, allowing models to retrieve current information from the web.
    13
    39
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to perform web searches using Google Search API, returning up to 20 search results in JSON format.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for patent search and prior art discovery powered by Google Patents public dataset on BigQuery. Supports searching patents, fetching full patent details with CPC codes and citations, and retrieving legal claims text.
    3
    6
    MIT