Local MCP-Server-with-HTTPS-and-GitHub-OAuth について
Local MCP-Server-with-HTTPS-and-GitHub-OAuthは、Node.jsとExpressを使ったローカルMCPサーバーの例です。HTTPS、GitHub OAuth、セッション管理、レート制限、HTTPヘッダー保護を備えています。
主な機能
- 01自己署名証明書によるHTTPS
- 02GitHub OAuthログイン
- 03セキュアなセッションCookie
- 04レート制限
- 05HTTPヘッダー保護
活用シーン
- 01保護されたルートにGitHubログインを要求
- 02ローカルでHTTPSサーバーをテスト
- 03サーバーリクエストを制限
MCP 対応
プロジェクトはローカルMCPサーバーとして紹介されていますが、クライアントに公開するMCPツールや機能はREADMEに記載されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Local MCP-Server-with-HTTPS-and-GitHub-OAuth
Node.js と Express で構築された、安全なローカル MCP サーバーです。自己署名証明書を使用した HTTPS 暗号化、GitHub OAuth 認証、レート制限や HTTP ヘッダー保護などの追加のセキュリティ対策を備えています。
機能
- HTTPS 暗号化:クライアントとサーバー間の安全な通信を実現します。
- GitHub OAuth 認証:ユーザーは GitHub アカウントを使ってログインできます。
- レート制限:不正利用やサービス拒否(DoS)攻撃を防ぎます。
- セキュアなセッション管理:セキュアな Cookie と
express-sessionを使用します。 - HTTP ヘッダーのセキュリティ:一般的な脆弱性から保護するために
helmetを実装しています。
前提条件
始める前に、以下がシステムにインストールされていることを確認してください。
セットアップ手順
ステップ 1:リポジトリをクローンする
このリポジトリをローカルマシンにクローンします。
git clone https://github.com/omar-steam/MCP-Server-with-HTTPS-and-GitHub-OAuth.git cd mcp-server
ステップ 2:依存関係をインストールする
必要な npm パッケージをインストールします。
npm install
ステップ 3:SSL 証明書を生成する
OpenSSL を使って自己署名 SSL 証明書を生成します。
openssl genrsa -out key.pem 2048 openssl req -new -key key.pem -out csr.pem openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
プロジェクトディレクトリに以下のファイルが作成されます。
key.pem:秘密鍵cert.pem:自己署名証明書
ステップ 4:環境変数を設定する
プロジェクトのルートに .env ファイルを作成し、以下の変数を追加します。
CLIENT_ID=your-github-client-id CLIENT_SECRET=your-github-client-secret REDIRECT_URI=https://localhost:3000/auth/callback SESSION_SECRET=your-session-secret
your-github-client-id と your-github-client-secret を、GitHub OAuth App の認証情報に置き換えてください。
ステップ 5:サーバーを起動する
サーバーを実行します。
node server.js
以下のように表示されます。
Secure server running on https://localhost:3000
使い方
サーバーへのアクセス
ブラウザーを開き、以下にアクセスします。
https://localhost:3000
GitHub による認証
/authにアクセスして、GitHub 認証プロセスを開始します。
https://localhost:3000/auth
- ログインに成功すると、
/successにリダイレクトされます。 - 認証に失敗すると、
/failureにリダイレクトされます。
保護されたルート
/secure-data にアクセスして、認証が必要なルートをテストします。
https://localhost:3000/secure-data
認証されていない場合は、401 Unauthorized エラーが表示されます。
プロジェクト構成
mcp-server/ ├── key.pem # HTTPS 用の秘密鍵 ├── cert.pem # HTTPS 用の自己署名証明書 ├── server.js # メインサーバーファイル ├── package.json # プロジェクトのメタデータと依存関係 ├── .env # 環境変数(バージョン管理には含まれません) └── README.md # プロジェクトのドキュメント(このファイル)
トラブルシューティング
ポートがすでに使用されています(EADDRINUSE)
ポート 3000 がすでに使用されている場合は、そのポートを使用しているプロセスを停止するか、server.js でポートを変更してください。
ポート 3000 を使用しているプロセスを見つけて終了するには、次を実行します。
netstat -ano | findstr :3000 taskkill /PID <PID> /F
ブラウザーで証明書の警告が表示される
自己署名証明書はブラウザーから信頼されません。本番環境では、Let’s Encrypt のような信頼できる認証局を使用してください。
貢献
このリポジトリをフォークして改善し、プルリクエストを送ってください。貢献を歓迎します。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
謝辞
以下の皆さんに感謝します:
安全な MCP サーバーの構築を楽しんでください! 🔥🔥🔥
カスタマイズに関する注意事項:
your-github-client-idのようなプレースホルダーを、実際の認証情報に置き換えてください。- このコードをホストする場合は、リポジトリの URL(
git clone)を GitHub リポジトリのリンクに更新してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。