Skip to main content
Glama
CLOUDFLARE_TUNNEL_SETUP.md14.9 kB
# Cloudflare Tunnel を使った note-mcp-server のセットアップ ## 概要 このガイドでは、Cloudflare Tunnelを使用してローカルのnote-mcp-serverをVPS上のn8nから安全にアクセスできるようにする方法を説明します。 ### この構成のメリット - ✅ **セキュリティ**: note.comの認証情報はローカルPCに保持 - ✅ **24時間アクセス**: VPS上のn8nからいつでもアクセス可能 - ✅ **無料**: Cloudflare Tunnelは無料で利用可能 - ✅ **簡単**: 複雑なファイアウォール設定不要 - ✅ **安全**: 外部からの直接アクセスは不可能 ### アーキテクチャ ``` [ローカルPC] [Cloudflare] [VPS] note-mcp-server ←[Tunnel]→ Cloudflare Edge ←[HTTPS]→ n8n (localhost:3000) (セルフホスト) ``` ## 前提条件 - ローカルPC(macOS/Linux/Windows) - Cloudflareアカウント(無料) - Cloudflareで管理しているドメイン(オプション) - VPS上でn8nがセルフホスティングされている ## セットアップ手順 ### Step 1: Cloudflared のインストール #### macOS (Homebrew) ```bash brew install cloudflare/cloudflare/cloudflared ``` #### Linux ```bash # Debian/Ubuntu wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared-linux-amd64.deb # RHEL/CentOS wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm sudo rpm -i cloudflared-linux-x86_64.rpm ``` #### Windows [公式サイト](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/)からインストーラーをダウンロード ### Step 2: Cloudflareアカウントでログイン ```bash cloudflared tunnel login ``` ブラウザが開き、Cloudflareアカウントでの認証を求められます。認証後、証明書がローカルに保存されます。 ### Step 3: note-mcp-server のビルドと起動確認 ```bash cd /path/to/noteMCP npm install npm run build npm run start:http ``` 別のターミナルで動作確認: ```bash curl http://localhost:3000/health ``` 期待されるレスポンス: ```json { "status": "ok", "server": "note-api-mcp", "version": "2.0.0-http", "transport": "SSE", "authenticated": true } ``` ## 方法A: クイックトンネル(テスト用) 最も簡単な方法。一時的なURLが発行されます。 ```bash # note-mcp-serverが起動している状態で cloudflared tunnel --url http://localhost:3000 ``` 出力例: ``` 2024-01-01T12:00:00Z INF +--------------------------------------------------------------------------------------------+ 2024-01-01T12:00:00Z INF | Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): | 2024-01-01T12:00:00Z INF | https://random-words-1234.trycloudflare.com | 2024-01-01T12:00:00Z INF +--------------------------------------------------------------------------------------------+ ``` ### n8nでの設定 **HTTP Stream URL:** ``` https://random-words-1234.trycloudflare.com/mcp ``` **注意:** このURLは起動ごとに変わります。テスト用途のみに使用してください。 ## 方法B: 永続的なトンネル(推奨) 独自ドメインを使用した永続的なトンネルを作成します。 ### Step 1: トンネルの作成 ```bash cloudflared tunnel create note-mcp ``` 出力例: ``` Tunnel credentials written to /Users/yourname/.cloudflared/12345678-1234-1234-1234-123456789abc.json Created tunnel note-mcp with id 12345678-1234-1234-1234-123456789abc ``` **重要:** トンネルIDとcredentialsファイルのパスをメモしてください。 ### Step 2: 設定ファイルの作成 ```bash mkdir -p ~/.cloudflared nano ~/.cloudflared/config.yml ``` 以下の内容を記述(トンネルIDとパスは実際の値に置き換えてください): ```yaml tunnel: 12345678-1234-1234-1234-123456789abc credentials-file: /Users/yourname/.cloudflared/12345678-1234-1234-1234-123456789abc.json ingress: - hostname: note-mcp.your-domain.com service: http://localhost:3000 - service: http_status:404 ``` **設定項目の説明:** - `tunnel`: Step 1で作成したトンネルID - `credentials-file`: credentialsファイルの絶対パス - `hostname`: 使用するサブドメイン(Cloudflareで管理しているドメイン) - `service`: ローカルのnote-mcp-serverのURL ### Step 3: DNS設定 ```bash cloudflared tunnel route dns note-mcp note-mcp.your-domain.com ``` これにより、Cloudflareの DNS に自動的にCNAMEレコードが追加されます。 ### Step 4: トンネルの起動 ```bash cloudflared tunnel run note-mcp ``` 出力例: ``` 2024-01-01T12:00:00Z INF Starting tunnel tunnelID=12345678-1234-1234-1234-123456789abc 2024-01-01T12:00:00Z INF Connection registered connIndex=0 location=NRT 2024-01-01T12:00:00Z INF Connection registered connIndex=1 location=NRT ``` ### Step 5: 動作確認 ```bash curl https://note-mcp.your-domain.com/health ``` 期待されるレスポンス: ```json { "status": "ok", "server": "note-api-mcp", "version": "2.0.0-http", "transport": "SSE", "authenticated": true } ``` ### n8nでの設定 **HTTP Stream URL:** ``` https://note-mcp.your-domain.com/mcp ``` または ``` https://note-mcp.your-domain.com/sse ``` **HTTP Connection Timeout:** ``` 60000 ``` **Messages Post Endpoint:** (空欄) **Additional Headers:** (空欄) ## 自動起動設定 ### macOS (LaunchAgent) #### note-mcp-server の自動起動 ```bash # ログディレクトリ作成 mkdir -p ~/noteMCP/logs # LaunchAgent作成 nano ~/Library/LaunchAgents/com.note-mcp-server.plist ``` ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.note-mcp-server</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/node</string> <string>/Users/yourname/noteMCP/build/note-mcp-server-http.js</string> </array> <key>WorkingDirectory</key> <string>/Users/yourname/noteMCP</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/Users/yourname/noteMCP/logs/stdout.log</string> <key>StandardErrorPath</key> <string>/Users/yourname/noteMCP/logs/stderr.log</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict> </dict> </plist> ``` **重要:** `/usr/local/bin/node` と `/Users/yourname/noteMCP` は実際のパスに置き換えてください。 Node.jsのパスを確認: ```bash which node ``` ```bash # サービス登録・起動 launchctl load ~/Library/LaunchAgents/com.note-mcp-server.plist launchctl start com.note-mcp-server # ステータス確認 launchctl list | grep note-mcp-server # ログ確認 tail -f ~/noteMCP/logs/stdout.log ``` #### Cloudflare Tunnel の自動起動 ```bash nano ~/Library/LaunchAgents/com.cloudflared.note-mcp.plist ``` ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.cloudflared.note-mcp</string> <key>ProgramArguments</key> <array> <string>/opt/homebrew/bin/cloudflared</string> <string>tunnel</string> <string>run</string> <string>note-mcp</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/Users/yourname/noteMCP/logs/cloudflared-stdout.log</string> <key>StandardErrorPath</key> <string>/Users/yourname/noteMCP/logs/cloudflared-stderr.log</string> </dict> </plist> ``` **重要:** cloudflaredのパスを確認してください: ```bash which cloudflared ``` Intel Macの場合は `/usr/local/bin/cloudflared` になる可能性があります。 ```bash # サービス登録・起動 launchctl load ~/Library/LaunchAgents/com.cloudflared.note-mcp.plist launchctl start com.cloudflared.note-mcp # ステータス確認 launchctl list | grep cloudflared # ログ確認 tail -f ~/noteMCP/logs/cloudflared-stdout.log ``` ### Linux (systemd) #### note-mcp-server の自動起動 ```bash sudo nano /etc/systemd/system/note-mcp-server.service ``` ```ini [Unit] Description=note MCP Server After=network.target [Service] Type=simple User=youruser WorkingDirectory=/home/youruser/noteMCP Environment="NODE_ENV=production" ExecStart=/usr/bin/node /home/youruser/noteMCP/build/note-mcp-server-http.js Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` ```bash sudo systemctl daemon-reload sudo systemctl enable note-mcp-server sudo systemctl start note-mcp-server sudo systemctl status note-mcp-server ``` #### Cloudflare Tunnel の自動起動 ```bash sudo cloudflared service install sudo systemctl enable cloudflared sudo systemctl start cloudflared sudo systemctl status cloudflared ``` ### Windows (タスクスケジューラ) 1. タスクスケジューラを開く 2. 「基本タスクの作成」を選択 3. トリガー: 「コンピューターの起動時」 4. 操作: 「プログラムの起動」 5. プログラム/スクリプト: `node.exe` のパス 6. 引数: `C:\path\to\noteMCP\build\note-mcp-server-http.js` 7. 開始: `C:\path\to\noteMCP` Cloudflare Tunnelも同様に設定します。 ## n8nワークフロー例 ### 例1: 定期的な記事検索とSlack通知 ```json { "name": "Note記事検索 → Slack通知", "nodes": [ { "parameters": { "rule": { "interval": [{"field": "hours", "hoursInterval": 6}] } }, "name": "6時間ごと", "type": "n8n-nodes-base.scheduleTrigger", "position": [250, 300] }, { "parameters": { "url": "https://note-mcp.your-domain.com/mcp", "transport": "sse", "tool": "search-notes", "toolParameters": { "query": "プログラミング", "size": 5, "sort": "new" } }, "name": "Note記事検索", "type": "n8n-nodes-mcp.mcpClient", "position": [450, 300] }, { "parameters": { "channel": "#note-updates", "text": "新着記事が見つかりました:\n{{ $json.notes }}" }, "name": "Slack通知", "type": "n8n-nodes-base.slack", "position": [650, 300] } ] } ``` ### 例2: Webhook経由で記事投稿 ```json { "name": "Webhook → Note下書き投稿", "nodes": [ { "parameters": { "path": "note-post" }, "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [250, 300] }, { "parameters": { "url": "https://note-mcp.your-domain.com/mcp", "transport": "sse", "tool": "post-draft-note", "toolParameters": { "title": "={{ $json.body.title }}", "body": "={{ $json.body.content }}" } }, "name": "Note下書き投稿", "type": "n8n-nodes-mcp.mcpClient", "position": [450, 300] } ] } ``` ## トラブルシューティング ### トンネルに接続できない ```bash # トンネルのステータス確認 cloudflared tunnel info note-mcp # トンネル一覧表示 cloudflared tunnel list # DNS設定確認 dig note-mcp.your-domain.com ``` ### note-mcp-serverが起動しない ```bash # macOS: ログ確認 tail -f ~/noteMCP/logs/stderr.log # Linux: ログ確認 sudo journalctl -u note-mcp-server -f # 手動起動でテスト cd ~/noteMCP npm run start:http ``` ### n8nから接続できない 1. ローカルでヘルスチェック: ```bash curl http://localhost:3000/health ``` 2. Cloudflare Tunnel経由でヘルスチェック: ```bash curl https://note-mcp.your-domain.com/health ``` 3. n8nのログを確認: ```bash # n8nのログ確認(VPS上で) docker logs -f n8n # Dockerの場合 pm2 logs n8n # PM2の場合 ``` ### 自動起動が動作しない(macOS) ```bash # サービスのステータス確認 launchctl list | grep note-mcp launchctl list | grep cloudflared # サービスの再起動 launchctl stop com.note-mcp-server launchctl start com.note-mcp-server # サービスの削除と再登録 launchctl unload ~/Library/LaunchAgents/com.note-mcp-server.plist launchctl load ~/Library/LaunchAgents/com.note-mcp-server.plist ``` ### Cloudflareダッシュボードでの確認 1. [Cloudflare Zero Trust](https://one.dash.cloudflare.com/) にログイン 2. 「Access」→「Tunnels」でトンネルのステータスを確認 3. 「Healthy」と表示されていればOK ## セキュリティに関する注意 ### メリット - ✅ 認証情報はローカルPCに保持 - ✅ 外部からの直接アクセスは不可能 - ✅ Cloudflareの保護下で動作 - ✅ DDoS攻撃からの保護 ### 追加の保護(オプション) #### Cloudflare Access でIP制限 1. [Cloudflare Zero Trust](https://one.dash.cloudflare.com/) にログイン 2. 「Access」→「Applications」→「Add an application」 3. 「Self-hosted」を選択 4. Application domain: `note-mcp.your-domain.com` 5. Policy: VPSのIPアドレスのみ許可 ``` Policy name: n8n VPS Only Action: Allow Include: IP ranges → VPSのIPアドレス ``` これにより、VPS以外からのアクセスをブロックできます。 ## まとめ ### 推奨構成 ``` [ローカルPC] ├── note-mcp-server (自動起動) │ └── localhost:3000 └── Cloudflare Tunnel (自動起動) └── note-mcp.your-domain.com ↓ [Cloudflare Edge] ↓ [VPS: n8n] ``` ### チェックリスト - [ ] Cloudflaredインストール完了 - [ ] Cloudflareアカウントでログイン完了 - [ ] トンネル作成完了 - [ ] 設定ファイル作成完了 - [ ] DNS設定完了 - [ ] note-mcp-server自動起動設定完了 - [ ] Cloudflare Tunnel自動起動設定完了 - [ ] ヘルスチェック成功 - [ ] n8nから接続成功 ### サポート 問題が発生した場合は、以下を確認してください: 1. [Cloudflare Tunnel ドキュメント](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/) 2. [note-mcp-server GitHub Issues](https://github.com/note-mcp-developer/note-mcp-server/issues) 3. ログファイル(`~/noteMCP/logs/`) この構成により、セキュアで安定したnote自動化環境が構築できます!

Latest Blog Posts

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/shimayuz/note-com-mcp'

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