🚀 サービスヘルスMCPサーバー
Claude DesktopとMCP互換のAIアシスタント向けの、最初の汎用サービスヘルスモニタリングツールです。
このMCPサーバーは、AIアシスタントがエンタープライズレベルのセキュリティでWebサービス、API、HTTPエンドポイントを監視できるようにする、プロフェッショナルグレードのサーバーです。DevOpsやモニタリングに最適で、サービスが円滑に動作していることを保証します。
🚀 クイックスタート
ステップ1: インストール
git clone https://github.com/natashanajdovski/service-health-mcp.git
cd service-health-mcp
npm install
npm run build
ステップ2: Claude Desktopの設定
設定ファイルを見つける:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
この設定を追加する:
{
"mcpServers": {
"service-health": {
"command": "node",
"args": ["C:\\path\\to\\service-health-mcp\\dist\\server.js"],
"cwd": "C:\\path\\to\\service-health-mcp"
}
}
}
ステップ3: 再起動とテスト
- Claude Desktopを完全に閉じてから再開する
- 次のコマンドでテストする:
"Check if google.com is healthy"
- プロフェッショナルなヘルスレポートがすぐに表示されます! 🎉
✨ 主な機能
🔍 ヘルスモニタリング
- ✅ HTTP/HTTPSエンドポイントのテスト
- ✅ レスポンス時間の測定
- ✅ ステータスコードの検証
- ✅ カスタムヘッダーのサポート
- ✅ 複数のHTTPメソッド
- ✅ 設定可能なタイムアウト(1 - 30秒)
🛡️ エンタープライズセキュリティ
- ✅ SSRF攻撃の防止
- ✅ 内部ネットワークのブロック
- ✅ 入力検証とサニタイズ
- ✅ プロトコル制限(HTTP/HTTPSのみ)
- ✅ ポートフィルタリングと安全なデフォルト設定
- ✅ クレデンシャルの露出防止
⚡ パフォーマンス
- ✅ サブ秒単位のレスポンス時間
- ✅ 効率的なコネクションハンドリング
- ✅ 最小限のリソース使用量
- ✅ 非ブロッキングの非同期操作
- ✅ 最適化されたエラーハンドリング
- ✅ スマートなリトライロジック
🔧 開発者体験
- ✅ 完全なTypeScriptサポート
- ✅ プロフェッショナルなエラーメッセージ
- ✅ 包括的なロギング
- ✅ 簡単なMCP統合
- ✅ ホットリロード開発
- ✅ 充実したドキュメント
📦 インストール
前提条件
- Node.js 18+
- TypeScript 5+
- npmまたはyarn
開発コマンド
npm run dev
npm run build
npm run start
npm run clean
MCPインスペクターでのテスト
npx @modelcontextprotocol/inspector src/server.ts
プロジェクト構造
service-health-mcp/
├── src/
│ ├── server.ts # 🎯 メインのMCPサーバー
│ ├── health/
│ │ └── http-checker.ts # 🔍 コアのヘルスロジック
│ ├── security/
│ │ └── url-validator.ts # 🛡️ SSRF保護
│ └── tools/
│ └── check-http.ts # 🛠️ MCPツールインターフェース
├── dist/ # 📦 コンパイルされたJavaScript
├── docs/ # 📚 ドキュメント
└── package.json # 📋 プロジェクト設定
💻 使用例
基本的な使用法
📝 "Check if google.com is healthy"
📝 "Is api.github.com responding properly?"
📝 "Test if my-website.com is up"
高度な使用法
📝 "Check if api.example.com/health is healthy with a 15 second timeout"
📝 "Test httpbin.org/post using POST method"
📝 "Check if my-api.com returns 201 status code"
DevOpsとモニタリング
📝 "Check if our production API is responding normally"
📝 "Test all our microservices for health"
📝 "Monitor our CDN endpoints"
📚 ドキュメント
check_http_endpoint
説明: HTTP/HTTPSエンドポイントが正常かつ応答性があるかを確認します。
パラメーター
| パラメーター |
タイプ |
必須 |
デフォルト |
説明 |
url |
string |
✅ はい |
- |
チェックするURL(例: https://google.com) |
method |
"GET" | "POST" | "PUT" | "DELETE" |
❌ いいえ |
"GET" |
使用するHTTPメソッド |
timeout |
number |
❌ いいえ |
10000 |
リクエストのタイムアウト時間(ミリ秒、1000 - 30000) |
expectedStatus |
number |
❌ いいえ |
200 |
期待するHTTPステータスコード(100 - 599) |
headers |
Record<string, string> |
❌ いいえ |
{} |
オプションのHTTPヘッダー |
リクエストの例
{
"url": "https://api.example.com/health",
"method": "GET",
"timeout": 15000,
"expectedStatus": 200,
"headers": {
"User-Agent": "Health-Checker/1.0",
"Accept": "application/json"
}
}
レスポンス形式
{
status: "healthy" | "unhealthy" | "warning";
responseTime: number;
statusCode?: number;
message: string;
details: {
url: string;
timestamp: string;
error?: string;
}
}
🔧 技術詳細
SSRF(サーバーサイドリクエスト偽造)保護
❌ BLOCKED: localhost, 127.0.0.1
❌ BLOCKED: 192.168.x.x, 10.x.x.x, 172.16 - 31.x.x
❌ BLOCKED: 169.254.169.254 (クラウドメタデータ)
❌ BLOCKED: 非HTTPプロトコル (ftp, fileなど)
✅ ALLOWED: パブリックなHTTP/HTTPSエンドポイントのみ
入力検証
- URL形式: RFC準拠の検証
- パラメータータイプ: Zodによる厳格なタイプチェック
- タイムアウト範囲: 1 - 30秒の制限
- メソッド制限: GET、POST、PUT、DELETEのみ
- ポートフィルタリング: 標準のWebポート(80、443、8080、8443)
安全なデフォルト設定
- 10秒のタイムアウト (ハングを防止)
- GETメソッド (侵入性が最も低い)
- クレデンシャルの保存なし (ステートレス動作)
- 最小限のエラー詳細 (情報漏洩を防止)
📄 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照してください。
要約: このプロジェクトを自由に使用、変更、配布することができます。ただし、ライセンス通知を含めてください。