kaken-mcp-server
kaken-mcp-server
科学研究費助成事業データベース(KAKEN)の公式 OpenSearch API を Claude から利用するためのローカル MCP サーバ。claude_desktop_config.json の env 経由で KAKEN_APPID を渡せるため、Win/Mac の Claude Desktop で確実に動作する。
提供ツール:
ツール名 | 用途 |
| 研究課題を多条件で検索(kw/qa/qb/qg/qh/qm/qc/qd/qe/qf/s1/s2/o1/od) |
| 研究者を検索(kw/qg/qm/qh/qq/qs/qe/qd) |
| 課題番号から1件の詳細取得 |
| 研究者番号から関与全課題を取得(業績把握用) |
0. インストール方法(3通り)
すべての方法で、先に CiNii API 利用登録 でアプリケーションID(appid)を取得しておくこと。
A. Claude Desktop 拡張機能(.mcpb バンドル)— 推奨
Releases から kaken-mcp-server-x.y.z.mcpb をダウンロードし、ダブルクリック(または Claude Desktop の 設定 → 拡張機能 にドラッグ&ドロップ)。インストールダイアログで appid を入力するだけで使える。Node.js のインストールも不要(Claude Desktop 内蔵ランタイムで動作)。
.mcpb を自分でビルドする場合:
npm install
npm run build # tsc → dist/
node scripts/build-mcpb.mjs # kaken-mcp-server-x.y.z.mcpb を生成Note:
npx @anthropic-ai/mcpb packは使わない。新しい mcpb CLI が生成する zip (ディレクトリエントリ無し・小構成)だと Claude Desktop のインストーラが "reply was never sent" で無応答になる。scripts/build-mcpb.mjsはインストール 実績のある形式(dist + production node_modules 同梱、dir エントリ + unix ファイル種別ビット付き zip)で生成する。 なおnpm run bundle(esbuild 単一ファイルserver/index.cjs)は Claude Code プラグイン用で、.mcpb には使わない。
B. Claude Code プラグイン(マーケットプレイス経由)
/plugin marketplace add masa-med-ai/kaken-mcp-server
/plugin install kaken-search@kaken-marketplaceappid は環境変数で渡す(シェルの rc ファイル等に設定):
export KAKEN_APPID="YOUR_APPID_HERE"C. 手動セットアップ(claude_desktop_config.json)
以下の手順1〜3を参照。
1. 手動セットアップ
1-1. appid を取得
CiNii API 利用登録 でアプリケーションID(appid)を取得する。
1-2. このリポジトリを準備
git clone <this-repo> # または手動配置
cd kaken-mcp-server
npm install
npm run builddist/index.js が生成される。
1-3. claude_desktop_config.json に登録
設定ファイルの場所:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
以下を追記する(既存の mcpServers がある場合はその中にマージ):
{
"mcpServers": {
"kaken": {
"command": "node",
"args": ["/絶対パス/kaken-mcp-server/dist/index.js"],
"env": {
"KAKEN_APPID": "YOUR_APPID_HERE"
}
}
}
}Windows の例(パス区切りに注意。バックスラッシュは \\ でエスケープ):
{
"mcpServers": {
"kaken": {
"command": "node",
"args": ["C:\\Users\\<name>\\kaken-mcp-server\\dist\\index.js"],
"env": {
"KAKEN_APPID": "YOUR_APPID_HERE"
}
}
}
}設定後、Claude Desktop を再起動するとツールが利用可能になる。
2. 動作確認
Claude に以下のように依頼すれば、自動的にツールが呼ばれる:
「KAKEN で AI 内視鏡の先行研究を調べて」
「研究者番号 80802743 の科研費業績を取得して」
「19K20626 の研究課題の詳細を見せて」
「昭和大学の消化器内科学分野の課題を年度別に集計して」
3. ツール仕様
kaken_search_projects
引数 | 型 | 説明 |
| string | フリーワード検索(全フィールド対象) |
| string | 研究課題名で検索 |
| string | 研究課題番号(例: |
| string | 研究者の姓名 |
| string | 研究者の所属機関 |
| string | 研究者番号(8桁) |
| string | 研究種目(例: |
| string | 審査区分/研究分野 |
| string | 研究機関 |
| string | キーワード |
| string | 助成開始年度 From |
| string | 助成終了年度 To |
|
| 助成期間の検索条件(1=開始年度〈既定〉, 2=終了年度, 3=期間の一部, 4=全部) |
|
| ソート(1=適合度, 2=開始年新しい順〈既定〉, 3=古い順, 4=配分額多い順, 5=少ない順) |
| integer | 1ページの件数(20/50/100/200/500、既定100。中間値は近い許容値に切り上げ) |
| integer | 開始位置(既定1) |
|
| 言語(既定 |
|
| 出力形式(既定 |
kaken_search_researchers
kw, qg, qm, qh(現在の所属機関), qq(部局), qs(職名), qe, qd, rw, start, lang, format を受け取る。
研究者検索API(nrid.nii.ac.jp)は XML 非対応のため、内部では format=json で取得して
パースしている(研究課題検索は従来どおり XML)。取得可能な検索結果は最大1000件。
kaken_get_project
awardNumber(必須): KAKEN研究課題番号format:ai/json
kaken_get_researcher_grants
researcherNumber(必須): 研究者番号rw: 件数(既定200。一人の研究者の全課題を取得するため大きめ)format:ai/table/json
4. 出力形式
ai(既定)は AI に読ませやすい圧縮 Markdown:
## 1. [19K20626] IIIFとTEIを用いたオンライン翻刻支援システムの開発
- 研究代表者: 中村 覚(80802743)/ 東京大学 史料編纂所 / 助教
- 研究種目: 若手研究
- 研究期間: 2019-04-01 〜 2023-03-31
- 状態: 完了
- 配分額: 直接 ¥3,500,000 / 間接 ¥1,050,000 / 合計 ¥4,550,000
- キーワード: IIIF, TEI, 人文情報学
- URL: https://kaken.nii.ac.jp/grant/KAKENHI-PROJECT-19K20626/table は Markdown のテーブル、json は構造化データ。
5. 開発
npm run dev # tsx で直接実行(ホットリロード相当)
npm run build # tsc でビルド
npm start # node でビルド済みを実行6. 利用上の注意
短時間の大量アクセスを避けること(KAKEN 利用規約)
APIで返る所属情報は採択時点のものであり、現在の所属とは異なる場合がある
検索結果の二次利用には KAKEN の利用規約を確認すること