tetsuzawa/my-mcp-server-github-auth
If you are the rightful owner of my-mcp-server-github-auth and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This is a Model Context Protocol (MCP) server with integrated GitHub OAuth, designed to facilitate secure remote connections and tool access via GitHub authentication.
Model Context Protocol (MCP) Server + Github OAuth
これは、Github OAuthが組み込まれたリモートMCP接続をサポートするModel Context Protocol (MCP)サーバーです。
あなた自身のCloudflareアカウントにデプロイし、Github OAuthクライアントアプリを作成した後、完全に機能するリモートMCPサーバーを構築することができます。ユーザーはGitHubアカウントでサインインすることで、あなたのMCPサーバーに接続できるようになります。
これは、workers-oauth-providerライブラリを使用して、CloudflareにデプロイされたMCPサーバーに他のOAuthプロバイダーを統合する方法の参考例として使用できます。
MCPサーバー(Cloudflare Workersによって駆動)は以下の役割を果たします:
- MCPクライアントに対するOAuth サーバー として機能
- 実際の OAuthサーバー(この場合はGitHub)に対するOAuth クライアント として機能
はじめに
リポジトリを直接クローンして依存関係をインストールします:npm install。
または、以下のコマンドラインを使用してローカルマシンにリモートMCPサーバーを作成することもできます:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth
本番環境用
新しいGitHub OAuth Appを作成します:
- ホームページURLには
https://mcp-github-oauth.<your-subdomain>.workers.devを指定 - 認証コールバックURLには
https://mcp-github-oauth.<your-subdomain>.workers.dev/callbackを指定 - クライアントIDをメモし、クライアントシークレットを生成
- Wranglerを使用してシークレットを設定
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY # ここにランダムな文字列を追加(例:openssl rand -hex 32)
[!IMPORTANT] 最初のシークレットを作成する際、Wranglerが新しいWorkerを作成するかどうか尋ねてきます。「Y」を選択して新しいWorkerを作成し、シークレットを保存してください。
KVネームスペースの設定
- KVネームスペースを作成します:
wrangler kv namespace create "OAUTH_KV" - WranglerファイルをKV IDで更新
デプロイ & テスト
MCPサーバーをデプロイして、workers.devドメインで利用可能にします
wrangler deploy
Inspectorを使用してリモートサーバーをテストします:
npx @modelcontextprotocol/inspector@latest
https://mcp-github-oauth.<your-subdomain>.workers.dev/sse を入力し、接続をクリックします。認証フローを通過すると、ツールが動作していることが確認できます:
これでリモートMCPサーバーがデプロイされました!
アクセス制御
Set up a KV namespace
- Create the KV namespace:
wrangler kv namespace create "OAUTH_KV" - Update the Wrangler file with the KV ID
Deploy & Test
Deploy the MCP server to make it available on your workers.dev domain
wrangler deploy
Test the remote server using Inspector:
npx @modelcontextprotocol/inspector@latest
Enter https://mcp-github-oauth.<your-subdomain>.workers.dev/sse and hit connect. Once you go through the authentication flow, you'll see the Tools working:
You now have a remote MCP server deployed!
アクセス制御
このMCPサーバーは認証にGitHub OAuthを使用します。認証されたすべてのGitHubユーザーは、「add」や「userInfoOctokit」などの基本ツールにアクセスできます。
「generateImage」ツールは、ALLOWED_USERNAMES設定にリストされた特定のGitHubユーザーに制限されています:
// 画像生成アクセス用のGitHubユーザー名を追加
const ALLOWED_USERNAMES = new Set([
'yourusername',
'teammate1'
]);
Claude DesktopからリモートMCPサーバーにアクセス
Claude Desktopを開き、Settings -> Developer -> Edit Configに移動します。これにより、ClaudeがアクセスできるMCPサーバーを制御する設定ファイルが開きます。
内容を以下の設定に置き換えます。Claude Desktopを再起動すると、ブラウザウィンドウが開きOAuthログインページが表示されます。認証フローを完了してClaudeにMCPサーバーへのアクセスを許可してください。アクセスを許可すると、ツールが使用可能になります。
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp-github-oauth.<your-subdomain>.workers.dev/sse"
]
}
}
}
ツール(🔨の下)がインターフェースに表示されたら、Claudeにそれらを使用するよう依頼できます。例:「23と19を足すのにmathツールを使ってもらえますか?」。ClaudeはツールをInvokeし、MCPサーバーによって生成された結果を表示するはずです。
ローカル開発用
MCPサーバーの反復とテストを行いたい場合は、ローカル開発で実行できます。これには、GitHubで別のOAuthアプリを作成する必要があります:
- ホームページURLには
http://localhost:8788を指定 - 認証コールバックURLには
http://localhost:8788/callbackを指定 - クライアントIDをメモし、クライアントシークレットを生成
- プロジェクトルートに
.dev.varsファイルを作成し、以下を記述:
GITHUB_CLIENT_ID=your_development_github_client_id
GITHUB_CLIENT_SECRET=your_development_github_client_secret
開発 & テスト
サーバーをローカルで実行して http://localhost:8788 で利用可能にします
wrangler dev
ローカルサーバーをテストするには、Inspectorに http://localhost:8788/sse を入力して接続をクリックします。プロンプトに従うと、「List Tools」を実行できるようになります。
Claudeと他のMCPクライアントの使用
Claudeを使用してリモートMCPサーバーに接続する際、エラーメッセージが表示される場合があります。これは、Claude DesktopがまだリモートMCPサーバーをサポートしていないため、時々混乱するからです。MCPサーバーが接続されているかどうかを確認するには、Claudeのインターフェースの右下隅にある🔨アイコンにカーソルを合わせます。そこでツールが利用可能になっているのが確認できるはずです。
CursorとMCPクライアントの使用
CursorをMCPサーバーに接続するには、Typeを「Command」に選択し、Commandフィールドにcommandとargsフィールドを1つに結合します(例:npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse)。
CursorはHTTP+SSEサーバーをサポートしていますが、認証はサポートしていないため、まだmcp-remoteを使用する必要があります(HTTPサーバーではなくSTDIOサーバーを使用)。
WindsurfなどのMCPクライアントにMCPサーバーを接続するには、クライアントの設定ファイルを開き、Claudeの設定で使用したのと同じJSONを追加して、MCPクライアントを再起動します。
どのように動作するか?
OAuthプロバイダー
OAuthプロバイダーライブラリは、Cloudflare Workers用の完全なOAuth 2.1サーバー実装として機能します。トークンの発行、検証、管理を含むOAuthフローの複雑さを処理します。このプロジェクトでは、以下の二重の役割を果たします:
- サーバーに接続するMCPクライアントの認証
- GitHubのOAuthサービスへの接続管理
- KVストレージでのトークンと認証状態の安全な保存
Durable MCP
Durable MCPは、CloudflareのDurable Objectsを使用してベースMCP機能を拡張し、以下を提供します:
- MCPサーバーの永続的な状態管理
- リクエスト間での認証コンテキストの安全な保存
this.propsを介した認証ユーザー情報へのアクセス- ユーザーIDに基づく条件付きツール可用性のサポート
MCP Remote
MCP Remoteライブラリは、InspectorなどのMCPクライアントから呼び出せるツールをサーバーが公開できるようにします。以下の機能を提供します:
- クライアントとサーバー間の通信プロトコルの定義
- ツールを定義するための構造化された方法
- リクエストとレスポンスのシリアライゼーションとデシリアライゼーションの処理
- クライアントとサーバー間のServer-Sent Events(SSE)接続の維持