mcp-github-oauth
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 サーバー として機能します
(この場合は GitHub である)実際の OAuth サーバーに対する OAuth クライアント として機能します
[!WARNING] これは、すぐに使い始められるように設計されたデモテンプレートです。いくつかのセキュリティ対策は実装されていますが、本番環境にデプロイする前に、すべての予防策および多層防御のセキュリティ対策を実装する必要があります。包括的なセキュリティガイドをお読みください:Securing MCP Servers
はじめに
リポジトリを直接クローンして、依存関係をインストールします:npm install。
または、以下のコマンドラインを使用して、リモート MCP サーバーをローカルマシン上に作成することもできます:
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth本番環境向け
新しい GitHub OAuth App を作成します:
Homepage URL には
https://mcp-github-oauth.<your-subdomain>.workers.devを指定しますAuthorization callback URL には
https://mcp-github-oauth.<your-subdomain>.workers.dev/callbackを指定しますClient ID を控え、Client secret を生成します
Wrangler を使用してシークレットを設定します
wrangler secret put GITHUB_CLIENT_ID
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. 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@latesthttps://mcp-github-oauth.<your-subdomain>.workers.dev/sse を入力して接続します。認証フローを完了すると、ツールが動作しているのが確認できます:
これで、リモート MCP サーバーのデプロイが完了しました!
アクセス制御
この MCP サーバーは認証に GitHub OAuth を使用しています。認証されたすべての GitHub ユーザーは、"add" や "userInfoOctokit" などの基本ツールにアクセスできます。
"generateImage" ツールは、ALLOWED_USERNAMES 設定にリストされた特定の GitHub ユーザーのみに制限されています:
// Add GitHub usernames for image generation access
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 にそれらを使用するよう依頼できます。例:「math ツールを使って 23 と 19 を足してもらえますか?」。Claude はツールを呼び出し、MCP サーバーが生成した結果を表示します。
ローカル開発向け
MCP サーバーを反復開発してテストしたい場合は、ローカル開発で行うことができます。そのためには、GitHub で別の OAuth App を作成する必要があります:
Homepage URL には
http://localhost:8788を指定しますAuthorization callback URL には
http://localhost:8788/callbackを指定しますClient ID を控え、Client secret を生成します
プロジェクトのルートに
.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 Provider
OAuth Provider ライブラリは、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) 接続を維持します
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that integrates with Discord to provide AI-powered features.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vorticmateja/mcp-github-oauth'
If you have feedback or need assistance with the MCP directory API, please join our Discord server