Google Patents MCP Server
Google 专利 MCP 服务器 ( google-patents-mcp )
该项目提供了一个模型上下文协议 (MCP) 服务器,允许通过SerpApi Google Patents API搜索 Google Patents 信息。
变更日志
v0.2.0 (2025-04-17)
**修复:**为
resources/list和prompts/listMCP 方法实现了空处理程序。**修复:**在服务器初始化中声明
prompts功能。**琐事:**更新依赖项。
这些变化旨在提高与可能需要这些标准端点的 MCP 客户端(如 Claude Desktop)的兼容性,尽管尚未对 Claude Desktop 进行直接测试。
Related MCP server: Serper MCP Server
特征
提供 MCP 工具
search_patents来搜索 Google Patents。使用 SerpApi 作为后端。
无需本地安装即可直接使用
npx运行。
先决条件
**Node.js:**建议使用 18 或更高版本。
**npm:**运行
npx命令所需。**SerpApi API 密钥:**您需要来自SerpApi的有效 API 密钥才能使用 Google Patents API。
快速启动(使用 npx)
运行此服务器最简单的方法是使用npx 。此命令会直接下载(如有必要)并运行服务器。
npx @kunihiros/google-patents-mcp**注意:**如果@kunihiros/google-patents-mcp名称不同,请将其替换为实际发布的包名称。
服务器将启动并监听标准输入/输出上的 MCP 请求。
配置
服务器需要您的 SerpApi API 密钥。您可以通过以下方式之一提供该密钥:
**环境变量(推荐用于 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" } } } }**.env 文件:**在运行
npx命令的目录中创建一个.env文件(用于本地测试或不使用 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"
}
}
}发展
克隆存储库(如果开发需要):
# git clone <repository-url> # cd google-patents-mcp安装依赖项:
npm install**创建
.env文件:**将.env.example复制到.env并添加您的SERPAPI_API_KEY。建造:
npm run build本地运行:
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 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
search_patents
TDQS
Scored across 1 tool
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
Related MCP Connectors
Official SerpApi MCP server for Google, Bing, and other search engines.
A Model Context Protocol server for Wix AI tools
MCP server for Google search results via SERP API
Google SERP, Maps, Shopping, News and AI-answer data for AI agents, from the Searlo search 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.114 npm23MIT
- FlicenseCqualityCmaintenanceA Model Context Protocol server that enables LLMs to perform Google searches via the Serper API, allowing models to retrieve current information from the web.1339-
- 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
- AlicenseAqualityCmaintenanceMCP 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.36MIT