Google Patents MCP Server
The Google Patents MCP Server allows searching and filtering Google Patents data via the SerpApi Google Patents API.
Search Patents: Perform patent searches using a text query with advanced syntax support.
Filter Results: Filter by inventor, assignee, country, language, patent status (GRANT/APPLICATION), and type (PATENT/DESIGN).
Date Filtering: Apply date range filters based on priority, filing, or publication dates.
Sort Results: Sort by relevance, newest, or oldest filing/publication dates.
Pagination: Control the number of results per page (10-100) and navigate through results.
Include Google Scholar Results: Optionally include Google Scholar results in the search.
Supports configuration via .env files, allowing users to securely provide API keys and configure logging levels without exposing sensitive information.
Provides a tool for searching Google Patents information, allowing users to query patent data with various filters like dates, inventors, assignees, countries, and languages via the SerpApi Google Patents API.
Offers optional inclusion of Google Scholar results when searching for patents, allowing users to retrieve academic research related to patent searches.
Built for Node.js environments (version 18+), leveraging Node.js runtime for processing MCP requests and communicating with external APIs.
Enables easy installation and execution via npx command, with the package published to the npm registry for simplified deployment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Patents MCP Serversearch patents for electric vehicle battery technology"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Patents MCP Server (google-patents-mcp)
This project provides a Model Context Protocol (MCP) server that allows searching Google Patents information via the SerpApi Google Patents API.
Installing via Smithery
To install Google Patents MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @KunihiroS/google-patents-mcp --client claudeChangelog
v0.2.0 (2025-04-17)
Fix: Implemented empty handlers for
resources/listandprompts/listMCP methods.Fix: Declared
promptscapability in server initialization.Chore: Updated dependencies.
These changes aim to improve compatibility with MCP clients like Claude Desktop which may require these standard endpoints, though direct testing with Claude Desktop has not yet been performed.
Related MCP server: Serper MCP Server
Features
Provides an MCP tool
search_patentsto search Google Patents.Uses SerpApi as the backend.
Can be run directly using
npxwithout local installation.
Prerequisites
Node.js: Version 18 or higher is recommended.
npm: Required to run the
npxcommand.SerpApi API Key: You need a valid API key from SerpApi to use the Google Patents API.
Quick Start (Using npx)
The easiest way to run this server is using npx. This command downloads (if necessary) and runs the server directly.
npx @kunihiros/google-patents-mcpNote: Replace @kunihiros/google-patents-mcp with the actual published package name if it differs.
The server will start and listen for MCP requests on standard input/output.
Configuration
The server requires your SerpApi API key. You can provide it in one of the following ways:
Environment Variable (Recommended for MCP Hosts): Set the
SERPAPI_API_KEYenvironment variable when running the server. MCP Host configurations often allow setting environment variables for servers.Example MCP Host configuration snippet (
config.jsonor similar):{ "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" } } } }.env File: Create a
.envfile in the directory where you run thenpxcommand (for local testing or if not using an MCP Host), or in your home directory (~/.google-patents-mcp.env), with the following content:SERPAPI_API_KEY=YOUR_ACTUAL_SERPAPI_KEY # Optional: Set log level (e.g., debug, info, warn, error) # LOG_LEVEL=debugNote: While using a
.envfile is convenient for local testing, for production or integration with MCP Hosts, setting the environment variable directly via the host configuration is the recommended and more secure approach. The primary intended use case is execution vianpx, where environment variables are typically managed by the calling process or MCP Host.
The server searches for .env files in the following order:
* ./.env (relative to where npx is run)
* ~/.google-patents-mcp.env (in your home directory)
Provided MCP Tool
search_patents
Searches Google Patents via SerpApi.
Input Schema:
{
"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"]
}Output:
Returns a JSON object containing the search results from SerpApi. The structure follows the SerpApi response format.
Example Usage (MCP Request):
{
"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"
}
}
}Development
Clone the repository (if needed for development):
# git clone <repository-url> # cd google-patents-mcpInstall dependencies:
npm installCreate
.envfile: Copy.env.exampleto.envand add yourSERPAPI_API_KEY.Build:
npm run buildRun locally:
npm startOr for development with auto-rebuild:
npm run dev
Logging
Logs are output to standard error.
Log level can be controlled via the
LOG_LEVELenvironment variable (error,warn,info,http,verbose,debug,silly). Defaults toinfo.A log file is attempted to be created in the project root (
google-patents-server.log), user's home directory (~/.google-patents-server.log), or/tmp/google-patents-server.log.
License
MIT License (See LICENSE file)
Available Tools
1 toolsearch_patentsC
Searches Google Patents using SerpApi. Allows filtering by date, inventor, assignee, country, language, status, type, and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Minimum date filter (e.g., 'publication:20230101', 'filing:20220601'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'. | |
| assignee | No | Filter by assignee names. Separate multiple names with a comma (,). | |
| before | No | Maximum date filter (e.g., 'publication:20231231', 'filing:20220101'). Format: type:YYYYMMDD where type is 'priority', 'filing', or 'publication'. | |
| country | No | Filter by country codes (e.g., 'US', 'WO,JP'). Separate multiple codes with a comma (,). | |
| inventor | No | Filter by inventor names. Separate multiple names with a comma (,). | |
| language | No | 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. | |
| num | No | Number of results per page (default: 10). **IMPORTANT: Must be 10 or greater (up to 100).** | |
| page | No | Page number for pagination (default: 1). | |
| q | Yes | 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. | |
| scholar | No | Include Google Scholar results (default: false). | |
| sort | No | Sorting method. 'relevance' (default), 'new' (newest by filing/publication date), 'old' (oldest by filing/publication date). | relevance |
| status | No | Filter by patent status: 'GRANT' or 'APPLICATION'. | |
| type | No | Filter by patent type: 'PATENT' or 'DESIGN'. |
TDQS
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.
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.
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.
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.
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.
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.
TDQS
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-optimized patent data marketplace providing structured JSON datasets.
A Model Context Protocol server for Wix AI tools
Patent & trademark IP search — patents, assignees, and inventors via Google Patents.
MCP server for Google search results via SERP API
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides Google Jobs search capabilities through SerpAPI integration, featuring multi-language support, flexible search parameters, and rich job details.11822MIT
- FlicenseCqualityBmaintenanceA Model Context Protocol server that enables LLMs to perform Google searches via the Serper API, allowing models to retrieve current information from the web.1338
- AlicenseNot gradedqualityDmaintenanceA 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.2Apache 2.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server providing web search capabilities using Google Custom Search API and webpage content extraction functionality.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KunihiroS/google-patents-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server