Skip to main content
Glama
DEPLOYMENT_GUIDE.md14 kB
# note-mcp-server デプロイメントガイド ## 目次 1. [デプロイオプションの比較](#デプロイオプションの比較) 2. [n8n統合パターン](#n8n統合パターン) 3. [リモートデプロイ手順](#リモートデプロイ手順) 4. [セキュリティ対策](#セキュリティ対策) 5. [トラブルシューティング](#トラブルシューティング) ## デプロイオプションの比較 ### ローカル実行(推奨:個人利用) **メリット:** - ✅ 認証情報がローカルに閉じている(最も安全) - ✅ ネットワーク遅延なし - ✅ サーバー費用不要 - ✅ 設定が簡単 **デメリット:** - ❌ PCを起動している必要がある - ❌ 外出先からアクセス不可 **推奨ケース:** - 個人での利用 - 開発・テスト環境 - セキュリティ最優先 ### リモートサーバー(推奨:チーム利用・自動化) **メリット:** - ✅ 24時間稼働可能 - ✅ どこからでもアクセス可能 - ✅ 複数デバイス・チームで共有可能 - ✅ n8nなどの自動化ツールとの統合が容易 **デメリット:** - ❌ セキュリティリスク(認証情報をサーバーに配置) - ❌ サーバー費用が発生 - ❌ HTTPS・ファイアウォール設定が必要 **推奨ケース:** - チームでの共有利用 - n8nなどでの自動化 - 24時間稼働が必要 ## n8n統合パターン ### パターンA: 両方ローカル(最も安全) ``` [ローカルPC] ├── note-mcp-server (localhost:3000) └── n8n (localhost:5678) ``` **起動手順:** ```bash # Terminal 1: note-mcp-server起動 cd /path/to/noteMCP npm run start:http # Terminal 2: n8n起動 npx n8n ``` **n8nでの設定:** - MCP Server URL: `http://localhost:3000/mcp` - Transport: `sse` **セキュリティレベル:** ⭐⭐⭐⭐⭐(最高) --- ### パターンB: n8nクラウド + MCPローカル(トンネル経由) ``` [ローカルPC] [クラウド] note-mcp-server ←[ngrok/cloudflared]← n8n (localhost:3000) (cloud) ``` #### ngrokを使用する場合 **1. ngrokのインストール:** ```bash # Homebrewでインストール(macOS) brew install ngrok # または公式サイトからダウンロード # https://ngrok.com/download ``` **2. ngrokアカウント作成とトークン設定:** ```bash # ngrokにサインアップして認証トークンを取得 ngrok config add-authtoken YOUR_AUTH_TOKEN ``` **3. note-mcp-server起動:** ```bash npm run start:http ``` **4. ngrokトンネル作成:** ```bash ngrok http 3000 ``` 出力例: ``` Forwarding https://xxxx-xx-xx-xxx-xxx.ngrok-free.app -> http://localhost:3000 ``` **5. n8nでの設定:** - MCP Server URL: `https://xxxx-xx-xx-xxx-xxx.ngrok-free.app/mcp` - Transport: `sse` **セキュリティレベル:** ⭐⭐⭐(中) **注意点:** - ngrok無料版はURLが起動ごとに変わる - 有料版($8/月〜)で固定URLを取得可能 - Basic認証の追加を推奨 #### Cloudflare Tunnelを使用する場合(推奨) **1. Cloudflare Tunnelのインストール:** ```bash # macOS brew install cloudflare/cloudflare/cloudflared # Linux wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared-linux-amd64.deb ``` **2. Cloudflareアカウントでログイン:** ```bash cloudflared tunnel login ``` **3. トンネル作成:** ```bash cloudflared tunnel create note-mcp ``` **4. 設定ファイル作成(~/.cloudflared/config.yml):** ```yaml tunnel: YOUR_TUNNEL_ID credentials-file: /path/to/YOUR_TUNNEL_ID.json ingress: - hostname: note-mcp.yourdomain.com service: http://localhost:3000 - service: http_status:404 ``` **5. DNS設定:** ```bash cloudflared tunnel route dns note-mcp note-mcp.yourdomain.com ``` **6. トンネル起動:** ```bash cloudflared tunnel run note-mcp ``` **セキュリティレベル:** ⭐⭐⭐⭐(高) --- ### パターンC: 両方リモート(要セキュリティ対策) ``` [VPS/クラウド] ├── note-mcp-server (HTTPS + 認証) └── n8n (同一VPC内) ``` ## リモートデプロイ手順 ### 前提条件 - Ubuntu 22.04 LTS(推奨) - Node.js 18以上 - ドメイン(HTTPS用) - ファイアウォール設定権限 ### 1. サーバーセットアップ ```bash # システム更新 sudo apt update && sudo apt upgrade -y # Node.js 18インストール curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # Gitインストール sudo apt install -y git # プロジェクトクローン cd /opt sudo git clone https://github.com/note-mcp-developer/note-mcp-server.git cd note-mcp-server sudo npm install sudo npm run build ``` ### 2. 環境変数設定 ```bash # .envファイル作成 sudo nano .env ``` ```env # 認証情報 NOTE_EMAIL=your_email@example.com NOTE_PASSWORD=your_password NOTE_USER_ID=your_user_id # HTTPサーバー設定 MCP_HTTP_PORT=3000 MCP_HTTP_HOST=0.0.0.0 # すべてのインターフェースでリッスン # デバッグ(本番環境ではfalse推奨) DEBUG=false ``` ### 3. systemdサービス作成 ```bash sudo nano /etc/systemd/system/note-mcp-server.service ``` ```ini [Unit] Description=note MCP Server After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/note-mcp-server Environment="NODE_ENV=production" ExecStart=/usr/bin/node /opt/note-mcp-server/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 ``` ### 4. Nginx + HTTPS設定 #### Nginxインストール ```bash sudo apt install -y nginx certbot python3-certbot-nginx ``` #### Nginx設定 ```bash sudo nano /etc/nginx/sites-available/note-mcp-server ``` ```nginx # HTTPからHTTPSへのリダイレクト server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } # HTTPS設定 server { listen 443 ssl http2; server_name your-domain.com; # SSL証明書(Let's Encryptで自動取得) ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # セキュリティヘッダー add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; # Basic認証(推奨) auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; # プロキシ設定 location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # SSE用タイムアウト設定 proxy_read_timeout 86400; proxy_buffering off; } } ``` #### Basic認証設定 ```bash # htpasswdツールインストール sudo apt install -y apache2-utils # ユーザー作成(パスワードを求められます) sudo htpasswd -c /etc/nginx/.htpasswd mcpuser ``` #### SSL証明書取得 ```bash # Let's Encrypt証明書取得 sudo certbot --nginx -d your-domain.com # 自動更新設定 sudo certbot renew --dry-run ``` #### Nginx有効化 ```bash sudo ln -s /etc/nginx/sites-available/note-mcp-server /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ``` ### 5. ファイアウォール設定 ```bash # UFWインストール・有効化 sudo apt install -y ufw # SSH許可(重要!) sudo ufw allow 22/tcp # HTTP/HTTPS許可 sudo ufw allow 80/tcp sudo ufw allow 443/tcp # ファイアウォール有効化 sudo ufw enable # ステータス確認 sudo ufw status ``` ### 6. 動作確認 ```bash # ヘルスチェック curl https://your-domain.com/health # Basic認証付き curl -u mcpuser:password https://your-domain.com/health ``` ## セキュリティ対策 ### 必須対策 #### 1. HTTPS化 ```bash # Let's Encryptで無料SSL証明書取得 sudo certbot --nginx -d your-domain.com ``` #### 2. Basic認証 ```nginx # Nginx設定に追加 auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.htpasswd; ``` #### 3. IP制限(オプション) ```nginx # 特定IPのみ許可 location / { allow 203.0.113.0/24; # あなたのIPレンジ deny all; proxy_pass http://localhost:3000; # ... 他の設定 } ``` #### 4. レート制限 ```nginx # Nginx設定に追加 limit_req_zone $binary_remote_addr zone=mcp_limit:10m rate=10r/s; server { # ... location / { limit_req zone=mcp_limit burst=20 nodelay; # ... 他の設定 } } ``` #### 5. 環境変数の保護 ```bash # .envファイルのパーミッション設定 sudo chmod 600 /opt/note-mcp-server/.env sudo chown www-data:www-data /opt/note-mcp-server/.env ``` ### 推奨対策 #### 1. fail2ban導入 ```bash # インストール sudo apt install -y fail2ban # 設定 sudo nano /etc/fail2ban/jail.local ``` ```ini [nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log maxretry = 3 bantime = 3600 ``` ```bash sudo systemctl restart fail2ban ``` #### 2. ログ監視 ```bash # note-mcp-serverログ sudo journalctl -u note-mcp-server -f # Nginxアクセスログ sudo tail -f /var/log/nginx/access.log # Nginxエラーログ sudo tail -f /var/log/nginx/error.log ``` #### 3. 自動バックアップ ```bash # バックアップスクリプト作成 sudo nano /opt/backup-note-mcp.sh ``` ```bash #!/bin/bash BACKUP_DIR="/opt/backups" DATE=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR tar -czf $BACKUP_DIR/note-mcp-$DATE.tar.gz \ /opt/note-mcp-server/.env \ /opt/note-mcp-server/build # 7日以上古いバックアップを削除 find $BACKUP_DIR -name "note-mcp-*.tar.gz" -mtime +7 -delete ``` ```bash # 実行権限付与 sudo chmod +x /opt/backup-note-mcp.sh # cronで毎日実行 sudo crontab -e # 以下を追加 0 2 * * * /opt/backup-note-mcp.sh ``` ## n8nとの統合例 ### n8nワークフロー設定 ```json { "nodes": [ { "parameters": { "url": "https://your-domain.com/mcp", "transport": "sse", "authentication": "basicAuth", "basicAuth": { "user": "mcpuser", "password": "your_password" } }, "name": "note MCP Server", "type": "n8n-nodes-mcp.mcpClient", "position": [250, 300] } ] } ``` ### 使用例:定期的な記事検索 ```json { "nodes": [ { "parameters": { "rule": { "interval": [ { "field": "hours", "hoursInterval": 6 } ] } }, "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [250, 300] }, { "parameters": { "tool": "search-notes", "parameters": { "query": "プログラミング", "size": 10, "sort": "new" } }, "name": "Search Notes", "type": "n8n-nodes-mcp.mcpClient", "position": [450, 300] }, { "parameters": { "channel": "C1234567890", "text": "新着記事: {{$json.notes}}" }, "name": "Post to Slack", "type": "n8n-nodes-base.slack", "position": [650, 300] } ] } ``` ## トラブルシューティング ### サービスが起動しない ```bash # ログ確認 sudo journalctl -u note-mcp-server -n 50 # ポート使用状況確認 sudo netstat -tlnp | grep 3000 # 手動起動テスト cd /opt/note-mcp-server node build/note-mcp-server-http.js ``` ### 接続できない ```bash # ファイアウォール確認 sudo ufw status # Nginxステータス確認 sudo systemctl status nginx # SSL証明書確認 sudo certbot certificates # ポート疎通確認 curl -v https://your-domain.com/health ``` ### パフォーマンス問題 ```bash # リソース使用状況確認 htop # Node.jsプロセス確認 ps aux | grep node # メモリ使用量確認 free -h ``` ## 推奨VPS/クラウドプロバイダー ### 低コスト(個人利用) - **Vultr**: $6/月〜(1GB RAM) - **DigitalOcean**: $6/月〜(1GB RAM) - **Linode**: $5/月〜(1GB RAM) ### 日本リージョン - **さくらのVPS**: 880円/月〜(1GB RAM) - **ConoHa VPS**: 682円/月〜(1GB RAM) - **AWS Lightsail**: $5/月〜(512MB RAM) ### 推奨スペック - **最小**: 1GB RAM, 1 vCPU, 25GB SSD - **推奨**: 2GB RAM, 2 vCPU, 50GB SSD ## まとめ ### セキュリティレベル別推奨構成 | レベル | 構成 | 推奨用途 | |--------|------|----------| | ⭐⭐⭐⭐⭐ | 両方ローカル | 個人利用、開発環境 | | ⭐⭐⭐⭐ | ローカル+トンネル(Cloudflare) | 一時的なリモートアクセス | | ⭐⭐⭐ | ローカル+トンネル(ngrok) | テスト、デモ | | ⭐⭐ | リモート(HTTPS+Basic認証) | チーム利用、自動化 | | ⭐ | リモート(HTTP) | 非推奨 | ### チェックリスト リモートデプロイ前に確認: - [ ] HTTPS化完了 - [ ] Basic認証設定 - [ ] ファイアウォール設定 - [ ] .envファイルのパーミッション設定 - [ ] systemdサービス登録 - [ ] ログ監視設定 - [ ] バックアップ設定 - [ ] fail2ban設定(推奨) - [ ] レート制限設定(推奨)

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