mcp-framework/docs/bootstrap-cli.md

1.9 KiB

Bootstrap CLI

Le package bootstrap reste optionnel : une application peut l'utiliser pour uniformiser le parsing CLI et l'aide, sans imposer de runtime monolithique.

Exemple minimal :

func main() {
	err := bootstrap.Run(context.Background(), bootstrap.Options{
		BinaryName:        "my-mcp",
		Description:       "Client MCP",
		Version:           version,
		EnableDoctorAlias: true, // expose `doctor` comme alias de `config test`
		AliasDescriptions: map[string]string{
			"doctor": "Diagnostiquer la configuration locale.",
		},
		Hooks: bootstrap.Hooks{
			Setup: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runSetup(ctx, inv.Args)
			},
			Login: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runLogin(ctx, inv.Args)
			},
			MCP: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runMCP(ctx, inv.Args)
			},
			ConfigShow: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runConfigShow(ctx, inv.Args)
			},
			ConfigTest: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runConfigTest(ctx, inv.Args)
			},
			Update: func(ctx context.Context, inv bootstrap.Invocation) error {
				return runUpdate(ctx, inv.Args)
			},
		},
	})
	if err != nil {
		log.Fatal(err)
	}
}

Si Hooks.Version n'est pas fourni, la sous-commande version affiche automatiquement Options.Version.

Sans arguments, bootstrap.Run affiche l'aide globale (pas de lancement implicite de mcp). La commande login est optionnelle et peut être branchée pour gérer un unlock Bitwarden interactif. La commande config impose une sous-commande (show, test, et optionnellement delete). Les alias déclarés (ou EnableDoctorAlias) sont affichés dans l'aide globale. Le flag global --debug est supporté et active le debug des appels Bitwarden (MCP_FRAMEWORK_BITWARDEN_DEBUG=1).