Golf Course Data by Stracka について
Golf Course Data by Strackaは、StrackaGolfの毎日更新される独自コースデータを開発者やゴルフアプリ向けに提供します。MCP経由で無料検索のほか、クレジット制のスコアカード、GPS、詳細情報、グリーン傾斜データを取得できます。
主な機能
- 01コースグループの無料検索
- 02スコアカードの取得
- 03GPS形状と座標の取得
- 04コース詳細データの参照
- 05グリーン傾斜画像の取得
活用シーン
- 01コースグループの検索と照合
- 02アプリへのスコアカードデータの読み込み
- 03コース地図の座標と形状の取得
- 04グリーン傾斜画像の確認
MCP 対応
ホステッド Streamable HTTP MCP サーバーとローカル stdio サーバーを提供します。有料ツールの呼び出しには `confirm_spend=true` による明示的な確認が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.golfintelligence.com/mcpclaude mcp add --transport http golf-data-golf https://mcp.golfintelligence.com/mcp{"mcpServers":{"golf-data-golf":{"type":"http","url":"https://mcp.golfintelligence.com/mcp"}}}Cursor で開く{"servers":{"golf-data-golf":{"type":"http","url":"https://mcp.golfintelligence.com/mcp"}}}VS Code で開く{"mcpServers":{"golf-data-golf":{"type":"http","url":"https://mcp.golfintelligence.com/mcp"}}}{"mcpServers":{"golf-data-golf":{"serverUrl":"https://mcp.golfintelligence.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Stracka のゴルフコースデータ
Stracka のゴルフコースデータです。StrackaGolf 独自のコースデータのみを 提供し、毎日更新されます。検索は無料です。API 経由でスコアカード、GPS、3D グリーンを利用できます。
Golf Intelligence は、StrackaGolf 独自のコースデータを提供し、毎日更新しています。 詳しくは golfintelligence.com をご覧ください。
このリポジトリは、ハンドル名
golf のインストール可能な Cursor / Grok Bot プラグインです。Cursor マーケットプレイスアプリケーションのソースは、次のパブリック GitHub URL です。
https://github.com/golf-data/golf
マーケットプレイスのレビュアーは、その URL を cursor.com/marketplace/publish に送信できます。 カタログのタイトルは Golf Course Data by Stracka です。
同梱の mcp.json は、Streamable HTTP 経由でホストされた MCP
https://mcp.golfintelligence.com/mcp に接続します。そのため、プラグインのインストールにローカルの Node ビルドは必要ありません。コンソールの認証情報は、.cursor-plugin/plugin.json で宣言されたプラグイン変数から入力される X-GI-Client-ID および X-GI-Active-Token ヘッダーとして送信されます。
以前のリリースでは、プラグイン相対パスの dist/index.js に対して node を起動していました。
Cursor は Agent Plugins の ${PLUGIN_ROOT} 変数を展開しないため、そのプレースホルダーが文字列のまま Node に渡され、コネクターが
Cannot find module '.../${PLUGIN_ROOT}/dist/index.js' で失敗していました。ホストされたコネクターにより、この障害は完全に解消されます。
mcp.stdio.json には、オフラインおよび開発で使用するローカル stdio サーバーが残されています。
これは自動検出されません。golf エントリーを .cursor/mcp.json にコピーするか(チェックアウトでは ${workspaceFolder} を使用)、mcpServers からそのファイルを指定してください。ローカルの stdio 設定では、必ず ${CURSOR_PLUGIN_ROOT} を使用し、${PLUGIN_ROOT} は使用しないでください。コミット済みの dist/index.js バンドルは、リポジトリと MCPB パッケージに含まれているため、先にビルドを実行しなくても stdio パスを使用できます。
公式 MCP Registry 名は io.github.golf-data/golf です。Registry では golf のみの名前は受け付けられません。Cursor、Agent Plugins、Claude Code のプラグインハンドルは引き続き golf です。
API アクセスの取得
パスワードなしで console.golfintelligence.com にサインインできます。ログインページでメールアドレスを入力して確認コードをリクエストし、コードが届いたら入力してください。API Account を作成し、プラグインで必須の次の 2 つの変数を設定します。
GI_CLIENT_ID:ご自身の Client IDGI_ACTIVE_TOKEN:ご自身の Active Token
Active Token は有効期間の短いベアラートークンと交換されます。これはベアラートークンではありません。GI_ACTIVE_TOKEN にベアラートークンを貼り付けないでください。
ご自身のコンソールアカウントの認証情報を使用してください。このプロジェクトではデモトークンを提供していません。
プランは月額制で、コンソールからセルフサービスでアップグレードまたはダウングレードできます。
- Tester: 月額 $49、月 100 クレジット。
- Starter: 月額 $399、月 10,000 クレジット。
請求、クレジット、プラン、ログイン、認証情報については、 [email protected] までメールでお問い合わせください。コースデータの更新については、 [email protected] までメールでお問い合わせください。
ツールとクレジット
必ず最初に検索してください。search_course_groups は無料です。有料の呼び出しを行う前に、ユーザーは提示された費用を明示的に承認する必要があります。confirm_spend=true が指定されていない場合、サーバーは有料ツールの呼び出しを拒否します。
| ツール | 返される内容 | クレジット |
|---|---|---|
search_course_groups | コースグループの検索結果 | 0 |
get_course_group_scorecard | スコアカードデータ | 1 |
get_course_group_gps | 地図化されたコースの形状と座標 | 2 |
get_course_group_detail | 詳細なコースグループデータ | 3 |
get_green_slope_image | グリーンの傾斜画像(縦長または正方形) | 1 |
認証
ローカルの stdio サーバーと従来のユーザーごとの HTTP 認証情報ヘッダーは、設定済みの認証情報を次のエンドポイントと交換します。
POST https://api.golfintelligence.com/auth/authenticateToken
grant_type=client_credentials
code=<GI_ACTIVE_TOKEN>
client_id=<GI_CLIENT_ID>
返された access_token を Authorization: Bearer <access_token> として送信し、メモリ内のみにキャッシュして、HTTP 401 の後に一度だけ更新します。認証情報がログに記録されることはありません。
ホスト型 MCP では、ChatGPT 向けの S256 PKCE を使った OAuth 2.1 認可コードフローも実装されています。専用の認可ページで、各ユーザーが自身のコンソール Client ID と Active Token を入力すると、Golf Intelligence による検証を経て、そのアカウントが暗号化されたアクセス トークンとリフレッシュ トークンに紐付けられます。ディスカバリー URL、OpenAI ポータルの設定、レビュアー向け手順、デプロイ用シークレットについては、docs/OPENAI-CHATGPT-OAUTH.md を参照してください。
ストリーマブル HTTP
ホスト型 MCP は、公式の MCP Streamable HTTP トランスポートを次の URL で利用できます。
https://mcp.golfintelligence.com/mcp
本番環境の HTTP エントリーポイントでは、このトランスポートを /mcp で、ヘルスチェックを /health で提供します。OpenAI Apps のドメイン検証用に、OPENAI_APPS_CHALLENGE_TOKEN(または OPENAI_APPS_CHALLENGE)が設定されている場合は、GET /.well-known/openai-apps-challenge も text/plain で提供します。設定されていない場合、このパスは 404 を返します。次のコマンドで HTTP サーバーをローカル起動します。
npm run build
PORT=3000 npm run start:http
0.0.0.0:$PORT にバインドします。既存の node dist/index.js stdio エントリーポイントと、すべてのプラグインパッケージに変更はありません。
HTTP サービスは、次のいずれかの形式で Golf Intelligence の ID 情報を受け付けます。
- ユーザーが自身の GI アカウントでサインインした後、このサービスが発行する OAuth ベアラートークン。
- 既存のプラグインのインストール環境から、すべての MCP リクエストにまとめて指定される従来の
X-GI-Client-IDとX-GI-Active-Tokenヘッダー。
サーバー全体で共有する GI_CLIENT_ID/GI_ACTIVE_TOKEN のフォールバックは意図的に用意していません。HTTP エントリーポイントはこれらの環境変数を無視するため、匿名の呼び出し元がデプロイ用アカウントを引き継いだり、そのクレジットを使用したりすることはできません。OAuth がない場合や無効な場合は、OAuth 保護リソースチャレンジを含む HTTP 401 を返します。Active Token は交換用の認証情報であり、Authorization: Bearer の値として送信してはいけません。
各ツールは、次の MCP アノテーションを明示的に宣言します。
readOnlyHint: true— 各ツールはコースデータを取得するだけです。openWorldHint: false— 公開システムや外部システムに書き込むツールはありません。destructiveHint: false— 何かを削除、上書き、公開、送信するツールはありません。- 無料検索では
idempotentHint: true。 - 有料ツールでは
idempotentHint: false。有料ツールを繰り返し呼び出すたびに、再度クレジットが消費される可能性があるためです。
これらの文は、OpenAI の申請フォームでアノテーションの根拠としても使用できます。有料の検索には、上記と同じクレジット料金で、引き続き confirm_spend=true が必要です。
コンテナのデプロイ
Dockerfile は、認証情報を埋め込まずに両方のトランスポートをビルドします。fly.toml は小規模な Fly.io サービスを設定し、/health をチェックします。初回デプロイの前に、Fly アプリ名がグローバルで一意であり利用可能なことを確認するか、app を変更してください。次に、docs/OPENAI-CHATGPT-OAUTH.md に記載された OAuth シークレットを設定してデプロイします。最低限、次の設定が必要です。
fly volumes create oauth_state --region ord --size 1
fly secrets set OAUTH_ENCRYPTION_KEY="$(openssl rand -base64 32)"
fly secrets set OAUTH_ISSUER=https://mcp.golfintelligence.com
fly secrets set OPENAI_APPS_CHALLENGE_TOKEN=...
fly deploy
マウントされたボリュームには、GI 認証情報ではなく、OAuth のリプレイ/ローテーション状態が保存されます。このファイルベースの状態ストアには、Machine を 1 台だけ使用してください。
ホスト型 HTTP の呼び出し元に、共有 GI アカウントを設定しないでください。別のブートストラップまたは stdio のワークフロー用に GI_CLIENT_ID/GI_ACTIVE_TOKEN を設定していても、それらは HTTP リクエストの認証には使用されません。
OPENAI_APPS_CHALLENGE_TOKEN には、OpenAI Platform のドメイン検証に表示されるトークンを設定してください。このトークンをコミットしないでください。デプロイ後、GET https://mcp.golfintelligence.com/.well-known/openai-apps-challenge は、トークンを text/plain で返します。
ツール名と説明はデプロイ済みバンドルに含まれるため、再デプロイするまでは、ホスト型 MCP で以前の内容が提供され続けます。マーケットプレイスの掲載情報を更新する前に再デプロイし、Fly、マーケットプレイス、MCP Registry の全手順については docs/RELEASE.md に従ってください。
リポジトリの構成
.cursor-plugin/plugin.json— Cursor マーケットプレイスのマニフェストと必須変数plugin.json— Agent Plugins のオープン標準マニフェスト(ハンドルgolf).claude-plugin/plugin.json— Claude Code / Cowork プラグインのマニフェスト(ハンドルgolf)server.json— 公式 MCP Registry のメタデータ(io.github.golf-data/golf)manifest.json— stdio Node サーバー用の MCPB バンドルマニフェスト.github/workflows/publish-mcp.yml— GitHub OIDC 経由でio.github.golf-data/golfを公式 MCP Registry に公開しますmcp.json— ホストされた MCP エンドポイントを指定する、バンドル済みのgolfコネクターmcp.stdio.json— オフライン開発用の任意のローカル stdio 設定skills/golf/SKILL.md— ワークフローと利用料の確認に関するガイダンスdocs/SMOKE-CHECKLIST.md— デプロイ後および公開後の検証手順docs/RELEASE.md— Fly の再デプロイ、GitHub リリース、レジストリ公開の手順書src/— TypeScript 製の MCP サーバーと API クライアントdist/index.js— インストーラーで使用する、コミット済みの stdio ESM バンドルdist/http.js— コンテナーで使用する、コミット済みの Streamable HTTP ESM バンドルDockerfileとfly.toml— 本番用 HTTP コンテナーと Fly.io サービス
Node.js 18 以降を使用した開発の場合:
npm install
npm test
npm run build
npm run pack:mcpb
pack:mcpb は公式の @anthropic-ai/mcpb pack CLI を使用して golf.mcpb を生成し、その SHA-256 を server.json に書き込みます。GitHub Releases では、このアセットを https://github.com/golf-data/golf/releases/download/v1.0.2/golf.mcpb でホストします。
プラグインコードは MIT License の下で利用できます。Golf Intelligence API のデータには、golfintelligence.com に記載された利用規約が引き続き適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。