VINdata MCP について
Cloudflare Workers上で動作するリモートMCPサーバーのテンプレートで、GitHub OAuthによる認証とトークン管理を示します。OAuthログイン付きMCPサービスを構築する開発者向けで、加算やユーザー情報取得のツール例を含みます。
主な機能
- 01リモートMCP接続に対応
- 02GitHub OAuthでユーザー認証
- 03KVにトークンと認証状態を保存
- 04GitHubユーザーごとにツールを制限
- 05ローカル開発とデプロイ手順を提供
活用シーン
- 01GitHubログインが必要なリモートMCPサーバーの構築
- 02Cloudflare WorkersサービスへのGitHub OAuth導入
- 03ユーザー単位でのツールアクセス制御
- 04ローカル実行とInspectorによる接続テスト
MCP 対応
MCP Remoteを介してMCPクライアントにツールを公開し、SSEで接続を維持します。クライアント向けのOAuthサーバーであると同時に、GitHub向けのOAuthクライアントとして動作します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://vindata-mcp.vindata.workers.dev/mcpclaude mcp add --transport http vindata https://vindata-mcp.vindata.workers.dev/mcp{"mcpServers":{"vindata":{"type":"http","url":"https://vindata-mcp.vindata.workers.dev/mcp"}}}Cursor で開く{"servers":{"vindata":{"type":"http","url":"https://vindata-mcp.vindata.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"vindata":{"type":"http","url":"https://vindata-mcp.vindata.workers.dev/mcp"}}}{"mcpServers":{"vindata":{"serverUrl":"https://vindata-mcp.vindata.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
1| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| vin | string | はい | 17 桁の車両識別番号 |
詳細
Model Context Protocol(MCP)サーバー+Github OAuth
これは、Github OAuth を組み込んだ、リモート MCP 接続をサポートするModel Context Protocol(MCP)サーバーです。
ご自身の Cloudflare アカウントにデプロイし、独自の Github OAuth クライアントアプリを作成すると、そこから構築できる、完全に機能するリモート MCP サーバーが利用できるようになります。ユーザーは GitHub アカウントでサインインして、MCP サーバーに接続できます。
workers-oauth-provider libraryを使用して、Cloudflare にデプロイした MCP サーバーに他の OAuth プロバイダーを統合する方法を示す参考例として利用できます。
この MCP サーバーは、Cloudflare Workersを利用しており、次の役割を担います。
- MCP クライアントに対する OAuth サーバー
- 実際の OAuth サーバー(この場合は GitHub)に対する OAuth クライアント
警告
これは、すぐに使い始められるように設計されたデモテンプレートです。いくつかのセキュリティ対策を実装していますが、本番環境にデプロイする前に、あらゆる予防的セキュリティ対策と多層防御を実装する必要があります。包括的なセキュリティガイドをご確認ください:MCP サーバーの保護
はじめに
リポジトリを直接クローンして、依存関係をインストールします:npm install。
または、以下のコマンドラインを使用して、リモート MCP サーバーをローカルマシンに作成できます。
npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-github-oauth
本番環境の場合
新しいGitHub OAuth アプリを作成します。
- 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
重要
最初のシークレットを作成するとき、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 アプリをもう 1 つ作成する必要があります。
- ホームページ 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 を入力して、接続をクリックします。表示される手順に従うと、「ツールの一覧表示」ができるようになります。
Claude およびその他の MCP クライアントの使用
Claude を使ってリモート MCP サーバーに接続する際、エラーメッセージが表示される場合があります。Claude Desktop はまだリモート MCP サーバーに対応していないため、混乱することがあります。MCP サーバーが接続されているか確認するには、Claude のインターフェース右下にある 🔨 アイコンにカーソルを合わせます。そこに利用可能なツールが表示されます。
Cursor およびその他の MCP クライアントの使用
Cursor を MCP サーバーに接続するには、Type に「Command」を選び、Command フィールドにコマンドと args フィールドをまとめて入力します(例:npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/sse)。
Cursor は HTTP+SSE サーバーに対応していますが、認証には対応していないため、引き続き mcp-remote を使用する必要があります(また、HTTP サーバーではなく STDIO サーバーを使用します)。
Windsurf などの他の MCP クライアントを接続するには、クライアントの設定ファイルを開き、Claude の設定で使用したものと同じ JSON を追加してから、MCP クライアントを再起動します。
どのように動作するのか?
OAuth Provider
OAuth Provider ライブラリは、Cloudflare Workers 向けの完全な OAuth 2.1 サーバー実装を提供します。トークンの発行、検証、管理など、OAuth フローの複雑な処理を担います。このプロジェクトでは、次の 2 つの役割を果たします。
- サーバーに接続する 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)接続を維持します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。