From 82b02fa9f1f2ca0c64047347f25cca9878a86e8b Mon Sep 17 00:00:00 2001 From: hiifong Date: Sun, 16 Mar 2025 15:22:57 +0800 Subject: [PATCH] feat: add server version --- Makefile | 4 +++- operation/operation.go | 10 ++++++++-- operation/repo/repo.go | 4 ++-- operation/user/user.go | 2 +- operation/version/version.go | 28 ++++++++++++++++++++++++++++ 5 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 operation/version/version.go diff --git a/Makefile b/Makefile index 43628d0..b3ac875 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,11 @@ GO ?= go EXECUTABLE := gitea-mcp +VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//') +LDFLAGS := -X "main.Version=$(VERSION)" .PHONY: build build: - $(GO) build -v -ldflags '-s -w' -o $(EXECUTABLE) + $(GO) build -v -ldflags '-s -w $(LDFLAGS)' -o $(EXECUTABLE) ## air: install air for hot reload .PHONY: air diff --git a/operation/operation.go b/operation/operation.go index fe5fbc3..23deb29 100644 --- a/operation/operation.go +++ b/operation/operation.go @@ -5,6 +5,8 @@ import ( "gitea.com/gitea/gitea-mcp/operation/repo" "gitea.com/gitea/gitea-mcp/operation/user" + "gitea.com/gitea/gitea-mcp/operation/version" + "gitea.com/gitea/gitea-mcp/pkg/flag" "gitea.com/gitea/gitea-mcp/pkg/log" "github.com/mark3labs/mcp-go/server" ) @@ -15,13 +17,17 @@ var ( func RegisterTool(s *server.MCPServer) { // User Tool - s.AddTool(user.GetMyUserInfoTool, user.MyUserInfoFn) + s.AddTool(user.GetMyUserInfoTool, user.GetUserInfoFn) // Repo Tool - s.AddTool(repo.GetMyReposTool, repo.MyUserReposFn) + s.AddTool(repo.ListMyReposTool, repo.ListMyReposFn) + + // Version Tool + s.AddTool(version.GetGiteaMCPServerVersionTool, version.GetGiteaMCPServerVersionFn) } func Run(transport, version string) error { + flag.Version = version mcpServer = newMCPServer(version) RegisterTool(mcpServer) switch transport { diff --git a/operation/repo/repo.go b/operation/repo/repo.go index 0659f77..c26d8fb 100644 --- a/operation/repo/repo.go +++ b/operation/repo/repo.go @@ -14,13 +14,13 @@ const ( ) var ( - GetMyReposTool = mcp.NewTool( + ListMyReposTool = mcp.NewTool( ListMyReposToolName, mcp.WithDescription("List My Repositories"), ) ) -func MyUserReposFn(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { +func ListMyReposFn(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { opts := gitea.ListReposOptions{ ListOptions: gitea.ListOptions{ Page: 1, diff --git a/operation/user/user.go b/operation/user/user.go index fdeed80..f40acfb 100644 --- a/operation/user/user.go +++ b/operation/user/user.go @@ -20,7 +20,7 @@ var ( ) ) -func MyUserInfoFn(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { +func GetUserInfoFn(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { user, _, err := gitea.Client().GetMyUserInfo() if err != nil { return mcp.NewToolResultError("Get My User Info Error"), err diff --git a/operation/version/version.go b/operation/version/version.go new file mode 100644 index 0000000..263949b --- /dev/null +++ b/operation/version/version.go @@ -0,0 +1,28 @@ +package version + +import ( + "context" + "fmt" + + "gitea.com/gitea/gitea-mcp/pkg/flag" + "github.com/mark3labs/mcp-go/mcp" +) + +const ( + GetGiteaMCPServerVersion = "get_gitea_mcp_server_version" +) + +var ( + GetGiteaMCPServerVersionTool = mcp.NewTool( + GetGiteaMCPServerVersion, + mcp.WithDescription("Get Gitea MCP Server Version"), + ) +) + +func GetGiteaMCPServerVersionFn(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { + version := flag.Version + if version == "" { + version = "dev" + } + return mcp.NewToolResultText(fmt.Sprintf("Gitea MCP Server version: %v", version)), nil +}