OpenAlex MCP Server について
OpenAlex MCP Serverは、OpenAlexの学術論文データをAIエージェントやMCPクライアントから利用できるようにします。絞り込み・並べ替え・ページ分割検索に加え、論文詳細、引用関係、利用可能なテキストn-gramを取得できます。
主な機能
- 01キーワードによる学術論文検索
- 02結果の絞り込み・並べ替え・ページ分割
- 03論文の詳細情報取得
- 04参考文献と被引用論文の検索
- 05利用可能なテキストn-gramの取得
活用シーン
- 01テーマや出版年で論文を探す
- 02論文の参考文献や引用論文を調べる
- 03研究者や機関に関連する論文を比較する
MCP 対応
OpenAlexの論文検索・取得機能をMCPツールとして提供します。論文詳細、参考文献、被引用論文、n-gramを取得できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenAlex MCP Server
このプロジェクトは、AI エージェントやその他の MCP クライアントが、学術論文を中心に OpenAlex データベースを利用できるようにする Model Context Protocol(MCP)サーバーを提供します。OpenAlex API との通信には pyalex Python ライブラリを使用し、MCP Python SDK(fastmcp)を使って機能を MCP ツールとして公開します。
使用例
参考として、この MCP を有効にした AI エージェントに依頼できるクエリの例をいくつか紹介します。
- 畳み込みニューラルネットワークを導入した基礎論文を引用している論文のうち、最も多く引用されているものを 5 件見つけてください
- 自己教師あり視覚オドメトリに関連する論文を探しています。このトピックに関連する論文を見つけ、それぞれのタイトルと要約を読んで関連度を 1〜10 で評価してください。
- 2020 年以降に発表された、トランスフォーマーモデルに関する最も影響力のある論文を見つけ、アーキテクチャがどのように進化してきたかを要約してください
- MIT と Stanford の研究者が共著した論文を見つけてください
機能
このサーバーは、OpenAlex の works とやり取りするために、以下の MCP ツールを公開します。
-
search_works:- 説明: キーワードとフィルターに基づいて OpenAlex の works を検索します。検索クエリではブール演算子を使用できます。選択したフィールドを返し、カーソルによるページネーションを使用します。
- パラメーター:
search_query(string、必須):検索語。filters(object、任意):フィルタリング用のキーと値のペア(例:{"publication_year": 2023, "is_oa": true})。使用可能なキーについては、OpenAlex のフィルターに関するドキュメントを参照してください。search_field(string、任意、デフォルト:"default"):検索対象のフィールド('title'、'abstract'、'fulltext'、'title_and_abstract'、'default'。'default' は title、abstract、fulltext を検索します)。select_fields(文字列の配列、任意):返すルートレベルのフィールドのリスト(例:["id", "doi", "title", "abstract"])。指定された場合、プレーンテキストの abstract も含まれます。sort(object、任意):並べ替えに使用するフィールドと順序(例:{"cited_by_count": "desc"})。per_page(integer、任意、デフォルト:25):1 ページあたりの結果数(最大 200)。cursor(string、任意):ページネーション用カーソル。
- 戻り値:
results(work オブジェクトのリスト)とmeta(next_cursorを含むページネーション情報)を持つオブジェクト。
-
get_work_details:- 説明: ID(OpenAlex ID URL、DOI URL、PMID URL、MAG ID)を指定して、特定の OpenAlex work の詳細情報を取得します。
- パラメーター:
work_id(string、必須):work の識別子。select_fields(文字列の配列、任意):返すルートレベルのフィールドのリスト。指定された場合、プレーンテキストの abstract も含まれます。
- 戻り値: 選択したフィールドを含む work を表すオブジェクト、またはエラーオブジェクト。
-
get_referenced_works:- 説明: 特定の OpenAlex work が引用している(発信引用)OpenAlex ID のリストを取得します。注:このツールが返すのは現在 ID のリストのみです。各参考文献の詳細については、
get_work_detailsを使用してください。 - パラメーター:
work_id(string、必須):引用元 work の OpenAlex ID。
- 戻り値:
referenced_work_ids(文字列のリスト)を持つオブジェクト、またはエラーオブジェクト。
- 説明: 特定の OpenAlex work が引用している(発信引用)OpenAlex ID のリストを取得します。注:このツールが返すのは現在 ID のリストのみです。各参考文献の詳細については、
-
get_citing_works:- 説明: 特定の OpenAlex work を引用している(着信引用)works のリストを取得します。カーソルによるページネーションを使用します。
- パラメーター:
work_id(string、必須):引用されている work の OpenAlex ID。select_fields(文字列の配列、任意):各引用元 work のルートレベルのフィールドのリスト。per_page(integer、任意、デフォルト:25):1 ページあたりの結果数(最大 200)。cursor(string、任意):ページネーション用カーソル。
- 戻り値:
results(引用元 work オブジェクトのリスト)とmeta(ページネーション情報)を持つオブジェクト、またはエラーオブジェクト。
-
get_work_ngrams:- 説明: 利用可能な場合、特定の OpenAlex work の全文に含まれる N-gram(単語の近接情報)を取得します。
- パラメーター:
work_id(string、必須):work の OpenAlex ID。
- 戻り値: N-gram を表すオブジェクト、またはエラーオブジェクト(例:N-gram が見つからない場合)。
注記
OpenAlex は、著作権上の理由から通常、全文を保存していません。 そのため、OpenAlex の検索機能では全文は検索されず、title と abstract のみが検索対象となります。
セットアップとインストール
インストール
-
リポジトリをクローンします(任意):
git clone <repository-url> cd openalex-mcp-server -
依存関係をインストールします:
uv venv source .venv/bin/activate uv pip install .これにより、依存関係(
mcp[cli]、pyalex)とともにサーバーパッケージがインストールされます。 -
サーバーを実行します:
uv --directory /YOUR/INSTALL/DIRECTORY/openalex-mcp-server run server.py
設定
- OpenAlex Polite Pool: より高速で信頼性の高い OpenAlex polite pool を使用するには、サーバーの実行前、または MCP クライアントで設定する際に、
OPENALEX_EMAIL環境変数にメールアドレスを設定してください。
この変数が設定されていない場合、サーバーは匿名プールを使用します。匿名プールでは、レート制限がより厳しくなります。export OPENALEX_EMAIL="[email protected]"
MCP との連携
このサーバーを MCP クライアント(Claude VS Code Extension や Claude Desktop など)で使用するには、クライアントの設定ファイルに構成を追加する必要があります。
設定例(cline_mcp_settings.json など):
{
"mcpServers": {
"... other servers ...": {},
"openalex": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"command": "uv",
"args": [
"--directory", "/YOUR/INSTALL/DIRECTORY/openalex-mcp-server", "run", "server.py"
],
"env": {
"OPENALEX_EMAIL": "[email protected]" // Set your email here!
},
"transportType": "stdio"
}
}
}
"[email protected]"を実際のメールアドレスに置き換えてください。- 構成を追加した後、MCP クライアントを再起動してください(例:VS Code ウィンドウを再読み込み)。
使用方法
サーバーの設定と起動が完了したら(MCP クライアントとの連携経由、または開発用に手動で起動)、AI エージェント内で use_mcp_tool コマンドを使用して操作できます。
ツール呼び出しの例:
-
2023 年に出版された「machine learning」に関する論文を検索する:
<use_mcp_tool> <server_name>openalex</server_name> <tool_name>search_works</tool_name> <arguments> { "search_query": "machine learning", "filters": { "publication_year": 2023 }, "select_fields": ["id", "doi", "title", "publication_year", "cited_by_count"] } </arguments> </use_mcp_tool> -
特定の著作物の詳細を取得する:
<use_mcp_tool> <server_name>openalex</server_name> <tool_name>get_work_details</tool_name> <arguments> { "work_id": "W2741809807", "select_fields": ["title", "authorships", "abstract", "open_access"] } </arguments> </use_mcp_tool> -
著作物の参考文献を取得する:
<use_mcp_tool> <server_name>openalex</server_name> <tool_name>get_referenced_works</tool_name> <arguments> { "work_id": "W2741809807" } </arguments> </use_mcp_tool>
開発
開発およびテスト用にサーバーをローカルで実行するには:
- 依存関係がインストールされていることを確認します(「インストール」を参照)。
OPENALEX_EMAIL環境変数を設定します。mcp dev server.py
依存関係
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。