Maksim Totmin 39a38bfd74
ci / test (push) Successful in 1m48s
ci / lint (push) Successful in 3m50s
ci: устойчивый карантин зависимостей (grep под set -e)
grep -v без совпадений возвращает 1; в sh -e это роняло шаг. Добавлен || true.
2026-09-14 00:37:20 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00
2026-09-14 00:23:08 +07:00

forge-toolkit

Хелперы для разработки MCP-серверов на Go: разбор аргументов, JSON-Schema, результаты, stdio-lifecycle, ${VAR}-экспансия, live-reload конфигов и протокол эмитированных permission-паттернов (probe).

Подходит для написания своих MCP-инструментов (файлы, БД, HTTP, DevOps и т.д.) и совместим с любым MCP-клиентом.

Состав

Пакет Назначение
git.totmin.ru/en2zmax/forge-toolkit args / schema / result / env / probe / server
git.totmin.ru/en2zmax/forge-toolkit/validate валидаторы синтаксиса (JSON/YAML/TOML/XML/INI/ENV/Dockerfile)
git.totmin.ru/en2zmax/forge-toolkit/configreload live-reload конфига по контент-хэшу

Зависимости тулкита намеренно минимальны: stdlib + официальный modelcontextprotocol/go-sdk (+ yaml.v3/toml в подпакете validate). Это фиксируется в CI (make toolkit-deps).

Установка

Модуль размещён на self-hosted Gitea, поэтому go get идёт напрямую, мимо proxy.golang.org:

export GOPRIVATE=git.totmin.ru
go get git.totmin.ru/en2zmax/forge-toolkit@latest

Быстрый старт

package main

import (
	"context"
	"time"

	"github.com/modelcontextprotocol/go-sdk/mcp"
	"git.totmin.ru/en2zmax/forge-toolkit"
)

func main() {
	if toolkit.Health() {
		return
	}
	_ = toolkit.Run("my-server", func(s *mcp.Server) {
		mcp.AddTool(s, &mcp.Tool{
			Name:        "get_time",
			Description: "Текущее время сервера (UTC). Read-only.",
			InputSchema: toolkit.Schema(nil, nil),
		}, func(context.Context, *mcp.CallToolRequest, struct{}) (*mcp.CallToolResult, any, error) {
			return toolkit.Text(time.Now().UTC().Format(time.RFC3339)), nil, nil
		})
	})
}

Документация

Разработка

make test    # go test -race ./...
make lint    # golangci-lint + gofmt
make tidy    # go mod tidy

Лицензия

Apache-2.0 — см. LICENSE.

S
Description
No description provided
Readme Apache-2.0
87 KiB
Languages
Go 95.6%
Makefile 4.4%