Skip to main content
Glama

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@latest

https://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) 接続を維持します

-
license - not tested
-
quality - not tested
C
maintenance

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.

View all MCP Connectors

Latest Blog Posts

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