cinii-research-mcp
by koizumikento
README.md
# cinii-research-mcp
CiNii Researchで論文・研究データ・本・研究者などを探せます。検索結果に付くCRIDを使うと、掲載誌、著者、DOI、データの形式など、レコード種別に応じたメタデータを確認できます。
## 利用前に
[uv](https://docs.astral.sh/uv/) と Git が必要です。Python 3.12以上に対応しています。[CiNiiのAPI利用登録](https://support.nii.ac.jp/ja/cinii/api/developer)で本人のアプリケーションIDを取得し、例の `YOUR_CINII_APP_ID` を差し替えてください。IDは手元の設定で管理してください。
## MCPクライアントに登録する
公開GitHubリポジトリから `uvx` で起動します。初回は依存関係の準備に時間がかかることがあります。
### Codex
```sh
codex mcp add cinii-research-mcp --env "CINII_APP_ID=YOUR_CINII_APP_ID" -- uvx --python 3.12 --from git+https://github.com/koizumikento/cinii-research-mcp.git@main cinii-research-mcp
codex mcp list
```
`codex mcp list` で登録を確認し、Codexの新しいセッションで `/mcp` を開くと、接続状態を確認できます。[Codexの公式設定ガイド](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)
Codexのデスクトップアプリでは、設定の「MCP servers」でSTDIOサーバーを追加し、下のJSON例と同じコマンド・引数を指定する方法もあります。
### Claude Desktop / Cursor
次のファイルに設定します。
- Claude Desktop(Windows) `%APPDATA%/Claude/claude_desktop_config.json`
- Claude Desktop(macOS) `~/Library/Application Support/Claude/claude_desktop_config.json`
- Cursor `.cursor/mcp.json`(プロジェクト内)
既に `mcpServers` がある場合は、その中にサーバーの項目を追加してください。保存後にクライアントを再起動し、ツールが表示されるか確認します。[設定ファイルの場所と接続手順](https://py.sdk.modelcontextprotocol.io/get-started/real-host/)
```json
{
"mcpServers": {
"cinii-research-mcp": {
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/koizumikento/cinii-research-mcp.git@main",
"cinii-research-mcp"
],
"env": {"CINII_APP_ID": "YOUR_CINII_APP_ID"}
}
}
}
```
`uvx` が見つからない場合は、設定のコマンドに実行ファイルの絶対パスを指定してください。
登録後は、チャットで次のように聞けます。
> 地震ハザードに関する研究データを5件探して。使えそうなデータはCRIDから詳細を引いて、形式とライセンスも確認して。
## MCPツール
| ツール | 用途 |
| --- | --- |
| `search_articles` | 論文だけをキーワード検索する |
| `search_records` | 全件を横断検索するか、`kind` で対象を選ぶ |
| `get_record` | 検索結果の `crid` で、CiNiiが公開するJSON-LDのメタデータを取得する |
`search_records` の `kind` は `all`(すべて、既定)、`data`(研究データ)、`articles`(論文)、`books`(本)、`dissertations`(博士論文)、`projects`(プロジェクト)、`researchers`(研究者)、`projectsAndProducts`(課題・成果)から選べます。検索は1〜50件ずつ取得でき、続きは返された `next_start` を `start` に指定します。`get_record` に渡すのはURLの `/crid/` に続く数字です。取得できる項目はレコードによって異なります。
## CLIで使う
CLIとPythonでは、実行するシェルで `CINII_APP_ID` を設定してください。
```powershell
$env:CINII_APP_ID = "YOUR_CINII_APP_ID"
```
macOSやLinuxのシェルでは `export CINII_APP_ID="YOUR_CINII_APP_ID"` を使います。
結果は標準出力にUTF-8のJSONで返ります。
```sh
uvx --python 3.12 --from git+https://github.com/koizumikento/cinii-research-mcp.git@main cinii-research-mcp search-records --kind data --query "地震ハザード" --limit 5
uvx --python 3.12 --from git+https://github.com/koizumikento/cinii-research-mcp.git@main cinii-research-mcp get-record --crid 1390006432294648704
```
## Pythonから呼び出す
リポジトリをクローンし、依存関係を準備します。
```sh
git clone https://github.com/koizumikento/cinii-research-mcp.git
cd cinii-research-mcp
uv sync --locked
```
次の例を `example.py` に保存し、クローン先で `uv run --locked python example.py` を実行します。
```python
import asyncio
from cinii_research_mcp import search_records
print(asyncio.run(search_records("地震ハザード", kind="data", limit=5)))
```
## データの出典と利用条件
書誌情報の取り扱いはNIIと提供元の利用条件に従ってください。商用サイトでの利用を希望する場合は、申請前にNIIへ連絡してください。[OpenSearch仕様](https://support.nii.ac.jp/ja/cir/r_opensearch)・[JSON-LD仕様](https://support.nii.ac.jp/ja/cir/r_json)・[ウェブAPI利用細則](https://support.nii.ac.jp/sites/default/files/cinii/webapi-term.pdf)・[CiNii Research利用細則](https://support.nii.ac.jp/sites/default/files/cinii/ciniir-term.pdf)
MIT Licenseはこのリポジトリのコードに適用します。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessOutdated data