kaken-mcp
by koizumikento
README.md
# kaken-mcp
科研費データベース KAKEN で採択課題や研究者を探せます。課題番号が分かっているときは、その番号から研究機関、研究期間、実施状況を確認できます。
## 利用前に
[uv](https://docs.astral.sh/uv/) と Git が必要です。Python 3.12以上に対応しています。[NIIのAPI利用登録](https://support.nii.ac.jp/ja/cinii/api/developer)で発行されたアプリケーションIDが必要です。CiNii Web APIのIDを取得済みなら同じIDを使えます。下の例の `YOUR_KAKEN_APP_ID` を手元の設定で差し替えてください。
## MCPクライアントに登録する
公開GitHubリポジトリから `uvx` で起動します。初回は依存関係の準備に時間がかかることがあります。
### Codex
```sh
codex mcp add kaken-mcp --env "KAKEN_APP_ID=YOUR_KAKEN_APP_ID" -- uvx --python 3.12 --from git+https://github.com/koizumikento/kaken-mcp.git@main kaken-mcp
codex mcp list
```
新しいセッションで `/mcp` を開くと、接続を確認できます。デスクトップ版では設定の「MCP servers」で、下のJSON例と同じコマンド・引数・環境変数を指定できます。[Codexの公式設定ガイド](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)
### 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` に項目を追加して、クライアントを再起動してください。`uvx` が見つからない場合は、実行ファイルの絶対パスを指定します。
```json
{
"mcpServers": {
"kaken-mcp": {
"command": "uvx",
"args": ["--python", "3.12", "--from", "git+https://github.com/koizumikento/kaken-mcp.git@main", "kaken-mcp"],
"env": {"KAKEN_APP_ID": "YOUR_KAKEN_APP_ID"}
}
}
}
```
登録後の質問例
> 科研費の採択課題から、都市のヒートアイランドに関する研究を5件探して。気になる課題は番号から研究期間と実施状況も調べて。
## MCPツール
| ツール | 用途 |
| --- | --- |
| `search_projects` | `query` にキーワードを指定し、課題名・課題番号・詳細ページを探す |
| `get_project` | `project_number` に課題・領域番号を指定し、研究機関、研究期間、実施状況を調べる。`21K00001` と `JP21K00001` のどちらも指定可能 |
| `search_researchers` | `name` に研究者の名前を指定し、研究者番号・現在の所属などを探す。`affiliation` で所属機関を絞り込める |
検索は1〜20件ずつ取得でき、続きは返された `next_start` を `start` に指定します。課題番号の照会では、該当するレコードを `items` に返します。照会した範囲で完全一致がなければ空になります。
## CLIで使う
CLIやPythonを実行するシェルで環境変数を設定します。
```powershell
$env:KAKEN_APP_ID = "YOUR_KAKEN_APP_ID"
```
macOSやLinuxのシェルでは `export KAKEN_APP_ID="YOUR_KAKEN_APP_ID"` を使います。
結果は標準出力にUTF-8のJSONで返ります。
```sh
uvx --python 3.12 --from git+https://github.com/koizumikento/kaken-mcp.git@main kaken-mcp search-projects --query "ヒートアイランド" --limit 5
uvx --python 3.12 --from git+https://github.com/koizumikento/kaken-mcp.git@main kaken-mcp get-project --project-number 21K00001
uvx --python 3.12 --from git+https://github.com/koizumikento/kaken-mcp.git@main kaken-mcp search-researchers --name "横山 幹子" --affiliation "筑波大学"
```
## Pythonから呼び出す
```sh
git clone https://github.com/koizumikento/kaken-mcp.git
cd kaken-mcp
uv sync --locked
```
```python
import asyncio
from kaken_mcp import get_project
result = asyncio.run(get_project("21K00001"))
print(result)
```
すでにイベントループがある場合は、関数を直接 `await` してください。
## 出典と利用条件
コードはMIT Licenseです。国立情報学研究所の科研費データベース KAKEN のOpenSearch APIを使用します。NIIのAPI利用細則では、自己の学術研究・非営利の情報利活用以外の目的には事前の申請と承認が必要です。取得した情報を利用する際は出典を記載してください。[公式API仕様](https://support.nii.ac.jp/ja/kaken/api/api_outline) · [KAKEN 利用規程](https://support.nii.ac.jp/ja/kaken/about/terms) · [NII ウェブAPI利用細則](https://support.nii.ac.jp/sites/default/files/cinii/webapi-term.pdf)
## 開発
```sh
uv sync --locked
uv run ruff check .
uv run ty check
uv run pytest
uv build
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo recent community issues