Skip to main content
Glama
start-all.sh7.55 kB
#!/bin/bash # オールインワン起動スクリプト # MCPサーバー + ngrokを同時に起動 echo "==========================================" echo "🚀 Universal MCP Server + ngrok" echo " オールインワン起動" echo "==========================================" echo "" # 既存プロセスのチェック echo "🔍 既存プロセスをチェックしています..." EXISTING_MCP=$(pgrep -f "node.*build/index") EXISTING_NGROK=$(pgrep -f "ngrok") if [ -n "$EXISTING_MCP" ] || [ -n "$EXISTING_NGROK" ]; then echo "" echo "⚠️ 既に起動中のプロセスが見つかりました:" [ -n "$EXISTING_MCP" ] && echo " - MCP Server (PID: $EXISTING_MCP)" [ -n "$EXISTING_NGROK" ] && echo " - ngrok (PID: $EXISTING_NGROK)" echo "" read -p "既存のプロセスを停止して続行しますか? (Y/n): " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Nn]$ ]]; then echo "" echo "🛑 既存プロセスを停止しています..." ./stop-all.sh echo "" echo "✅ 停止完了。起動を続行します..." sleep 2 else echo "" echo "❌ 起動をキャンセルしました" echo "" echo "💡 既存プロセスを停止する場合:" echo " ./stop-all.sh" exit 1 fi fi echo "" # 設定 PORT="${MCP_HTTP_PORT:-3000}" MODE="${MCP_MODE:-http}" # APIキーの確認・生成 if [ -z "$MCP_API_KEY" ]; then echo "⚠️ APIキーが設定されていません" echo "" read -p "APIキーを自動生成しますか? (推奨) (Y/n): " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Nn]$ ]]; then export MCP_API_KEY=$(openssl rand -hex 32) echo "✅ APIキーを生成しました" echo " 保存してください: $MCP_API_KEY" echo "" # .envファイルに保存 if [ ! -f ".env" ]; then cp .env.example .env 2>/dev/null || touch .env fi # 既存のMCP_API_KEYを削除して追加 sed -i '/^MCP_API_KEY=/d' .env 2>/dev/null echo "MCP_API_KEY=$MCP_API_KEY" >> .env echo " .envファイルに保存しました" echo "" sleep 2 else echo "⚠️ 認証なしで続行します(開発用のみ)" echo "" sleep 1 fi fi # ビルド確認 if [ ! -f "build/index-multimode.js" ]; then echo "📦 ビルドファイルが見つかりません。ビルドを実行します..." npm run build if [ $? -ne 0 ]; then echo "❌ ビルドに失敗しました" exit 1 fi echo "" fi # ディレクトリ作成 mkdir -p logs data echo "==========================================" echo "1️⃣ MCPサーバーを起動します" echo "==========================================" echo "" echo " モード: $MODE" echo " ポート: $PORT" echo " 認証: $([ -n "$MCP_API_KEY" ] && echo "あり" || echo "なし")" echo "" # MCPサーバーをバックグラウンドで起動 MCP_MODE=$MODE MCP_HTTP_PORT=$PORT node build/index-multimode.js > logs/server.log 2>&1 & SERVER_PID=$! echo " サーバーPID: $SERVER_PID" echo " 起動中... (3秒待機)" sleep 3 # サーバーが起動しているか確認 if ! ps -p $SERVER_PID > /dev/null; then echo "" echo "❌ MCPサーバーの起動に失敗しました" echo "" echo "ログを確認してください:" tail -20 logs/server.log exit 1 fi # ヘルスチェック if curl -s http://localhost:$PORT/health > /dev/null 2>&1; then echo " ✅ サーバーが正常に起動しました" else echo " ⚠️ ヘルスチェックに失敗しました" echo " サーバーは起動していますが、応答がありません" fi echo "" echo "==========================================" echo "2️⃣ ngrokを起動します" echo "==========================================" echo "" # ngrokの確認 if ! command -v ngrok &> /dev/null; then echo "❌ ngrokがインストールされていません" echo "" echo "インストール方法:" echo " macOS: brew install ngrok" echo " Linux: https://ngrok.com/download" echo "" echo "MCPサーバーは起動しています (PID: $SERVER_PID)" echo "手動でngrokを起動してください: ngrok http $PORT" echo "" read -p "Enterキーで終了..." kill $SERVER_PID exit 1 fi # ngrokを起動 ngrok http $PORT --log=stdout > /tmp/ngrok-startup.log 2>&1 & NGROK_PID=$! echo " ngrok PID: $NGROK_PID" echo " 起動中... (5秒待機)" sleep 5 # ngrokプロセスが生きているか確認 if ! ps -p $NGROK_PID > /dev/null; then echo "" echo "❌ ngrokの起動に失敗しました" echo "" echo "ログ:" cat /tmp/ngrok-startup.log echo "" echo "MCPサーバーを停止します..." kill $SERVER_PID exit 1 fi echo " ✅ ngrokが起動しました" echo "" # URL情報を取得 sleep 2 TUNNELS_INFO=$(curl -s http://localhost:4040/api/tunnels 2>/dev/null) HTTPS_URL=$(echo "$TUNNELS_INFO" | jq -r '.tunnels[] | select(.proto == "https") | .public_url' 2>/dev/null) echo "==========================================" echo "✅ すべて起動完了!" echo "==========================================" echo "" if [ -n "$HTTPS_URL" ] && [ "$HTTPS_URL" != "null" ]; then echo "🌐 公開URL:" echo " $HTTPS_URL" echo "" echo "📡 エンドポイント:" echo " Health: $HTTPS_URL/health" echo " Info: $HTTPS_URL/info" echo " SSE: $HTTPS_URL/sse" echo "" if [ -n "$MCP_API_KEY" ]; then echo "🔑 認証情報:" echo " Authorization: Bearer $MCP_API_KEY" echo "" echo "🧪 テストコマンド:" echo " curl $HTTPS_URL/health | jq ." echo " curl -H \"Authorization: Bearer $MCP_API_KEY\" $HTTPS_URL/info | jq ." else echo "🧪 テストコマンド:" echo " curl $HTTPS_URL/health | jq ." echo " curl $HTTPS_URL/info | jq ." fi echo "" # URLをクリップボードにコピー(オプション) if command -v xclip &> /dev/null; then echo "$HTTPS_URL" | xclip -selection clipboard 2>/dev/null echo "📋 URLをクリップボードにコピーしました" elif command -v pbcopy &> /dev/null; then echo "$HTTPS_URL" | pbcopy echo "📋 URLをクリップボードにコピーしました" fi echo "" fi echo "📊 管理画面:" echo " ngrok: http://localhost:4040" echo "" echo "📝 ログ:" echo " Server: tail -f logs/server.log" echo " MCP: tail -f logs/combined.log" echo "" echo "🛑 停止方法:" echo " Ctrl+C を押す" echo "" echo "==========================================" echo "Press Ctrl+C to stop all services" echo "==========================================" echo "" # クリーンアップ関数 cleanup() { echo "" echo "🛑 停止しています..." echo "" if ps -p $NGROK_PID > /dev/null 2>&1; then echo " ngrokを停止中..." kill $NGROK_PID 2>/dev/null fi if ps -p $SERVER_PID > /dev/null 2>&1; then echo " MCPサーバーを停止中..." kill $SERVER_PID 2>/dev/null fi sleep 1 echo "" echo "✅ すべてのサービスを停止しました" exit 0 } # シグナルハンドラーを設定 trap cleanup INT TERM # プロセスが終了するまで待機 wait

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/Amana03/universal-mcp-server'

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