Google Patents Mcp について
Google Patents MCP Server は、SerpApi の Google Patents API を通じて特許情報を検索する MCP サーバーです。AI アシスタントから特許を調べたい利用者向けで、npx で直接実行できます。
主な機能
- 01search_patents ツールの提供
- 02SerpApi をバックエンドとして使用
- 03ローカルインストールなしで npx 実行
- 04環境変数または .env ファイルでの API キー設定
- 05LOG_LEVEL によるログレベルの設定
活用シーン
- 01AI アシスタントからの特許文献検索
- 02高度な検索構文による特許結果の絞り込み
MCP 対応
本プロジェクトは MCP サーバーであり、search_patents ツールを MCP クライアントに公開して、SerpApi の検索結果を JSON で返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| after | string | いいえ | 最小日付のフィルター(例:'publication:20230101'、'filing:20220601')。形式:type:YYYYMMDD。type は 'priority'、'filing'、'publication' のいずれかです。 |
| assignee | string | いいえ | 譲受人名で絞り込みます。複数の名前はカンマ (,) で区切ります。 |
| before | string | いいえ | 最大日付のフィルター(例:'publication:20231231'、'filing:20220101')。形式:type:YYYYMMDD。type は 'priority'、'filing'、'publication' のいずれかです。 |
| country | string | いいえ | 国コードで絞り込みます(例:'US'、'WO,JP')。複数のコードはカンマ (,) で区切ります。 |
| inventor | string | いいえ | 発明者名で絞り込みます。複数の名前はカンマ (,) で区切ります。 |
| language | string | いいえ | 言語で絞り込みます(例:'ENGLISH'、'JAPANESE,GERMAN')。複数の言語はカンマ (,) で区切ります。対応言語:ENGLISH、GERMAN、CHINESE、FRENCH、SPANISH、ARABIC、JAPANESE、KOREAN、PORTUGUESE、RUSSIAN、ITALIAN、DUTCH、SWEDISH、FINNISH、NORWEGIAN、DANISH。 |
| num | integer | いいえ | 1 ページあたりの結果数(デフォルト:10)。**重要:10 以上(最大 100)を指定してください。** |
| page | integer | いいえ | ページネーションのページ番号(デフォルト:1)。 |
| q | string | はい | 検索クエリ(必須)。SerpApi のドキュメントでは省略可能ですが、実際には空でないクエリが必要です。複数の語句はセミコロン (;) で区切ります。'(Coffee) OR (Tea);(A47J)' のような高度な構文に対応しています。詳しくは 'About Google Patents' を参照してください。 |
| scholar | boolean | いいえ | Google Scholar の検索結果を含めます(デフォルト:false)。 |
| sort | enum | いいえ | 並べ替え方法。'relevance'(デフォルト)、'new'(出願日/公開日の新しい順)、'old'(出願日/公開日の古い順)。relevance | new | old |
| status | enum | いいえ | 特許のステータスで絞り込みます:'GRANT' または 'APPLICATION'。GRANT | APPLICATION |
| type | enum | いいえ | 特許の種類で絞り込みます:'PATENT' または 'DESIGN'。PATENT | DESIGN |
詳細
Google Patents MCP サーバー(google-patents-mcp)
このプロジェクトは、SerpApi Google Patents APIを通じてGoogle Patentsの情報を検索できるModel Context Protocol(MCP)サーバーを提供します。
Smithery経由でのインストール
Smithery経由でClaude Desktop用のGoogle Patents MCP Serverを自動的にインストールするには:
npx -y @smithery/cli install @KunihiroS/google-patents-mcp --client claude
変更履歴
v0.2.0(2025-04-17)
- 修正:
resources/listおよびprompts/listMCPメソッド用の空のハンドラーを実装しました。 - 修正: サーバーの初期化時に
prompts機能を宣言しました。 - 雑務: 依存関係を更新しました。
これらの変更は、こうした標準エンドポイントを必要とする可能性があるClaude DesktopなどのMCPクライアントとの互換性向上を目的としています。ただし、Claude Desktopでの直接テストはまだ実施されていません。
機能
- Google Patentsを検索するMCPツール
search_patentsを提供します。 - バックエンドとしてSerpApiを使用します。
- ローカルにインストールせず、
npxで直接実行できます。
前提条件
- Node.js: バージョン18以降を推奨します。
- npm:
npxコマンドの実行に必要です。 - SerpApi APIキー: Google Patents APIを使用するには、SerpApiの有効な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コマンドを実行するディレクトリ(ローカルテスト用、または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ホストとの連携では、ホストの設定から環境変数を直接設定する方法が推奨され、より安全です。主な利用方法として、環境変数は通常、呼び出し元のプロセスまたはMCPホストによって管理されるnpx経由での実行を想定しています。
サーバーは次の順序で.envファイルを検索します。
* ./.env(npxを実行した場所からの相対パス)
* ~/.google-patents-mcp.env(ホームディレクトリ内)
提供されるMCPツール
search_patents
SerpApi を介して Google Patents を検索します。
入力スキーマ:
{
"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 startnpm 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(LICENSE ファイルを参照)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
