chore: initial release v0.1.0
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:
@@ -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{})
|
||||
}
|
||||
Reference in New Issue
Block a user