Model Context Protocol (MCP) Server + Strava OAuth について
Cloudflare Workers 上で動作する MCP サーバーで、Strava OAuth によるサインイン機能を内蔵しています。利用者は Strava アカウントでログインしてからツールにアクセスします。MCP クライアント向けの OAuth サーバーと Strava 向けの OAuth クライアントの両方の役割を担い、開発者向けの参照実装として利用できます。
主な機能
- 01Strava OAuth サインインを内蔵
- 02OAuth 2.1 サーバーとしてのトークン発行と検証
- 03workers-oauth-provider ライブラリを利用
- 04Cloudflare KV によるトークン保存
- 05SSE エンドポイントによるリモート MCP 接続
活用シーン
- 01MCP クライアントへの Strava アカウントログイン提供
- 02OAuth プロバイダーをリモート MCP サーバーに接続する方法の学習
- 03認証付き MCP サーバーの Cloudflare Workers へのデプロイ
MCP 対応
本プロジェクトは リモート MCP サーバーであり、Claude や Cursor などの MCP クライアントに対して SSE エンドポイント経由でツールを公開します。接続前に Strava での認可が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Model Context Protocol (MCP) サーバー + Strava OAuth
これは、リモート MCP 接続をサポートし、Strava OAuth を組み込んだ Model Context Protocol (MCP) サーバーです。ユーザーは Strava アカウントでサインインして、あなたの MCP サーバーに接続できます。
概要
MCP サーバー(Cloudflare Workers を利用)は、次の 2 つの役割を担います:
- MCP クライアントに対する OAuth サーバーとして機能します
- Strava の OAuth サービスに対する OAuth クライアントとして機能します
このプロジェクトは、workers-oauth-provider ライブラリを使用して、Cloudflare にデプロイされた MCP サーバーに OAuth プロバイダーを統合するためのリファレンス例です。
前提条件
- Strava アカウント
- Cloudflare アカウント
- Node.js と npm がインストールされていること
- Wrangler CLI がインストールされていること(
npm install -g wrangler)
クイックスタート
-
リポジトリをクローンします:
git clone https://github.com/kw510/strava-mcp.git cd strava-mcp npm install -
Strava API の認証情報を設定します(Strava API 認証情報の設定を参照)
-
Cloudflare KV ネームスペースを設定します:
wrangler kv:namespace create "OAUTH_KV"生成された KV ID で
wrangler.tomlファイルを更新します。 -
Cloudflare にデプロイします:
wrangler deploy
Strava API 認証情報の設定
本番環境の場合
-
Strava の API 設定にアクセスし、新しいアプリケーションを作成します
-
アプリケーションを設定します:
- Application Name: アプリケーションの名前を選択します
- Category: 適切なカテゴリを選択します
- Website: あなたのウェブサイトの URL
- Application Description: アプリケーションの簡単な説明
- Authorization Callback Domain:
mcp-strava-oauth.<your-subdomain>.workers.dev - Authorization Callback URL:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/callback
-
本番環境の環境変数を設定します:
wrangler secret put STRAVA_CLIENT_ID wrangler secret put STRAVA_CLIENT_SECRET
開発環境の場合
-
開発用に別の Strava API アプリケーションを作成します
-
開発用アプリケーションを設定します:
- Authorization Callback Domain:
localhost - Authorization Callback URL:
http://localhost:8788/callback
- Authorization Callback Domain:
-
プロジェクトのルートに
.dev.varsファイルを作成します:STRAVA_CLIENT_ID=your_development_strava_client_id STRAVA_CLIENT_SECRET=your_development_strava_client_secret
MCP サーバーのテスト
Inspector の使用
-
Inspector ツールをインストールします:
npx @modelcontextprotocol/inspector@latest -
サーバーに接続します:
- 本番環境の場合:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse - 開発環境の場合:
http://localhost:8788/sse
- 本番環境の場合:
Claude Desktop の使用
- Claude Desktop を開き、Settings -> Developer -> Edit Config に移動します
- MCP サーバーの設定を追加します:
{ "mcpServers": { "strava": { "command": "npx", "args": [ "mcp-remote", "https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse" ] } } } - Claude Desktop を再起動し、OAuth フローを完了します
開発
ローカル開発
-
開発サーバーを起動します:
wrangler dev -
サーバーは
http://localhost:8788で利用可能になります
API レート制限
Strava API には以下のレート制限があります:
- 15 分ごとに 200 リクエスト
- 1 日あたり 2,000 リクエスト
仕組み
OAuth プロバイダー
OAuth プロバイダーライブラリは以下を処理します:
- OAuth 2.1 サーバーの実装
- トークンの発行と検証
- KV への安全なトークン保存
- Strava OAuth との統合
Durable MCP
以下を提供します:
- 永続的な状態管理
- 安全な認証コンテキストの保存
this.propsを介したユーザー情報へのアクセス- 条件付きのツールの可用性
MCP Remote
以下を可能にします:
- クライアントとサーバー間の通信
- ツールの定義と管理
- リクエスト/レスポンスのシリアライズ
- SSE 接続の維持
トラブルシューティング
- Claude Desktop でエラーメッセージが表示される場合は、🔨 アイコンにカーソルを合わせて接続を確認してください
- Cursor との統合では、「Command」タイプを使用し、command と args を 1 つの文字列にまとめてください
- コールバック URL が、Strava アプリケーションで設定した内容と完全に一致していることを確認してください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。