Skip to main content
Glama
start-ngrok.sh7.25 kB
#!/bin/bash # ngrok起動スクリプト - Universal MCP Server echo "==========================================" echo "🌐 ngrok - Universal MCP Server" echo "==========================================" echo "" # ポート番号の取得 PORT="${MCP_HTTP_PORT:-3000}" API_KEY="${MCP_API_KEY}" # ngrokがインストールされているか確認 if ! command -v ngrok &> /dev/null; then echo "❌ ngrokがインストールされていません" echo "" echo "インストール方法:" echo "" echo "macOS:" echo " brew install ngrok" echo "" echo "Linux:" echo " curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | \\" echo " sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && \\" echo " echo \"deb https://ngrok-agent.s3.amazonaws.com buster main\" | \\" echo " sudo tee /etc/apt/sources.list.d/ngrok.list && \\" echo " sudo apt update && sudo apt install ngrok" echo "" echo "または公式サイトからダウンロード:" echo " https://ngrok.com/download" exit 1 fi echo "✅ ngrokが見つかりました" echo "" # MCPサーバーが起動しているか確認 if curl -s http://localhost:$PORT/health &> /dev/null; then echo "✅ MCPサーバーがポート$PORTで起動しています" # サーバー情報を取得 if [ -n "$API_KEY" ]; then SERVER_INFO=$(curl -s -H "Authorization: Bearer $API_KEY" http://localhost:$PORT/info 2>/dev/null) else SERVER_INFO=$(curl -s http://localhost:$PORT/info 2>/dev/null) fi if [ -n "$SERVER_INFO" ]; then echo " サーバー情報:" echo "$SERVER_INFO" | jq . 2>/dev/null || echo "$SERVER_INFO" fi else echo "⚠️ ポート$PORTでMCPサーバーが起動していません" echo "" echo "別のターミナルで以下を実行してください:" if [ -n "$API_KEY" ]; then echo " MCP_MODE=http MCP_HTTP_PORT=$PORT MCP_API_KEY=$API_KEY npm start:http" else echo " MCP_MODE=http MCP_HTTP_PORT=$PORT npm run dev:http" fi echo "" read -p "このまま続行しますか? (y/N): " -n 1 -r echo "" if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 0 fi fi echo "" echo "==========================================" echo "🚀 ngrokを起動します..." echo "==========================================" echo "" echo " ポート: $PORT" echo " 認証: $([ -n "$API_KEY" ] && echo "あり (APIキー設定済み)" || echo "なし")" echo "" echo "-------------------------------------------" echo "" # ngrokの起動(バックグラウンドで実行し、出力を監視) # 一時ファイルにngrokの出力を保存 NGROK_LOG="/tmp/ngrok-$PORT.log" rm -f "$NGROK_LOG" # ngrokをバックグラウンドで起動 ngrok http $PORT --log=stdout > "$NGROK_LOG" 2>&1 & NGROK_PID=$! echo " ngrok PID: $NGROK_PID" echo " ログファイル: $NGROK_LOG" echo "" echo " 起動中... (5秒待機)" sleep 5 # ngrokプロセスが生きているか確認 if ! ps -p $NGROK_PID > /dev/null; then echo "" echo "❌ ngrokの起動に失敗しました" echo "" echo "ログ内容:" cat "$NGROK_LOG" exit 1 fi echo "" echo "==========================================" echo "✅ ngrokが起動しました!" echo "==========================================" echo "" # ngrok APIから情報を取得(ローカルのngrok API) sleep 2 TUNNELS_INFO=$(curl -s http://localhost:4040/api/tunnels 2>/dev/null) if [ -n "$TUNNELS_INFO" ]; then # 公開URL取得 PUBLIC_URL=$(echo "$TUNNELS_INFO" | jq -r '.tunnels[0].public_url' 2>/dev/null) HTTPS_URL=$(echo "$TUNNELS_INFO" | jq -r '.tunnels[] | select(.proto == "https") | .public_url' 2>/dev/null) if [ -n "$HTTPS_URL" ] && [ "$HTTPS_URL" != "null" ]; then echo "🌐 公開URL (HTTPS):" echo " $HTTPS_URL" echo "" # エンドポイント一覧 echo "📡 利用可能なエンドポイント:" echo "" echo " ヘルスチェック:" echo " $HTTPS_URL/health" echo "" echo " サーバー情報:" if [ -n "$API_KEY" ]; then echo " curl -H \"Authorization: Bearer $API_KEY\" $HTTPS_URL/info" else echo " $HTTPS_URL/info" fi echo "" echo " SSE接続:" if [ -n "$API_KEY" ]; then echo " curl -N -H \"Authorization: Bearer $API_KEY\" $HTTPS_URL/sse" else echo " $HTTPS_URL/sse" fi echo "" # curlテスト例 echo "🧪 テストコマンド:" echo "" echo " # ヘルスチェック" echo " curl $HTTPS_URL/health | jq ." echo "" if [ -n "$API_KEY" ]; then echo " # サーバー情報(認証あり)" echo " curl -H \"Authorization: Bearer $API_KEY\" $HTTPS_URL/info | jq ." echo "" echo "🔑 APIキー:" echo " ${API_KEY:0:20}..." echo " (環境変数 MCP_API_KEY に保存済み)" else echo " # サーバー情報(認証なし)" echo " curl $HTTPS_URL/info | jq ." echo "" echo "⚠️ 認証なしモードで動作中" echo " 本番環境では MCP_API_KEY を設定してください" fi echo "" # Python使用例 echo "🐍 Python使用例:" echo "" if [ -n "$API_KEY" ]; then cat << 'EOF' import requests BASE_URL = " EOF echo -n " BASE_URL = \"$HTTPS_URL\"" echo "" cat << EOF headers = {"Authorization": "Bearer $API_KEY"} response = requests.get(f"{BASE_URL}/info", headers=headers) print(response.json()) EOF else cat << 'EOF' import requests BASE_URL = " EOF echo -n " BASE_URL = \"$HTTPS_URL\"" echo "" cat << 'EOF' response = requests.get(f"{BASE_URL}/info") print(response.json()) EOF fi echo "" else echo "⚠️ 公開URLの取得に失敗しました" echo "" echo "ngrok APIレスポンス:" echo "$TUNNELS_INFO" | jq . 2>/dev/null || echo "$TUNNELS_INFO" fi else echo "⚠️ ngrok APIにアクセスできません" echo "" echo "手動でngrokの情報を確認してください:" echo " http://localhost:4040" fi echo "" echo "==========================================" echo "📊 管理画面:" echo " http://localhost:4040" echo "" echo "🛑 停止方法:" echo " このスクリプトを Ctrl+C で終了" echo " または: kill $NGROK_PID" echo "==========================================" echo "" # Ctrl+Cのトラップ trap "echo ''; echo '🛑 ngrokを停止しています...'; kill $NGROK_PID 2>/dev/null; echo '✅ 停止しました'; exit 0" INT TERM # ngrokのログを監視(オプション) echo "📝 ngrokログ監視中... (Ctrl+C で終了)" echo "" # ngrokプロセスが終了するまで待機 wait $NGROK_PID echo "" echo "ngrokが終了しました"

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