モデルコンテキストプロトコル(MCP)サーバー + Github OAuth
これは、Github OAuth が組み込まれた、リモート MCP 接続をサポートするモデル コンテキスト プロトコル (MCP)サーバーです。
ご自身のCloudflareアカウントにデプロイし、GitHub OAuthクライアントアプリを作成すれば、完全に機能するリモートMCPサーバーを構築できます。ユーザーはGitHubアカウントでサインインすることで、MCPサーバーに接続できます。
これはworkers-oauth-provider
ライブラリを使用して、Cloudflare にデプロイされた MCP サーバーと他の OAuth プロバイダーを統合する方法の参考例として使用できます。
MCP サーバー ( Cloudflare Workersを使用):
- MCPクライアントへのOAuthサーバーとして機能します
- 実際のOAuth サーバー (この場合は GitHub) の OAuthクライアントとして機能します。
はじめる
リポジトリを直接クローンし、依存関係をインストールします: npm install
。
あるいは、以下のコマンド ラインを使用して、ローカル マシンにリモート MCP サーバーを作成することもできます。
生産用
新しいGitHub OAuth アプリを作成します。
- ホームページ URL には、
https://mcp-github-oauth.<your-subdomain>.workers.dev
を指定します。 - 認証コールバック URL には、
https://mcp-github-oauth.<your-subdomain>.workers.dev/callback
を指定します。 - クライアント ID をメモし、クライアント シークレットを生成します。
- Wrangler 経由で秘密を設定する
KV名前空間を設定する
- KV 名前空間を作成します:
wrangler kv:namespace create "OAUTH_KV"
- KV IDでWranglerファイルを更新する
デプロイとテスト
MCP サーバーをデプロイして、workers.dev ドメインで使用できるようにしますwrangler deploy
Inspectorを使用してリモート サーバーをテストします。
https://mcp-github-oauth.<your-subdomain>.workers.dev/sse
にアクセスし、「接続」をクリックします。認証フローが完了すると、ツールが動作しているのが確認できます。
これで、リモート MCP サーバーが展開されました。
アクセス制御
このMCPサーバーは認証にGitHub OAuthを使用します。認証されたすべてのGitHubユーザーは、「add」や「userInfoOctokit」などの基本ツールにアクセスできます。
「generateImage」ツールは、 ALLOWED_USERNAMES
構成にリストされている特定の GitHub ユーザーに制限されています。
Claude Desktop からリモート MCP サーバーにアクセスする
Claude Desktopを開き、「設定」→「開発者」→「設定の編集」に移動します。これにより、ClaudeがアクセスできるMCPサーバーを制御する設定ファイルが開きます。
以下の設定に置き換えてください。Claude Desktopを再起動すると、ブラウザウィンドウが開き、OAuthログインページが表示されます。認証フローを完了して、ClaudeにMCPサーバーへのアクセスを許可してください。アクセスを許可すると、ツールが使用できるようになります。
ツール(🔨の下)がインターフェースに表示されたら、クロードにそれらを使うように頼むことができます。例えば、「数学ツールを使って23と19を足し算できますか?」と尋ねます。クロードはツールを起動し、MCPサーバーによって生成された結果を表示する必要があります。
地域開発のために
MCPサーバーの反復テストを行いたい場合は、ローカル開発環境で実行できます。その場合は、GitHub上に別のOAuthアプリを作成する必要があります。
- ホームページURLには
http://localhost:8788
を指定します。 - 認証コールバックURLには、
http://localhost:8788/callback
を指定します。 - クライアント ID をメモし、クライアント シークレットを生成します。
- 次のようにして、プロジェクト ルートに
.dev.vars
ファイルを作成します。
開発とテスト
サーバーをローカルで実行し、 http://localhost:8788
wrangler dev
で利用できるようにします。
ローカルサーバーをテストするには、Inspectorにhttp://localhost:8788/sse
と入力し、「接続」をクリックします。プロンプトに従うと、「ツールの一覧」が表示されます。
Claude や他の MCP クライアントの使用
Claude を使用してリモート MCP サーバーに接続すると、エラーメッセージが表示される場合があります。これは、Claude Desktop がまだリモート MCP サーバーをサポートしていないため、正しく動作しないことがあるためです。MCP サーバーに接続されているかどうかを確認するには、Claude インターフェースの右下にある🔨 アイコンにマウスを移動してください。利用可能なツールが表示されます。
カーソルとその他のMCPクライアントの使用
Cursor を MCP サーバーに接続するには、 Type
:「コマンド」を選択し、 Command
フィールドでコマンド フィールドと引数フィールドを 1 つに結合します (例npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse
)。
Cursor は HTTP+SSE サーバーをサポートしていますが、認証はサポートしていないため、 mcp-remote
(HTTP サーバーではなく STDIO サーバー) を使用する必要があります。
クライアントの構成ファイルを開き、Claude セットアップに使用したのと同じ JSON を追加して、MCP クライアントを再起動すると、MCP サーバーを Windsurf などの他の MCP クライアントに接続できます。
どのように機能しますか?
OAuthプロバイダー
OAuth Providerライブラリは、Cloudflare Workers向けの完全なOAuth 2.1サーバー実装として機能します。トークンの発行、検証、管理など、OAuthフローの複雑な部分を処理します。このプロジェクトでは、以下の2つの役割を果たします。
- サーバーに接続するMCPクライアントの認証
- GitHubのOAuthサービスへの接続の管理
- トークンと認証状態をKVストレージに安全に保存する
耐久性のあるMCP
Durable MCP は、Cloudflare の Durable Objects を使用して基本 MCP 機能を拡張し、次の機能を提供します。
- MCP サーバーの永続的な状態管理
- リクエスト間の認証コンテキストの安全な保存
this.props
経由で認証されたユーザー情報にアクセスする- ユーザーIDに基づく条件付きツールの可用性のサポート
MCPリモート
MCP リモートライブラリを使用すると、Inspector などの MCP クライアントから呼び出せるツールをサーバー上で公開できます。このライブラリは以下の機能を提供します。
- クライアントとサーバー間の通信プロトコルを定義します
- ツールを定義するための構造化された方法を提供する
- リクエストとレスポンスのシリアル化とデシリアル化を処理します
- クライアントとサーバー間の Server-Sent Events (SSE) 接続を維持します
This server cannot be installed
リモート接続をサポートし、GitHub OAuth を介してユーザーを認証し、GitHub ID に基づいてツールにアクセスできるようにするモデル コンテキスト プロトコル サーバー。