Golf Intelligence, by Stracka
El conjunto de datos de campos de golf de mayor calidad para desarrolladores que crean una aplicación de golf: 20 años de mapeo propietario, actualizado a diario, con tarjetas de puntuación, GPS y greens en 3D vía API.
Documentación
Golf Intelligence, by Stracka
Golf Intelligence, by Stracka. Datos de campos de golf propietarios de StrackaGolf para desarrolladores que crean una aplicación de golf, actualizados diariamente. La búsqueda es gratuita. Tarjetas de puntuación, GPS y greens en 3D están disponibles a través de la API.
Golf Intelligence proporciona datos de campos de golf propietarios de StrackaGolf, actualizados diariamente. Obtén más información en golfintelligence.com.
Este repositorio es el plugin instalable de Cursor / Grok Bot con el identificador
golf. El código fuente de la aplicación del marketplace de Cursor es la URL pública de GitHub:
https://github.com/golf-data/golf
Los revisores del marketplace pueden enviar esa URL en cursor.com/marketplace/publish. El título del catálogo es Golf Intelligence, by Stracka.
El mcp.json incluido se conecta al MCP alojado en
https://mcp.golfintelligence.com/mcp a través de Streamable HTTP, por lo que instalar el
plugin nunca depende de una compilación local de Node. Tus credenciales de consola viajan como
los encabezados X-GI-Client-ID y X-GI-Active-Token, completados desde las variables
del plugin declaradas en .cursor-plugin/plugin.json.
Las versiones anteriores lanzaban node contra un dist/index.js relativo al plugin.
Cursor no expande la variable ${PLUGIN_ROOT} de Agent Plugins, por lo que ese
marcador de posición llegaba a Node literalmente y el conector fallaba con
Cannot find module '.../${PLUGIN_ROOT}/dist/index.js'. El conector alojado
elimina ese modo de fallo por completo.
mcp.stdio.json mantiene el servidor stdio local para uso sin conexión y de desarrollo.
No se detecta automáticamente; copia su entrada golf en .cursor/mcp.json (usando
${workspaceFolder} en un checkout) o apunta mcpServers a él. Cualquier configuración
stdio local debe usar ${CURSOR_PLUGIN_ROOT}, nunca ${PLUGIN_ROOT}. El
paquete dist/index.js confirmado se incluye en el repositorio y en el paquete
MCPB, por lo que la ruta stdio funciona sin ejecutar una compilación primero.
El nombre oficial del Registro MCP es io.github.golf-data/golf. El registro
no acepta un nombre golf simple. Los identificadores de plugin de Cursor, Agent Plugins y Claude Code
siguen siendo golf.
Obtén acceso a la API
Inicia sesión en console.golfintelligence.com sin contraseña: ingresa tu correo electrónico en la página de inicio de sesión, solicita un código de verificación y luego ingresa el código después de que se envíe. Crea una Cuenta de API y configura las dos variables requeridas del plugin:
GI_CLIENT_ID: tu ID de ClienteGI_ACTIVE_TOKEN: tu Token Activo
El Token Activo se intercambia por un token de portador de corta duración. No es un
token de portador; no pegues un token de portador en GI_ACTIVE_TOKEN.
Usa credenciales de tu propia cuenta de consola. Este proyecto no proporciona tokens de demostración.
Los planes son mensuales y se pueden actualizar o degradar de forma autónoma en la consola:
- Tester: $49/mes por 100 créditos/mes.
- Starter: $399/mes por 10,000 créditos/mes.
Para facturación, créditos, planes, inicio de sesión o ayuda con credenciales, envía un correo a support@golfintelligence.com. Para actualizaciones de datos de campos, envía un correo a data@golfintelligence.com.
Herramientas y créditos
Busca siempre primero. search_course_groups es gratuito. Antes de cada llamada de pago,
el usuario debe confirmar explícitamente el costo indicado; el servidor rechaza herramientas de pago
a menos que confirm_spend=true.
| Herramienta | Qué devuelve | Créditos |
|---|---|---|
search_course_groups | Resultados de búsqueda de grupos de campos | 0 |
get_course_group_scorecard | Datos de tarjeta de puntuación | 1 |
get_course_group_gps | Geometría y coordenadas de campos mapeados | 2 |
get_course_group_detail | Datos detallados de grupos de campos | 3 |
get_green_slope_image | Imagen de pendiente de green vertical o cuadrada | 1 |
Autenticación
El servidor stdio local y los encabezados de credenciales HTTP heredados por usuario intercambian las credenciales configuradas con:
POST https://api.golfintelligence.com/auth/authenticateToken
grant_type=client_credentials
code=<GI_ACTIVE_TOKEN>
client_id=<GI_CLIENT_ID>
Envía el access_token devuelto como Authorization: Bearer <access_token>,
lo almacena en caché solo en memoria y lo actualiza una vez después de un HTTP 401. Las credenciales
nunca se registran.
El MCP alojado además implementa el flujo de código de autorización OAuth 2.1 con S256 PKCE para ChatGPT. Su página de autorización dedicada acepta el ID de Cliente y el Token Activo de la consola de cada usuario, los valida con Golf Intelligence y vincula esa cuenta a tokens de acceso y actualización cifrados. Consulta docs/OPENAI-CHATGPT-OAUTH.md para las URL de descubrimiento, la configuración del portal de OpenAI, los pasos para revisores y los secretos de implementación.
Streamable HTTP
El MCP alojado está disponible a través del transporte oficial MCP Streamable HTTP en:
https://mcp.golfintelligence.com/mcp
El punto de entrada HTTP de producción sirve ese transporte en /mcp y una verificación
de salud en /health. Para la verificación de dominio de OpenAI Apps, también sirve
GET /.well-known/openai-apps-challenge como text/plain cuando
OPENAI_APPS_CHALLENGE_TOKEN (o OPENAI_APPS_CHALLENGE) está configurado; de lo contrario,
esa ruta devuelve 404. Inicia el servidor HTTP localmente con:
npm run build
PORT=3000 npm run start:http
Se vincula a 0.0.0.0:$PORT. El punto de entrada stdio node dist/index.js existente
y todos los paquetes de plugins permanecen sin cambios.
El servicio HTTP acepta la identidad de Golf Intelligence en cualquiera de estas formas:
- Un token de portador OAuth emitido por este servicio después de que el usuario inicie sesión con su propia cuenta de GI.
- Encabezados heredados
X-GI-Client-IDyX-GI-Active-Tokenproporcionados juntos en cada solicitud MCP por instalaciones de plugins existentes.
Deliberadamente no hay un respaldo GI_CLIENT_ID / GI_ACTIVE_TOKEN
a nivel de servidor. El punto de entrada HTTP ignora esas variables de entorno, por lo que un
llamante anónimo no puede heredar una cuenta de implementación ni gastar sus créditos.
Un OAuth faltante o inválido devuelve HTTP 401 con un desafío de recurso protegido OAuth.
El Token Activo es una credencial de intercambio y no debe enviarse como
un valor Authorization: Bearer.
Cada herramienta anuncia explícitamente estas anotaciones MCP:
readOnlyHint: true— cada herramienta solo recupera datos de campos.openWorldHint: false— ninguna herramienta escribe en sistemas públicos o externos.destructiveHint: false— ninguna herramienta elimina, sobrescribe, publica o envía nada.idempotentHint: truepara búsqueda gratuita.idempotentHint: falsepara herramientas de pago porque cada invocación de pago repetida puede consumir créditos nuevamente.
Estas frases también se pueden usar como justificaciones de anotación en el
formulario de envío de OpenAI. Las consultas de pago aún requieren confirm_spend=true con los
mismos costos de crédito documentados anteriormente.
Implementación en contenedor
Dockerfile compila ambos transportes sin incrustar credenciales.
fly.toml configura un pequeño servicio de Fly.io y verifica /health. Antes de la
primera implementación, confirma que el nombre de la aplicación de Fly globalmente único esté disponible (o
cambia app), luego configura los secretos de OAuth documentados en
docs/OPENAI-CHATGPT-OAUTH.md e implementa. Como mínimo:
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
El volumen montado almacena el estado de reproducción/rotación de OAuth, no las credenciales de GI. Ejecuta una Máquina para este almacén de estado respaldado por archivos.
No configures una cuenta de GI compartida para llamantes HTTP alojados. Si
GI_CLIENT_ID / GI_ACTIVE_TOKEN existen para un flujo de trabajo de arranque o stdio
separado, no autorizan solicitudes HTTP.
Configura OPENAI_APPS_CHALLENGE_TOKEN con el token que se muestra en la verificación de dominio de OpenAI
Platform. No confirmes ese token. Después de la implementación,
GET https://mcp.golfintelligence.com/.well-known/openai-apps-challenge
debería devolver el token como text/plain.
Los nombres y descripciones de las herramientas están integrados en el paquete implementado, por lo que el
MCP alojado sigue sirviendo la copia anterior hasta que se vuelva a implementar. Vuelve a implementar antes de
actualizar la lista del marketplace y sigue docs/RELEASE.md para el orden
completo entre Fly, el marketplace y el Registro MCP.
Estructura del repositorio
.cursor-plugin/plugin.json— manifiesto del marketplace de Cursor y variables requeridasplugin.json— manifiesto de estándar abierto de Agent Plugins (identificadorgolf).claude-plugin/plugin.json— manifiesto de plugin de Claude Code / Cowork (identificadorgolf)server.json— metadatos oficiales del Registro MCP (io.github.golf-data/golf)manifest.json— manifiesto del paquete MCPB para el servidor Node stdio.github/workflows/publish-mcp.yml— publicaio.github.golf-data/golfen el Registro MCP oficial a través de GitHub OIDCmcp.json— conectorgolfincluido que apunta al punto final MCP alojadomcp.stdio.json— configuración stdio local opcional para desarrollo sin conexiónskills/golf/SKILL.md— guía de flujo de trabajo y confirmación de gastosdocs/SMOKE-CHECKLIST.md— pasos de verificación posteriores a la implementación y publicacióndocs/RELEASE.md— manual de operaciones de reimplementación de Fly, lanzamiento de GitHub y publicación en el registrosrc/— servidor MCP TypeScript y cliente de APIdist/index.js— paquete ESM stdio confirmado utilizado por los instaladoresdist/http.js— paquete ESM Streamable HTTP confirmado utilizado por el contenedorDockerfileyfly.toml— contenedor HTTP de producción y servicio de Fly.io
Para desarrollo con Node.js 18 o más reciente:
npm install
npm test
npm run build
npm run pack:mcpb
pack:mcpb usa la CLI oficial @anthropic-ai/mcpb pack para producir golf.mcpb y escribe su SHA-256 en server.json. Los lanzamientos de GitHub alojan ese activo en https://github.com/golf-data/golf/releases/download/v1.0.2/golf.mcpb.
El código del plugin está disponible bajo la Licencia MIT. Los datos de la API de Golf Intelligence siguen sujetos a los términos en golfintelligence.com.