chore: initial release v0.1.0
ci / test (push) Failing after 5s
ci / lint (push) Failing after 4s

forge-toolkit: хелперы для разработки MCP-серверов на Go.

- toolkit: args/schema/result/env/probe/server
- toolkit/validate: валидаторы синтаксиса
- configreload: live-reload конфига по контент-хэшу
- docs: ARCHITECTURE, quickstart, mcp-contract
- template/ и examples/hello-tool/
- CI (Gitea Actions), лицензия Apache-2.0
This commit is contained in:
Maksim Totmin
2026-09-14 00:23:08 +07:00
commit c398045664
43 changed files with 2581 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
package toolkit
import (
"context"
"fmt"
"os"
"os/signal"
"syscall"
"github.com/modelcontextprotocol/go-sdk/mcp"
)
// version — версия MCP-сервера в handshake. Модули не версионируются
// отдельно (образ общий), поэтому фиксирована.
const version = "1.0.0"
// Health сообщает, запрошен ли `--health`, и, если да, печатает "ok".
// Вызывается в начале main ДО построения Manager: health должен быть дешёвым
// (без чтения конфига и подключений).
func Health() bool {
if len(os.Args) > 1 && os.Args[1] == "--health" {
fmt.Println("ok")
return true
}
return false
}
// Run поднимает stdio-цикл MCP-сервера: graceful shutdown по SIGINT/SIGTERM,
// NewServer(name), register, StdioTransport. Возвращает ошибку запуска —
// main решает, как её залогировать и выйти.
func Run(name string, register func(*mcp.Server)) error {
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGTERM, syscall.SIGINT)
defer stop()
s := mcp.NewServer(&mcp.Implementation{
Name: name,
Version: version,
}, &mcp.ServerOptions{})
register(s)
return s.Run(ctx, &mcp.StdioTransport{})
}