はじめに
デジタル庁が公開している補助金検索 MCP サーバー「jgrants-mcp-server」をご存じでしょうか。
Jグランツ(デジタル庁が運用する補助金電子申請システム)の公開 API を MCP サーバーとして実装したもので、Claude Desktop などの AI クライアントから自然言語で補助金を検索できます。
とても便利なツールなのですが、Claude Desktopを使う一般ユーザーが使うには少しハードルが高いかなと思ったので、本記事ではその課題を解決するために行った改変をご紹介します。
注意: 本実装は Digital Agency, Government of Japan が公開する jgrants-mcp-server を元に TypeScript 化・改変した非公式実装です。デジタル庁との提携・認証・公式保証を示すものではありません。
前置きはいいからすぐに使いたい方
導入手順は「使い方」セクションをご覧ください。Node.js さえあれば設定ファイルに数行追記するだけで使えます。
元実装の課題:一般ユーザーには難しすぎる
元のリポジトリを Claude Desktop で使うには、以下の手順が必要でした。
# 1. リポジトリをクローン
git clone https://github.com/digital-go-jp/jgrants-mcp-server.git
cd jgrants-mcp-server
# 2. 依存パッケージをインストール
npm install
# 3. ビルド
npm run build
# 4. サーバーを起動(常駐させる)
npm start
さらに Claude Desktop の設定ファイルに以下を追記する必要があります。
{
"mcpServers": {
"jgrants": {
"command": "uvx",
"args": ["fastmcp", "run", "http://localhost:8000/mcp"]
}
}
}
この手順の問題点:
-
git clone→ Git のインストールと基本操作の知識が必要 -
npm install/npm run build→ Node.js と npm の知識が必要 -
npm startでサーバーを常駐起動させ続ける必要がある -
uvx(Python のuvツール)のインストールも必要
エンジニアなら問題ありませんが、補助金の活用を検討している中小企業の経営者や担当者にとっては、この手順はちょっと難しいかなと思う部分があります(使う度に npm start をしないといけないし)
解決策:npx で動く stdio 型 MCP サーバーへ
Claude Desktop は stdio 接続をネイティブサポートしています。stdio 型なら、MCP サーバーを npx コマンドで起動でき、設定ファイルを書くだけで使えます。
改変後の Claude Desktop 設定はこれだけです:
{
"mcpServers": {
"jgrants": {
"command": "npx",
"args": ["-y", "@ishidad2/jgrants-mcp-server"]
}
}
}
必要なのは Node.js のインストールのみ。 git も、クローンも、ビルドも、サーバーの常駐起動も不要です。
Claude Desktop を再起動するたびに npx が自動でパッケージを取得・起動してくれます。
実装上のポイント
1. transport を httpStream から stdio へ変更
元実装は HTTP サーバーとして起動する httpStream transport を使用していました。
// 変更前
server.start({
transportType: "httpStream",
httpStream: { endpoint: "/mcp", host, port },
});
// 変更後
server.start({ transportType: "stdio" });
たったこれだけです。FastMCP フレームワークが stdio の入出力を MCP プロトコルとして処理してくれます。
2. console.info → console.error
stdio モードでは、stdout は MCP プロトコルの通信に使われます。そのため、ログ出力は必ず stderr に向ける必要があります。
// 変更前(stdout に出力されてしまいプロトコルを破壊する)
console.info(`jGrants MCP Server starting on http://${host}:${port}/mcp`);
// 変更後(stderr に出力)
console.error("jGrants MCP Server starting (stdio mode)");
3. Python スクリプトとの共存
元実装には PPTX/ZIP ファイルを変換するための Python スクリプト(scripts/convert.py)があります。
Python スクリプトは補助金の添付資料(PowerPoint・ZIP 形式)を読み取る際に使われるオプション機能です。インストールしなくても補助金の検索や PDF・Word・Excel の取得は問題なく使えます。
PowerPoint・ZIP 形式の添付資料も読み取りたい場合は、以下の手順で Python 環境を用意してください。
PowerPoint・ZIP を読み取れるようにする手順(オプション)
- Python 公式サイト から Python 3.11 以上をインストール
- ターミナル(macOS)またはコマンドプロンプト(Windows)で以下を実行:
pip install markitdown
インストール後は Claude Desktop を再起動するだけで自動的に有効になります。
| 環境 | PDF / Word / Excel | PowerPoint / ZIP |
|---|---|---|
| Python なし(デフォルト) | 正常に読み取り可能 | 読み取り不可 |
| Python + markitdown あり | 正常に読み取り可能 | 正常に読み取り可能 |
技術的な背景としては、Python スクリプトは child_process.execFile で別プロセスとして起動されるため、MCP の stdio 通信とは完全に独立しています。Python 未インストール環境では自動的にスキップされます。
使い方
前提条件
- Node.js 18 以上
Claude Desktop の設定
設定ファイルを開いて追記します。
-
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json -
Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"jgrants": {
"command": "npx",
"args": ["-y", "@ishidad2/jgrants-mcp-server"]
}
}
}
または
Claude Desktopを起動 → 設定 → 開発者 → 設定を編集 → claude_desktop_config.json
Claude Desktop を再起動すれば完了です。
使えるツール
| ツール名 | 機能 |
|---|---|
search_subsidies |
キーワード・業種・地域・従業員数で補助金を検索 |
get_subsidy_detail |
補助金の詳細情報と添付ファイルを取得 |
get_subsidy_overview |
締切期間別・金額規模別の統計情報を取得 |
get_file_content |
PDF/Word/Excel などの添付資料を Markdown で取得 |
ping |
疎通確認 |
実際の使用例
Claude Desktop で以下のように話しかけるだけで補助金を検索できます。
「IT導入補助金について教えて」
「東京都で受付中の製造業向け補助金を探して」
「補助上限額が高い補助金を一覧で見せて」
まとめ
| 元実装 | 本実装(非公式) | |
|---|---|---|
| 接続方式 | HTTP + uvx プロキシ | stdio(npx 直接) |
| 必要な知識 | git / npm / Python / uv | Node.js のみ |
| サーバー常駐 | 必要 | 不要 |
| 設定の複雑さ | 高い | JSON 数行 |
MCP サーバーを一般ユーザーに使ってもらうには、stdio + npx の組み合わせが現時点では最もハードルが低いと感じています。
補助金情報の調査に AI を活用したい方は、ぜひ試してみてください。
リポジトリ・パッケージ
GitHub
https://github.com/ishidad2/jgrants-mcp-server
npm
https://www.npmjs.com/package/@ishidad2/jgrants-mcp-server
本実装は非公式の改変版です。元リポジトリは digital-go-jp/jgrants-mcp-server です。
Jグランツ API の利用にあたっては 利用規約 に従ってください。


