golf

Из публичных источников

Фреймворк MCP-серверов, готовый к производству • Создание, развертывание и масштабирование безопасной инфраструктуры для ИИ-агентов • Включает аутентификацию, наблюдаемость, отладчик, телеметрию и среду выполнения • Запускайте реальные MCP, на которых работают ИИ-агенты

Машинный перевод · Показать оригинал

Production-Ready MCP Server Framework • Build, deploy & scale secure AI agent infrastructure • Includes Auth, Observability, Debugger, Telemetry & Runtime • Run real-world MCPs powering AI Agents

MCP-серверКатегория: MCP-серверы · SDK и фреймворкиOpen sourceданные проверены 15 окт. 2026 г.

Обзор

  • agent-runtime
  • ai
  • ai-agent
  • ai-agent-tools
  • ai-agents
  • ai-platform
  • aiagents
  • auth
  • authentication
  • authorization

Установка

Команды только показываются, маркетплейс их не выполняет. Сверяйтесь с официальной документацией.
  • Официальный сайтИз публичных источниковиз метаданных каталога
    golf.dev/ ↗
  • Файлы официального релизаИз публичных источниковиз последнего официального релиза
    github.com/golf-mcp/golf/releases/tag/v0.4.1 ↗
  • Реестр пакетов языкаpythonИз публичных источниковиз манифеста пакета — публикация в реестре не проверена
    pipx install golf-mcp

    Не проверено: перед установкой убедитесь, что пакет в реестре принадлежит этому проекту.

    pypi.org/project/golf-mcp/ ↗
  • Сборка из исходниковИз публичных источниковиз метаданных каталога

    Сборка из исходников: проверенного рецепта сборки нет — следуйте инструкциям репозитория.

    github.com/golf-mcp/golf ↗

Совместимость

«Неизвестно» значит, что доказательств не найдено, а не что продукт несовместим.
ПлатформаСтатусАрхитектураДоказательствоУверенность
Claude (web & desktop)Неизвестно———
Claude CodeНеизвестно———
CursorНеизвестно———
VS CodeНеизвестно———
WindsurfНеизвестно———
ChatGPTНеизвестно———
PythonСовместимо—официальная сборка в релизе v0.4.1: golf_mcp-0.4.1-py3-none-any.whl0.60

Релизы

проверено 29 окт. 2026 г.
v0.4.1Последний9 сент. 2026 г.Официальный источник ↗

Файлы версии 0.4.1

Маркетплейс не хранит эти файлы: загрузка идёт из официального источника. Мы их не сканировали.
ФайлПлатформаРазмерSHA-256Скачать из официального источника
golf_mcp-0.4.1-py3-none-any.whlpython · wheel115,2 KB6d2e09134381…Официальный источник ↗
golf_mcp-0.4.1.tar.gzНеизвестно103,5 KB9d88146dfc8c…Официальный источник ↗

История релизов

Профиль качества

алгоритм quality-v1.0 · оценено 15 окт. 2026 г.
Оценка качества93
Оценка риска0
Уверенность 1.00
Оценка качества и оценка риска — разные показатели. Высокое качество не гарантирует безопасность.

Составляющие оценки

Поддержка · 2016
last activity 36 days ago
Документация · 1515
README 9057 chars, description present
Готовность к использованию · 1515
install instructions: yes; releases: yes
Метаданные · 1010
4/4 of description, homepage, license, topics
Релизы · 1010
10 release(s), latest 36 days ago
Точность категории · 1010
classifier confidence 0.97
Популярность · 107
840 stars (log-dampened, 10k = max)
Ясность лицензии · 55
SPDX Apache-2.0
Сообщество · 55
issues enabled, 75 forks

Лицензия

Apache-2.0
Лицензия известнапо данным хостинга репозитория

Это статус политики каталога, а не юридическое заключение.

Источники

github.com/golf-mcp/golfОсновной★ 840 звёздактивность 9 сент. 2026 г.Основной репозиторий · Уверенность 1.00

Отзывы

Войдите, чтобы написать отзыв

Отзывов пока нет.

Альтернативы

trinityПохожий
Самостоятельно размещаемая платформа AI-агентов с поддержкой Claude Code, Codex и Gemini-агентов. Лицензия Apache 2.0.Apache-2.0 · MCP-серверы
swarmclawПохожий
Открытая самостоятельно размещаемая среда выполнения ИИ-агентов и фреймворк для мультиагентных систем с автономными роями агентов. Память агентов, инструменты MCP, расписания, делегирование задач и более 23 провайдеров LLM (Claude, GPT, Gemini, OpenRouter, Ollama). Практичная альтернатива Claude Code и LangChain.MIT · MCP-серверы
fastapi_mcpПохожий
Откройте эндпоинты FastAPI как инструменты Model Context Protocol (MCP) с поддержкой аутентификации!MIT · MCP-серверы
agentsПохожий
Создавайте ИИ-агентов в визуальном конструкторе без программирования или с помощью TypeScript SDK с полной двусторонней синхронизацией. Для выпуска ИИ-ассистентов и многоагентных ИИ-рабочих процессов.MCP-серверы
MakeMoneyWithAIПохожий
Список проектов с открытым исходным кодом в области ИИ, с помощью которых можно легко зарабатывать деньги.MCP-серверы
LLM-Agents-Ecosystem-HandbookПохожий
Универсальное руководство по созданию, развёртыванию и пониманию LLM-агентов: более 60 шаблонов, учебные материалы, руководства по экосистеме и инструменты оценки.MIT · MCP-серверы

README

Из golf-mcp/golf · лицензия Apache-2.0 · загружено 29 окт. 2026 г.

Overview

Golf is a framework designed to streamline the creation of MCP server applications. It allows developers to define server's capabilities—tools, prompts, and resources—as simple Python files within a conventional directory structure. Golf then automatically discovers, parses, and compiles these components into a runnable MCP server, minimizing boilerplate and accelerating development.

Golf targets FastMCP 4.0.0 and the current MCP 2026-07-28 protocol. FastMCP also negotiates legacy MCP clients through its compatibility mode.

With Golf v0.2.0, you get enterprise-grade authentication (JWT, OAuth Server, development tokens), built-in utilities for LLM interactions, and automatic telemetry integration. Focus on implementing your agent's logic while Golf handles authentication, monitoring, and server infrastructure.

Quick Start

Get your Golf project up and running in a few simple steps:

1. Install Golf

Golf requires Python 3.10 or newer. Then, install Golf using pip:

pip install golf-mcp

2. Initialize Your Project

Use the Golf CLI to scaffold a new project:

golf init your-project-name

This command creates a new directory (your-project-name) with a basic project structure, including example tools, resources, and a golf.json configuration file.

3. Run the Development Server

Navigate into your new project directory and start the development server:

cd your-project-name
golf build dev
golf run

This will start the MCP server, typically on http://localhost:3000 (configurable in golf.json).

That's it! Your Golf server is running and ready for integration.

Basic Project Structure

A Golf project initialized with golf init will have a structure similar to this:

<your-project-name>/
│
├─ golf.json          # Main project configuration
│
├─ tools/             # Directory for tool implementations
│   └─ hello.py       # Example tool
│
├─ resources/         # Directory for resource implementations
│   └─ info.py        # Example resource
│
├─ prompts/           # Directory for prompt templates
│   └─ welcome.py     # Example prompt
│
├─ .env               # Environment variables (e.g., API keys, server port)
└─ auth.py            # Authentication configuration (JWT, OAuth Server, API key, dev tokens)
  • golf.json: Configures server name, port, transport, telemetry, and other build settings.
  • auth.py: Dedicated authentication configuration file (new in v0.2.0, breaking change from v0.1.x authentication API) for JWT, OAuth Server, API key, or development authentication.
  • tools/, resources/, prompts/: Contain your Python files, each defining a single component. These directories can also contain nested subdirectories to further organize your components (e.g., tools/payments/charge.py). The module docstring of each file serves as the component's description.
    • Component IDs are automatically derived from their file path. For example, tools/hello.py becomes hello, and a nested file like tools/payments/submit.py would become submit_payments (filename, followed by reversed parent directories under the main category, joined by underscores).

Example: Defining a Tool

Creating a new tool is as simple as adding a Python file to the tools/ directory. The example tools/hello.py in the boilerplate looks like this:

# tools/hello.py
"""Hello World tool {{project_name}}."""

from typing import Annotated
from pydantic import BaseModel, Field

class Output(BaseModel):
    """Response from the hello tool."""
    message: str

async def hello(
    name: Annotated[str, Field(description="The name of the person to greet")] = "World",
    greeting: Annotated[str, Field(description="The greeting phrase to use")] = "Hello"
) -> Output:
    """Say hello to the given name.
    
    This is a simple example tool that demonstrates the basic structure
    of a tool implementation in Golf.
    """
    print(f"{greeting} {name}...")
    return Output(message=f"{greeting}, {name}!")

# Designate the entry point function
export = hello

Golf will automatically discover this file. The module docstring """Hello World tool {{project_name}}.""" is used as the tool's description. It infers parameters from the hello function's signature and uses the Output Pydantic model for the output schema. The tool will be registered with the ID hello.

Authentication & Features

Golf includes enterprise-grade authentication, built-in utilities, and automatic telemetry:

# auth.py - Configure authentication
from golf.auth import configure_auth, JWTAuthConfig, StaticTokenConfig, OAuthServerConfig

# JWT authentication (production)
configure_auth(JWTAuthConfig(
    jwks_uri_env_var="JWKS_URI",
    issuer_env_var="JWT_ISSUER", 
    audience_env_var="JWT_AUDIENCE",
    required_scopes=["read", "write"]
))

# OAuth Server mode (Golf acts as OAuth 2.0 server)
# configure_auth(OAuthServerConfig(
#     base_url="https://your-golf-server.com",
#     valid_scopes=["read", "write", "admin"]
# ))

# Static tokens (development only)
# configure_auth(StaticTokenConfig(
#     tokens={"dev-token": {"client_id": "dev", "scopes": ["read"]}}
# ))

# Built-in utilities available in all tools
from golf.utilities import elicit, sample, get_current_context

On MCP 2026-07-28, elicitation and sampling use caller-owned multi-round-trip control flow. A nested helper cannot transparently continue the containing tool: declare InputRequiredResult in the tool's return type and return any such result unchanged. The tool is then re-entered with the answer. Legacy connections continue to use imperative requests.

from mcp_types import InputRequiredResult
from golf.utilities import sample

async def explain(topic: str) -> str | InputRequiredResult:
    result = await sample(f"Explain {topic}")
    if isinstance(result, InputRequiredResult):
        return result
    return result

JWT authentication requires an audience so tokens are bound to this MCP resource. Inbound MCP JWT/OAuth bearer tokens must never be forwarded to an upstream API; use a separate upstream credential or a standards-based token exchange/delegation flow.

# Enable OpenTelemetry tracing
export OTEL_TRACES_EXPORTER="otlp_http"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318/v1/traces"
golf run  # ✅ Telemetry enabled

📚 Complete Documentation →

Configuration

Basic configuration in golf.json:

{
  "name": "My Golf Server",
  "host": "localhost",
  "port": 3000,
  "transport": "streamable-http",
  "opentelemetry_enabled": false,
  "detailed_tracing": false
}
  • transport: Use "streamable-http" or "stdio". SSE remains available only as a deprecated legacy transport.
  • stateless_http: Optional legacy Streamable HTTP behavior. MCP 2026-07-28 is intrinsically sessionless and does not depend on this setting.
  • opentelemetry_enabled: Enable OpenTelemetry tracing
  • detailed_tracing: Capture input/output (use carefully with sensitive data)

Privacy & Telemetry

Golf collects anonymous usage data on the CLI to help us understand how the framework is being used and improve it over time. The data collected includes:

  • Commands run (init, build, run)
  • Success/failure status (no error details)
  • Golf version, Python version (major.minor only), and OS type
  • Template name (for init command only)
  • Build environment (dev/prod for build commands only)

No personal information, project names, code content, or error messages are ever collected.

Opting Out

You can disable telemetry in several ways:

  1. Using the telemetry command (recommended):

    golf telemetry disable
    

    This saves your preference permanently. To re-enable:

    golf telemetry enable
    
  2. During any command: Add --no-telemetry to save your preference:

    golf init my-project --no-telemetry
    

Your telemetry preference is stored in ~/.golf/telemetry.json and persists across all Golf commands.

Открыть репозиторий ↗