egov-law-mcpが動かない時の対処法|npx・Node.js・Windows接続エラー
e-Gov法令MCP(@codeagentjp/egov-law-mcp)がClaude CodeやCursorで接続失敗する時の切り分け手順を、npx解決、Node.jsバージョン、Windows固有、e-Gov API側の4段階で解説します。
- mcp
- claude-code
- cursor
- egov
- japanese-law
- npm
- troubleshooting
- 情報確認
- 参考リンク
- 6件
- 更新性
- 定期更新
- 読了目安
- 約5分
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
@codeagentjp/egov-law-mcp をClaude CodeやCursorに追加したのに、failed と表示される、ツールが呼ばれない、Windowsだけ動かない。この記事は、そうした接続トラブルを症状別に切り分けるための実務メモです。
セットアップ手順そのものはClaude Codeでe-Gov法令を検索する設定と使い方、サーバーの設計はe-Gov法令MCPの仕組みと安全境界にまとめています。この記事は「設定したのに動かない」場面だけを扱います。
まず結論
egov-law-mcpの接続失敗は、経験上ほぼ次の4つに収束します。
- npxがパッケージを解決できていない(キャッシュ破損、レジストリ未到達)
- Node.jsが20未満(
engines要件を満たさない) - Windows固有のnpx起動問題(
spawn npx ENOENT) - e-Gov API側の問題(サーバーは正常、上流が応答しない)
切り分けの鉄則は1つです。MCPクライアント抜きで npx -y @codeagentjp/egov-law-mcp を単体起動し、サーバー側とクライアント側のどちらが悪いかを先に確定させること。ここを飛ばして設定JSONをいじり始めると、時間を溶かします。
前提: 「無言で待つ」のが正常動作
最初に、故障ではないものを故障と誤認しないようにします。
egov-law-mcpはstdio型のMCPサーバーです。ターミナルで直接起動すると、何も表示せずに待機します。
npx -y @codeagentjp/egov-law-mcpここでポート番号もバナーも出ませんが、それが正常です。Model Context Protocolのstdio transportは、標準入力からJSON-RPCメッセージを受け取り、標準出力へ応答を書く仕様です。Webサーバーのように「Listening on port 3000」と出ないことを、起動失敗と判断しないでください。
逆に言うと、この単体起動でエラーメッセージが出て終了する場合は、MCPクライアント以前の問題です。以降の症状別の切り分けに進みます。
症状1: claude mcp list で failed になる
Claude Codeで追加したのに接続できない場合、まず状態を確認します。
claude mcp listclaude mcp get egov-lawfailed の場合は、Claude Codeがサーバープロセスを起動できていません。原因の大半は、npxがパッケージを解決できないことです。順に確認します。
1. npx単体で起動できるか
npx -y @codeagentjp/egov-law-mcp無言で待機すれば、サーバー側は正常です。クライアント設定(サーバー名、コマンド、引数のtypo)を見直してください。
2. npxキャッシュが壊れていないか
npm error や ENOTEMPTY、EEXIST のようなエラーで単体起動も失敗する場合は、npxのキャッシュ破損を疑います。npxのキャッシュは ~/.npm/_npx にあります。
rm -rf ~/.npm/_npxnpx -y @codeagentjp/egov-law-mcp3. レジストリに到達できているか
社内ネットワークやプロキシ環境では、registry.npmjs.org への到達自体が塞がれていることがあります。
npm pingnpm view @codeagentjp/egov-law-mcp versionnpm view がバージョン(執筆時点では 0.1.0)を返さないなら、npmレジストリへの経路の問題です。プロキシ設定(npm config get proxy / https-proxy)を確認してください。
症状2: Node.jsのバージョンが古い
egov-law-mcpは engines で Node.js 20以上を要求します。Node 18以前で動かすと、EBADENGINE の警告や、モジュール読み込み時の SyntaxError で落ちることがあります。
node -vv20.0.0 未満なら、まずここを直します。注意が必要なのは、ターミナルのnodeとMCPクライアントが起動するnodeが別物になっているケースです。nvmやvoltaでターミナル上は20系でも、GUIアプリ(Claude Desktopなど)がPATH解決で古いnodeを拾うことがあります。
その場合は、MCP設定のcommandをnodeの絶対パスで固定するのが確実です。
{ "mcpServers": { "egov-law": { "command": "/path/to/node20/bin/npx", "args": ["-y", "@codeagentjp/egov-law-mcp"] } }}which npx(macOS/Linux)や where npx(Windows)で、実際に使われるパスを確認できます。
症状3: Windowsで spawn npx ENOENT
Windowsネイティブ環境で最も多い失敗です。Windowsでは npx が .cmd バッチファイルとして解決されるため、MCPクライアントが npx を直接spawnすると見つけられないことがあります。
対処は cmd /c 経由にすることです。Claude Codeなら次で追加し直します。
claude mcp remove egov-lawclaude mcp add --transport stdio egov-law -- cmd /c npx -y @codeagentjp/egov-law-mcp設定JSONを直接書くクライアントでは、次の形にします。
{ "mcpServers": { "egov-law": { "command": "cmd", "args": ["/c", "npx", "-y", "@codeagentjp/egov-law-mcp"] } }}WSLを使っている場合は逆に、WindowsのClaude CodeとWSL内のnode環境が別世界である点に注意してください。WSL側にインストールしたnodeは、Windowsネイティブのクライアントからは見えません。クライアントを動かしている側の環境にnode 20+が必要です。
症状4: 接続済みなのにツール呼び出しが失敗する
/mcp で egov-law が接続済みなのに、search_laws や get_article がエラーを返す場合は、MCPサーバーではなく上流のe-Gov法令API側を疑います。
切り分けは、e-Gov APIへ直接アクセスすることです。
curl -s "https://laws.e-gov.go.jp/api/1/lawdata/415AC0000000057" | head -c 300XMLが返れば、e-Gov側は生きています。返らない場合は、次のどちらかです。
| 状態 | 判断 |
|---|---|
| ブラウザからも laws.e-gov.go.jp が開けない | e-Gov側のメンテナンス・障害。待つ |
| ブラウザでは開けるがcurlは失敗する | ローカルのプロキシ・証明書・DNS設定の問題 |
e-Gov法令検索は定期メンテナンスで停止することがあります。深夜帯にツール呼び出しだけ失敗する場合は、まず障害・メンテナンス情報を確認してから自分の環境を疑うと早いです。
また、存在しない条番号や法令IDを指定した場合のエラーは正常動作です。法令IDが不確かな時は、get_article の前に search_laws で正式なlawIdを取り直してください。
症状5: 接続が不安定・起動直後に切断される
接続できたり切れたりする場合は、stdoutの汚染を疑います。stdio型MCPは標準出力をJSON-RPC専用に使うため、そこに余計な文字列が1行混ざるだけでプロトコルが壊れます。
egov-law-mcp本体はログをstderrにしか書きませんが、次のような外側の要因でstdoutが汚れることがあります。
- シェルのrcファイル(
.zshrc/.bashrc)にechoがあり、非対話シェル起動時にも出力される - npxをラップした自作スクリプトが進捗メッセージをstdoutに出している
- npmの古いバージョンが通知メッセージをstdoutに混ぜる
それでも直らない時
ここまでで直らない場合は、ログを取ってから報告に進みます。
Claude Codeのデバッグログを見る
claude --debugデバッグモードで起動すると、MCPサーバーの起動コマンド、stderr出力、接続失敗の理由がログに出ます。egov-law 関連の行を探してください。
GitHub Issueで報告する
再現手順が固まったら、SHAYOUWORLD/egov-law-mcp へIssueを立ててください。次の4点があると調査が早く進みます。
- OS(Windowsの場合はネイティブかWSLか)
node -vとnpm -vの出力npx -y @codeagentjp/egov-law-mcp単体起動の結果- MCPクライアント名と設定JSON(そのまま貼り付け)
診断チェックリスト
最後に、この記事の切り分けを上から順に実行できる形でまとめます。
| # | 確認 | コマンド | NGの時 |
|---|---|---|---|
| 1 | Node 20以上か | node -v | Nodeを更新、またはパス固定(症状2) |
| 2 | npx単体で起動するか | npx -y @codeagentjp/egov-law-mcp | キャッシュ削除・レジストリ確認(症状1) |
| 3 | stdoutが汚れていないか | tools/list をパイプで送る(症状5) | rcファイル・ラッパーを掃除 |
| 4 | Windowsか | — | cmd /c 経由に変更(症状3) |
| 5 | e-Gov APIが生きているか | curl で直接アクセス(症状4) | 障害情報を確認して待つ |
| 6 | クライアントのログ | claude --debug | エラー行を添えてIssueへ |
1〜3がすべて通るのにクライアントから繋がらない場合、問題はほぼ確実に設定JSONのtypoか、クライアントが参照しているnode環境の食い違いです。
egov-law-mcpで何ができるかは使い方実演記事、他のMCPサーバーと合わせた選定はMCP厳選カタログを参照してください。法案段階の調査にはhouan-mcpという選択肢もあります。egov-law-mcpに限らないMCP接続全般の切り分けはMCPサーバーが繋がらない時のチェックリストにまとめています。
参考リンク
一次情報・参考リンク
- npm: @codeagentjp/egov-law-mcp https://www.npmjs.com/package/@codeagentjp/egov-law-mcp
- GitHub: SHAYOUWORLD/egov-law-mcp https://github.com/SHAYOUWORLD/egov-law-mcp
- Claude Code Docs: Connect Claude Code to tools via MCP https://code.claude.com/docs/en/mcp
- Model Context Protocol: Transports https://modelcontextprotocol.io/specification/2025-11-25/basic/transports
- e-Gov 法令API(Version 1)の概要 https://laws.e-gov.go.jp/docs/law-data-basic/8529371-law-api-v1/
- Node.js: Previous Releases https://nodejs.org/en/about/previous-releases
関連して読む
- · 参考リンク 6件
「下請法」で法令検索すると0件になる|通称と現行法令名のズレをMCPで埋める
e-Gov法令MCP(@codeagentjp/egov-law-mcp)のsearch_lawsは法令名マッチのため、下請法・電帳法・景表法といった通称は0件で返ります。実測ログをもとに、通称→正式名称の解決手順と、改題された法令の扱いを整理します。
- · 参考リンク 6件
Claude Codeでe-Gov法令を検索する|egov-law-mcpの設定と使い方
e-Gov法令MCPをClaude Code、Claude Desktop、Cursorへ追加し、法令検索・条文取得・関連法令確認を出典URL付きで行う手順を解説します。
- · 参考リンク 5件
その条文は「現在」のものです|e-Gov法令API v2の時点指定(asof)と通称検索を実測
e-Gov法令API v2はasofパラメータで過去時点の条文を返し、法令名検索が通称(abbrev)にもマッチします。v1しか叩いていないegov-law-mcp 0.1.0では何が引けないのかを、下請法の改題を題材に実測ログで確認します。