🔐 SSE MCP Server with JWT Authentication について
Node.js と Express による MCP サーバーで、SSE 経由でツールを公開し、JWT Bearer 認証を要求します。認証付きのツール利用が必要なプロジェクト向けに、動的登録、リクエストログ、セッション管理を備えています。
主な機能
- 01SSE と JWT Bearer 認証
- 02ツールの動的登録
- 03Zod による入力検証
- 04リクエスト処理イベントの記録
- 05メッセージエンドポイントのセッション管理
- 06エコー、時刻、乱数ツールの提供
活用シーン
- 01認証付き SSE エンドポイントでツールを公開
- 02Bearer トークンで MCP クライアントを接続
- 03MCP Inspector でツールをテスト
MCP 対応
SSE 経由で MCP クライアントにツールを提供し、接続とメッセージエンドポイントを JWT Bearer トークンで保護します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🔐 JWT 認証を使用した SSE MCP サーバー
これは、JWT ベースの認証を使用する Model Context Protocol(MCP) の SSE サーバーです。
セキュアなベアラートークンのフローで保護された SSE トランスポートを介して、複数の AI ツールを公開できます。
使用技術:
- 🚀 Node.js + Express
- 🧩 @modelcontextprotocol/sdk
- 🔒 認証用の JSON Web Tokens(JWT)
- ⚙️ 入力検証用の Zod
✅
@modelcontextprotocol/inspectorで完全にテスト済みです。
📂 プロジェクト構成
server/
├── index.ts # Main Express + MCP server
├── .env # Environment variables
├── package.json # Project metadata & scripts
├── tsconfig.json # TypeScript config
└── README.md # You are here!
✨ 特長
- ✅ ベアラー JWT トークンを使用したセキュアな SSE 接続
- ✅ ツールの動的登録(echo、time、random number など)
- ✅ MCP Inspector でテスト済み
- ✅ すべてのリクエストのライフサイクルイベントをログに記録
- ✅ /message エンドポイントのセッション管理
- 🚀 本番環境での利用に向けて拡張可能
⚙️ セットアップ
1. リポジトリをクローンする
git clone https://github.com/anisirji/mcp-server-remote-setup-with-jwt-auth.git
cd mcp-server-remote-setup-with-jwt-auth
2. 依存関係をインストールする
npm install
3. .env ファイルを作成する
echo "JWT_SECRET=your-secret-key" > .env
4. サーバーを起動する
npm run dev
✅ サーバーは次の場所で起動します:
http://localhost:3001/sse
🧪 MCP Inspector でサーバーをテストする
ステップ 1 — MCP Inspector をインストールする
📖 公式ドキュメント:MCP Inspector
npx @modelcontextprotocol/inspector
ステップ 2 — トークンを生成する
cURL を使って JWT トークンを取得します:
curl "http://localhost:3001/auth/token?username=aniket&scope=mcp:access"
✅ 応答例:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
ステップ 3 — MCP Inspector に接続する
- Inspector UI を開きます
- トランスポートの種類を設定します:SSE
- URL:
http://localhost:3001/sse - Authorization ヘッダーを追加します:
Authorization: Bearer <your-token> - Connect をクリックします
🎉 成功です!サーバーに接続されました。
ステップ 4 — ツールをテストする
Inspector の Tools タブを開き、List Tools をクリックします。
次の項目が表示されます:
- ✅
test - ✅
echo - ✅
get-time - ✅
random-number
テストしてお試しください!
📖 API リファレンス
🔑 トークンの生成
GET /auth/token?username=<username>&scope=mcp:access
🔌 SSE エンドポイント(トークンが必要)
GET /sse
Authorization: Bearer <token>
📩 アクティブなセッションにメッセージを送信
POST /message?sessionId=<sessionId>
Authorization: Bearer <token>
🧩 ツールのリファレンス
| ツール名 | 説明 |
|---|---|
test | 接続をテストします(セキュリティチェック) |
echo | 指定されたメッセージをそのまま返します |
get-time | 現在のサーバー時刻を返します |
random-number | ランダムな数値を返します(最小値/最大値) |
🗓️ 今後の変更
- トークン失効リスト(ブラックリスト)
- ロールベースのツールアクセス(スコープチェック)
- セッションのハートビート/キープアライブ
- レート制限とログ記録
- デプロイ用の Docker 化
📚 便利なリソース
👨💻 メンテナー
Aniket
📄 ライセンス
このプロジェクトはオープンソースで、無料で利用できます。
🚀 構築し、安全を守り、力を与えましょう。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
