Сервер Google Patents MCP ( google-patents-mcp )
Этот проект предоставляет сервер Model Context Protocol (MCP), который позволяет осуществлять поиск информации о патентах Google через API SerpApi Google Patents .
Установка через Smithery
Чтобы автоматически установить Google Patents MCP Server для Claude Desktop через Smithery :
npx -y @smithery/cli install @KunihiroS/google-patents-mcp --client claudeЖурнал изменений
v0.2.0 (2025-04-17)
Исправление: Реализованы пустые обработчики для методов MCP
resources/listиprompts/list.Исправление: Объявлена возможность
promptsпри инициализации сервера.Задача: Обновление зависимостей.
Эти изменения направлены на улучшение совместимости с клиентами MCP, такими как Claude Desktop, которым могут потребоваться эти стандартные конечные точки, хотя прямое тестирование с Claude Desktop еще не проводилось.
Related MCP server: MCP Server for Google Search
Функции
Предоставляет инструмент MCP
search_patentsдля поиска в Google Patents.Использует SerpApi в качестве бэкэнда.
Можно запустить напрямую с помощью
npxбез локальной установки.
Предпосылки
Node.js: рекомендуется версия 18 или выше.
npm: Требуется для запуска команды
npx.Ключ API SerpApi: для использования API Google Patents вам понадобится действительный ключ API от SerpApi .
Быстрый старт (с использованием npx)
Самый простой способ запустить этот сервер — использовать npx . Эта команда загружает (при необходимости) и запускает сервер напрямую.
npx @kunihiros/google-patents-mcpПримечание: замените @kunihiros/google-patents-mcp фактическим опубликованным именем пакета, если оно отличается.
Сервер запустится и будет прослушивать запросы MCP на стандартном вводе/выводе.
Конфигурация
Сервер требует ваш ключ API SerpApi. Вы можете предоставить его одним из следующих способов:
Переменная среды (рекомендуется для хостов 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: создайте файл
.envв каталоге, где вы запускаете командуnpx(для локального тестирования или если не используется хост MCP), или в вашем домашнем каталоге (~/.google-patents-mcp.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
Поиск в Google Patents через SerpApi.
Схема ввода:
{
"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"]
}Выход:
Возвращает объект JSON, содержащий результаты поиска из SerpApi. Структура соответствует формату ответа 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.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)