Skip to main content
Glama

npm-dev-mcp

by masamunet
README.md11.8 kB
# @masamunet/npm-dev-mcp npm run devプロセスを管理するMCPサーバーです。プロジェクトの自動検出、バックグラウンド実行、ログ監視、ポート管理機能を提供します。 ## 機能 - **プロジェクト自動検出**: package.jsonとdevスクリプトを持つディレクトリを自動で検索 - **モノレポ対応**: サブディレクトリのプロジェクトも検出・管理 - **環境変数読み込み**: .envファイルの自動検出・適用 - **ポート管理**: 開発サーバーが使用するポートの自動検出 - **ログ監視**: リアルタイムログ監視と履歴管理 - **プロセス管理**: 安全な開始・停止・再起動 ## 利用可能なツール ### scan_project_dirs プロジェクト内のpackage.jsonとdevスクリプトを検索します。 ```json { "success": true, "message": "2個のプロジェクトが見つかりました", "projects": [ { "directory": "/path/to/project", "name": "my-app", "devScript": "vite", "hasEnvFile": true, "envPath": "/path/to/project/.env", "priority": 15 } ] } ``` ### start_dev_server 指定ディレクトリでnpm run devをバックグラウンドで開始します。 **パラメータ:** - `directory` (オプション): 実行ディレクトリ(未指定時は自動検出) ```json { "success": true, "message": "Dev serverが開始されました", "process": { "pid": 12345, "directory": "/path/to/project", "status": "running", "startTime": "2024-01-01T00:00:00.000Z", "ports": [3000] } } ``` ### get_dev_status npm run devプロセスの状態を確認します。 ```json { "success": true, "message": "Dev serverはrunning状態です", "isRunning": true, "process": { "pid": 12345, "directory": "/path/to/project", "status": "running", "ports": [3000], "uptime": 120000 }, "logs": { "total": 50, "errors": 0, "warnings": 2, "hasRecentErrors": false } } ``` ### get_dev_logs npm run devのログを取得します。 **パラメータ:** - `lines` (オプション): 取得行数(デフォルト:50、最大:1000) ```json { "success": true, "message": "50行のログを取得しました", "logs": [ { "timestamp": "2024-01-01T00:00:00.000Z", "level": "info", "source": "stdout", "message": "Server running on http://localhost:3000" } ] } ``` ### stop_dev_server npm run devプロセスを停止します。 ```json { "success": true, "message": "Dev serverを正常に停止しました", "wasRunning": true, "stoppedProcess": { "pid": 12345, "uptime": 300000, "ports": [3000] } } ``` ### restart_dev_server npm run devプロセスを再起動します。 ```json { "success": true, "message": "Dev serverを正常に再起動しました", "restarted": true, "newProcess": { "pid": 12346, "status": "running", "ports": [3000] } } ``` ### get_health_status MCPサーバー自身のヘルス状態を取得します。 **パラメータ:** - `detailed` (オプション): 詳細なヘルスレポートを取得するかどうか(デフォルト: false) ```json { "success": true, "message": "MCPサーバーは正常状態です", "health": { "isHealthy": true, "uptime": 300, "devServerStatus": "running", "memoryUsage": { "heapUsed": 45, "rss": 78 }, "checks": { "memory": true, "processManager": true, "devServer": true }, "timestamp": "2024-01-01T00:00:00.000Z" } } ``` ### recover_from_state 保存された状態からの復旧を試行します。 **パラメータ:** - `force` (オプション): 強制的に復旧を実行するかどうか(デフォルト: false) ```json { "success": true, "message": "状態の復旧が完了しました", "recovery": { "devProcessRecovered": true, "projectContextRecovered": true, "warnings": [], "previousProcess": { "pid": 12345, "directory": "/path/to/project", "status": "running", "ports": [3000] }, "recoveryTimestamp": "2024-01-01T00:00:00.000Z" } } ``` ## インストールと使用 ### 0. 公開情報 パッケージはnpmレジストリに公開されています: - **パッケージ名**: `@masamunet/npm-dev-mcp` - **バージョン**: 1.1.0 - **レジストリ**: https://www.npmjs.com/package/@masamunet/npm-dev-mcp ### 1. npx経由での直接使用(推奨) ```bash # プロジェクトをスキャン npx @masamunet/npm-dev-mcp scan # dev serverを開始 npx @masamunet/npm-dev-mcp start # 状態確認 npx @masamunet/npm-dev-mcp status # ログを表示 npx @masamunet/npm-dev-mcp logs 50 # サーバー停止 npx @masamunet/npm-dev-mcp stop # ヘルプ表示 npx @masamunet/npm-dev-mcp --help ``` ### 2. グローバルインストール ```bash # グローバルインストール npm install -g @masamunet/npm-dev-mcp # 使用例 npm-dev-mcp scan npm-dev-mcp start npm-dev-mcp status ``` ### 3. ローカル開発用ビルド ```bash git clone https://github.com/masamunet/npm-dev-mcp.git cd npm-dev-mcp npm install npm run build ``` ### 4. MCPサーバーとして起動 ```bash npm start ``` ### 5. Claude Codeでの設定 #### 5.1 コマンドラインから追加(推奨) Claude Codeのmcpコマンドを使用して簡単に追加できます: ```bash claude mcp add npm-dev-mcp -- npx @masamunet/npm-dev-mcp --mcp ``` このコマンド実行後、Claude Codeを再起動すると@masamunet/npm-dev-mcpが利用可能になります。 #### 5.2 手動での設定ファイル編集 手動で設定する場合は、設定ファイルを直接編集します: **設定ファイルの場所:** **macOS:** ```bash ~/.claude/claude_desktop_config.json ``` **Windows:** ```bash %APPDATA%\Claude\claude_desktop_config.json ``` **設定内容:** **方法1: 直接パス指定** ```json { "mcpServers": { "@masamunet/npm-dev-mcp": { "command": "node", "args": ["/absolute/path/to/@masamunet/npm-dev-mcp/dist/index.js"] } } } ``` **方法2: npx経由(--mcpフラグ使用)** ```json { "mcpServers": { "@masamunet/npm-dev-mcp": { "command": "npx", "args": ["@masamunet/npm-dev-mcp", "--mcp"] } } } ``` **注意事項:** - 方法1の`args`の配列内のパスは**絶対パス**で指定してください - 例: `"/Users/username/projects/@masamunet/npm-dev-mcp/dist/index.js"` - 相対パスや`~`は使用できません - 方法2では`--mcp`フラグが必要です(MCPサーバーモードを強制) #### 5.3 Claude Codeの再起動 設定を追加した後、Claude Codeを再起動すると、@masamunet/npm-dev-mcpサーバーが利用可能になります。 #### 5.4 動作確認 Claude Code内で以下のように使用できます: ``` プロジェクトを検索してください → scan_project_dirs ツールが実行される npm run devを開始してください → start_dev_server ツールが実行される 開発サーバーの状態を確認してください → get_dev_status ツールが実行される ``` ## 開発 ### スクリプト - `npm run build`: TypeScriptをコンパイル - `npm run dev`: 開発モード(ウォッチモード) - `npm start`: MCPサーバーを起動 ### プロジェクト構造 ``` src/ ├── index.ts # MCPサーバーエントリーポイント ├── types.ts # 型定義 ├── components/ # コアコンポーネント │ ├── ProjectScanner.ts # プロジェクト検出 │ ├── ProcessManager.ts # プロセス管理 │ ├── LogManager.ts # ログ管理 │ ├── PortDetector.ts # ポート検出 │ └── EnvLoader.ts # 環境変数読み込み ├── tools/ # MCPツール実装 └── utils/ # ユーティリティ関数 ``` ## 対応プラットフォーム - macOS (lsofコマンド使用) - Linux (netstatコマンド使用) - Node.js 18以上 ## トラブルシューティング ### MCPサーバーが応答しない場合 MCPサーバーがクラッシュしたり応答しなくなった場合の復旧方法: #### 1. 開発サーバーのみ復旧する場合 **Claude Code内での復旧:** ``` 開発サーバーを再起動してください ``` → `restart_dev_server` ツールが自動実行されます **コマンドラインからの復旧:** ```bash # 開発サーバーの状態確認 npx @masamunet/npm-dev-mcp status # 開発サーバー再起動 npx @masamunet/npm-dev-mcp restart # ログ確認 npx @masamunet/npm-dev-mcp logs 50 ``` #### 2. MCPサーバー全体を復旧する場合 **Claude Codeの再起動:** 1. Claude Codeアプリケーションを完全に終了 2. アプリケーションを再起動 3. MCPサーバーが自動的に再接続されます **手動でのMCPサーバー確認:** ```bash # プロセス確認 ps aux | grep @masamunet/npm-dev-mcp # 必要に応じてプロセス終了 pkill -f @masamunet/npm-dev-mcp ``` #### 3. 設定の確認 MCPサーバーが起動しない場合、設定ファイルを確認: **macOS:** ```bash cat ~/.claude/claude_desktop_config.json ``` **Windows:** ```cmd type %APPDATA%\Claude\claude_desktop_config.json ``` 正しい設定例: ```json { "mcpServers": { "@masamunet/npm-dev-mcp": { "command": "npx", "args": ["@masamunet/npm-dev-mcp", "--mcp"] } } } ``` #### 4. PM2を使用したプロセス管理(上級者向け) より堅牢な運用を行いたい場合、PM2プロセスマネージャーを使用できます: **PM2のインストール:** ```bash npm install -g pm2 ``` **PM2でのMCPサーバー管理:** ```bash # MCPサーバーをPM2で開始 npm run pm2:start # 状態確認 npm run pm2:status # ログ確認 npm run pm2:logs # 再起動 npm run pm2:restart # 停止 npm run pm2:stop # 完全削除 npm run pm2:delete ``` **PM2の利点:** - 自動再起動(クラッシュ時) - メモリ監視と制限 - ログローテーション - クラスター機能(必要に応じて) #### 5. 外部監視用ヘルスチェックエンドポイント 外部の監視システム(Prometheus、Nagios等)と連携するためのHTTPエンドポイントを提供できます: **ヘルスエンドポイントの有効化:** ```bash # 環境変数を設定 export HEALTH_ENDPOINT=true export HEALTH_PORT=8080 export HEALTH_HOST=127.0.0.1 # MCPサーバーを開始 npm start ``` **利用可能なエンドポイント:** ```bash # 基本ヘルスチェック curl http://127.0.0.1:8080/health # 詳細ヘルスレポート curl http://127.0.0.1:8080/health/detailed # Prometheusメトリクス curl http://127.0.0.1:8080/metrics ``` **環境変数:** - `HEALTH_ENDPOINT`: エンドポイントを有効化(true/false) - `HEALTH_PORT`: ポート番号(デフォルト: 8080) - `HEALTH_HOST`: ホスト(デフォルト: 127.0.0.1) - `HEALTH_PATH`: ヘルスチェックパス(デフォルト: /health) #### 6. よくある問題と解決方法 **問題: "spawn ENOENT" エラー** - 原因: Node.jsまたはnpxが見つからない - 解決: PATHの確認とNode.jsの再インストール **問題: 開発サーバーが起動しない** - 原因: ポートが使用中、package.jsonの設定不備 - 解決: `npx @masamunet/npm-dev-mcp scan` でプロジェクト検出を確認 **問題: ログが表示されない** - 原因: プロセスが正常に開始されていない - 解決: `npx @masamunet/npm-dev-mcp status` で状態確認 ## ライセンス MIT

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masamunet/npm-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server