/ Directorio / Playground / golf
● Comunidad golf-mcp ⚡ Instantáneo

golf

por golf-mcp · golf-mcp/golf

Marco de trabajo Python para desplegar servidores MCP de nivel producción — descubrimiento automático de archivos de herramientas, autenticación integrada (JWT/OAuth/clave de API) y OpenTelemetry out of the box.

Golf (golf-mcp) te permite definir herramientas MCP como archivos Python simples en directorios convencionales; el marco de trabajo las compila en un servidor de producción con autenticación, telemetría y registros gestionados. Orientado a equipos que necesitan una plataforma MCP interna, no un script puntual.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

golf.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "golf": {
      "command": "uvx",
      "args": [
        "golf"
      ],
      "_inferred": true
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "golf": {
      "command": "uvx",
      "args": [
        "golf"
      ],
      "_inferred": true
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "golf": {
      "command": "uvx",
      "args": [
        "golf"
      ],
      "_inferred": true
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "golf": {
      "command": "uvx",
      "args": [
        "golf"
      ],
      "_inferred": true
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "golf",
      "command": "uvx",
      "args": [
        "golf"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "golf": {
      "command": {
        "path": "uvx",
        "args": [
          "golf"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add golf -- uvx golf

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: golf

Construye un MCP interno de la empresa con Golf

👤 Ingenieros de plataforma ⏱ ~60 min advanced

Cuándo usarlo: Quieres un MCP autenticado único exponiendo 20+ herramientas internas (Jira, Grafana, ticketing) a los empleados a través de Claude.

Requisitos previos
  • Python 3.11+, uv — astral.sh/uv
Flujo
  1. Genera la estructura
    Ejecuta uvx golf new acme-mcp y entra en el directorio.✓ Copiado
    → Proyecto con directorios tools/, prompts/, resources/
  2. Añade archivos de herramientas
    Crea tools/list_tickets.py exportando una función async. Golf conecta el esquema automáticamente.✓ Copiado
    → Herramienta visible en la lista /tools
  3. Habilita autenticación JWT vinculada a tu IdP
    Configura golf.yaml auth: jwt con la URL JWKS de tu IdP. Requiere ámbito mcp:use.✓ Copiado
    → Llamadas no autenticadas rechazadas

Resultado: Un MCP desplegable que solo empleados autorizados pueden llamar, con rastros fluyendo a tu APM.

Errores comunes
  • Cada fallo de importación de herramienta rompe el inicio del servidor — Golf carga las herramientas al iniciar — corrige errores de importación o mueve dependencias pesadas dentro de la función

Despliega un MCP con OpenTelemetry desde el primer día

👤 SREs, ingenieros de observabilidad ⏱ ~30 min advanced

Cuándo usarlo: Ya ejecutas colectores OTel y quieres que las llamadas de herramientas del agente aparezcan en rastros.

Flujo
  1. Habilita telemetría
    En golf.yaml, habilita telemetry.otlp con tu endpoint de recolector.✓ Copiado
    → Las llamadas de herramientas aparecen como spans en tu backend OTel
  2. Etiqueta rastros con id de usuario desde autenticación
    Añade un middleware que establezca user.id en cada span desde el JWT sub.✓ Copiado
    → Gráficos de llamadas por usuario

Resultado: El uso de MCP es un ciudadano de primera clase en tu observabilidad existente.

Combinar con: prometheus

Versiona prompts junto al código con Golf

👤 Ingenieros de prompts ⏱ ~25 min intermediate

Cuándo usarlo: Tus prompts viven en Notion y se desvían de lo que realmente se despliega.

Flujo
  1. Mueve prompts al directorio prompts/
    Crea prompts/triage.py con una plantilla de prompt y variables.✓ Copiado
    → El prompt aparece en MCP /prompts/list
  2. Verifica con CI en cada commit
    Añade una prueba que renderice cada prompt con entradas de muestra para detectar cambios rotos✓ Copiado
    → Seguridad de regresión para ediciones de prompts

Resultado: Los prompts se envían a través del mismo proceso de PR que el código.

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

golf + hyper

Compara un servidor Golf basado en Python contra un modelo de plugin hyper-mcp WASM

Tengo la misma herramienta en Golf e hyper-mcp. Ejecuta una comparación de latencia y memoria en 100 llamadas cada una.✓ Copiado
golf + prometheus

Recolecta las métricas de Golf en Prometheus

Apunta mi Prometheus a /metrics de golf, luego consulta la latencia p99 de herramientas con prometheus-mcp.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
golf new <name> project_name: str Inicia un nuevo servidor 0
golf build Compila directorios de herramientas en un binario/imagen de servidor 0
golf run --transport stdio|http Lanzamiento de desarrollo local o de producción 0

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguna — el marco de trabajo se ejecuta donde lo alojes
Tokens por llamada
Depende de las herramientas
Monetario
Gratis, código abierto
Consejo
Habilita muestreo de telemetría en producción (p. ej. 10% de llamadas de herramientas) para controlar el costo de ingesta OTel

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Secretos JWT/OAuth vía env; Golf nunca los registra por defecto
Salida de datos: Donde sea que tus herramientas llamen

Resolución de problemas

Errores comunes y soluciones

La herramienta no aparece en la lista de herramientas

Verifica que el archivo exporte la función async con el nombre exacto que Golf espera (consulta la documentación del marco de trabajo); los metadatos __tool__ faltantes son la causa más común

Verificar: golf run --debug muestra el registro de descubrimiento
La validación JWT falla con un token válido

URL JWKS inaccesible o emisor incorrecto. Verifica con curl; comprueba el sesgo de reloj en el host

Los rastros no aparecen en el backend OTel

Golf usa OTLP/HTTP — asegúrate de que el recolector tenga ese receptor habilitado, no solo gRPC

Verificar: curl -v $OTLP_ENDPOINT/v1/traces

Alternativas

golf vs otros

AlternativaCuándo usarlaContrapartida
FastMCPQuieres algo más simple sin características de autenticación/telemetríaDebes manejar tus propias preocupaciones de producción
MCP-Nest (NestJS)Tu equipo es una tienda de NestJSSolo TypeScript
ArcadeEnfoque en distribución/compartir tanto como en construcciónPúblico objetivo ligeramente diferente

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills