Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mcp-server-systemd for openSUSE:Factory checked in at 2026-05-04 17:30:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mcp-server-systemd (Old) and /work/SRC/openSUSE:Factory/.mcp-server-systemd.new.30200 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mcp-server-systemd" Mon May 4 17:30:23 2026 rev:2 rq:1350685 version:0.3.4 Changes: -------- --- /work/SRC/openSUSE:Factory/mcp-server-systemd/mcp-server-systemd.changes 2026-05-04 12:51:23.216217475 +0200 +++ /work/SRC/openSUSE:Factory/.mcp-server-systemd.new.30200/mcp-server-systemd.changes 2026-05-04 17:30:24.777418885 +0200 @@ -1,0 +2,6 @@ +Mon May 4 12:40:30 UTC 2026 - Christian Goll <[email protected]> + +- update to v0.3.4 which only added the man tool is man is + available + +------------------------------------------------------------------- Old: ---- mcp-server-systemd-0.3.3.tar.gz New: ---- mcp-server-systemd-0.3.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mcp-server-systemd.spec ++++++ --- /var/tmp/diff_new_pack.Tt2xSz/_old 2026-05-04 17:30:25.765459338 +0200 +++ /var/tmp/diff_new_pack.Tt2xSz/_new 2026-05-04 17:30:25.769459503 +0200 @@ -17,7 +17,7 @@ %define gitname systemd-mcp -%define vers 0.3.3 +%define vers 0.3.4 #%%define verssuf -preview3 #%%define verssuf_plain %%(echo %%{verssuf} | sed 's/^-//') Name: mcp-server-systemd @@ -33,7 +33,8 @@ BuildRequires: libcap-progs BuildRequires: polkit BuildRequires: systemd-devel -Requires: man +# the server now itself checks if man is available +Recommends: man Recommends: %{name}-gatekeeper %description @@ -51,6 +52,7 @@ logs. The service itself listens to a socket to which is sends the file descriptors to the system log if authorized via polkit. +# integrated tests checking also the man tool call, so man is needed here %package test Summary: Test files for %{name} BuildArch: noarch ++++++ mcp-server-systemd-0.3.3.tar.gz -> mcp-server-systemd-0.3.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/systemd-mcp-0.3.3/.github/workflows/release.yml new/systemd-mcp-0.3.4/.github/workflows/release.yml --- old/systemd-mcp-0.3.3/.github/workflows/release.yml 2026-04-30 16:44:30.000000000 +0200 +++ new/systemd-mcp-0.3.4/.github/workflows/release.yml 2026-05-04 12:04:49.000000000 +0200 @@ -31,7 +31,7 @@ env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - file: ./systemd-mcp + file: bin/systemd-mcp overwrite: true update_latest_release: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/systemd-mcp-0.3.3/Makefile new/systemd-mcp-0.3.4/Makefile --- old/systemd-mcp-0.3.3/Makefile 2026-04-30 16:44:30.000000000 +0200 +++ new/systemd-mcp-0.3.4/Makefile 2026-05-04 12:04:49.000000000 +0200 @@ -12,7 +12,7 @@ POLKITDIR ?= $(DATADIR)/polkit-1/actions GO = go -GOFLAGS = +GOFLAGS = -buildmode=pie .PHONY: all build test-client vendor test format lint clean dist install version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/systemd-mcp-0.3.3/VERSION new/systemd-mcp-0.3.4/VERSION --- old/systemd-mcp-0.3.3/VERSION 2026-04-30 16:44:30.000000000 +0200 +++ new/systemd-mcp-0.3.4/VERSION 2026-05-04 12:04:49.000000000 +0200 @@ -1 +1 @@ -0.3.3 +0.3.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/systemd-mcp-0.3.3/internal/pkg/man/man.go new/systemd-mcp-0.3.4/internal/pkg/man/man.go --- old/systemd-mcp-0.3.3/internal/pkg/man/man.go 2026-04-30 16:44:30.000000000 +0200 +++ new/systemd-mcp-0.3.4/internal/pkg/man/man.go 2026-05-04 12:04:49.000000000 +0200 @@ -161,6 +161,13 @@ var validManName = regexp.MustCompile(`^[a-zA-Z0-9-]+$`) var validManSection = regexp.MustCompile(ValidManSectionPattern) +// IsManAvailable checks if the man binary is available in PATH. +// Returns true if man is found, false otherwise. +func IsManAvailable() bool { + _, err := exec.LookPath("man") + return err == nil +} + func GetManPage(ctx context.Context, req *mcp.CallToolRequest, params *GetManPageParams) (*mcp.CallToolResult, any, error) { if params.Name == "" { return nil, nil, fmt.Errorf("man page name is required") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/systemd-mcp-0.3.3/systemd-mcp.go new/systemd-mcp-0.3.4/systemd-mcp.go --- old/systemd-mcp-0.3.3/systemd-mcp.go 2026-04-30 16:44:30.000000000 +0200 +++ new/systemd-mcp-0.3.4/systemd-mcp.go 2026-05-04 12:04:49.000000000 +0200 @@ -227,25 +227,29 @@ }, }) } - tools = append(tools, struct { - Tool *mcp.Tool - Register func(server *mcp.Server, tool *mcp.Tool) - }{ - Tool: &mcp.Tool{ - Title: "Display man page", - Name: "get_man_page", - Description: "Retrieve a man page. Supports filtering by section and chapters, and pagination.", - InputSchema: man.CreateManPageSchema(), - }, - Register: func(server *mcp.Server, tool *mcp.Tool) { - mcp.AddTool(server, tool, func(ctx context.Context, req *mcp.CallToolRequest, args *man.GetManPageParams) (*mcp.CallToolResult, any, error) { - slog.Debug("get_man_page called", "args", args) - res, out, err := man.GetManPage(ctx, req, args) - return res, out, err - }) + if man.IsManAvailable() { + tools = append(tools, struct { + Tool *mcp.Tool + Register func(server *mcp.Server, tool *mcp.Tool) + }{ + Tool: &mcp.Tool{ + Title: "Display man page", + Name: "get_man_page", + Description: "Retrieve a man page. Supports filtering by section and chapters, and pagination.", + InputSchema: man.CreateManPageSchema(), + }, + Register: func(server *mcp.Server, tool *mcp.Tool) { + mcp.AddTool(server, tool, func(ctx context.Context, req *mcp.CallToolRequest, args *man.GetManPageParams) (*mcp.CallToolResult, any, error) { + slog.Debug("get_man_page called", "args", args) + res, out, err := man.GetManPage(ctx, req, args) + return res, out, err + }) + }, }, - }, - ) + ) + } else { + slog.Debug("man binary not found in PATH, skipping get_man_page tool") + } var allTools []string for _, tool := range tools {
