mirror of
				https://gitea.com/gitea/gitea-mcp.git
				synced 2025-10-30 01:41:50 +00:00 
			
		
		
		
	Add debug mode and upgrade mcp-go to v0.14.1
This commit is contained in:
		
							
								
								
									
										24
									
								
								cmd/cmd.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								cmd/cmd.go
									
									
									
									
									
								
							| @@ -3,6 +3,7 @@ package cmd | ||||
| import ( | ||||
| 	"context" | ||||
| 	"flag" | ||||
| 	"os" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/operation" | ||||
| 	flagPkg "gitea.com/gitea/gitea-mcp/pkg/flag" | ||||
| @@ -42,6 +43,12 @@ func init() { | ||||
| 		"", | ||||
| 		"Your personal access token", | ||||
| 	) | ||||
| 	flag.BoolVar( | ||||
| 		&debug, | ||||
| 		"d", | ||||
| 		false, | ||||
| 		"debug mode", | ||||
| 	) | ||||
| 	flag.BoolVar( | ||||
| 		&debug, | ||||
| 		"debug", | ||||
| @@ -52,7 +59,24 @@ func init() { | ||||
| 	flag.Parse() | ||||
|  | ||||
| 	flagPkg.Host = host | ||||
| 	if flagPkg.Host == "" { | ||||
| 		flagPkg.Host = os.Getenv("GITEA_HOST") | ||||
| 	} | ||||
| 	if flagPkg.Host == "" { | ||||
| 		flagPkg.Host = "https://gitea.com" | ||||
| 	} | ||||
|  | ||||
| 	flagPkg.Token = token | ||||
| 	if flagPkg.Token == "" { | ||||
| 		flagPkg.Token = os.Getenv("GITEA_TOKEN") | ||||
| 	} | ||||
|  | ||||
| 	if debug { | ||||
| 		flagPkg.Debug = debug | ||||
| 	} | ||||
| 	if !debug { | ||||
| 		flagPkg.Debug = os.Getenv("GITEA_DEBUG") == "true" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func Execute(version string) { | ||||
|   | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ go 1.24.0 | ||||
|  | ||||
| require ( | ||||
| 	code.gitea.io/sdk/gitea v0.20.0 | ||||
| 	github.com/mark3labs/mcp-go v0.14.0 | ||||
| 	github.com/mark3labs/mcp-go v0.14.1 | ||||
| 	go.uber.org/zap v1.27.0 | ||||
| ) | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @@ -12,8 +12,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | ||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= | ||||
| github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= | ||||
| github.com/mark3labs/mcp-go v0.14.0 h1:/bASI77oZbDKTQoCIxxPFu+UKn0o6OeA9C3cBrbapxM= | ||||
| github.com/mark3labs/mcp-go v0.14.0/go.mod h1:xBB350hekQsJAK7gJAii8bcEoWemboLm2mRm5/+KBaU= | ||||
| github.com/mark3labs/mcp-go v0.14.1 h1:NsieyFbuWQaeZSWSHPvJ5TwJdQwu+1jmivAIVljeouY= | ||||
| github.com/mark3labs/mcp-go v0.14.1/go.mod h1:xBB350hekQsJAK7gJAii8bcEoWemboLm2mRm5/+KBaU= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/gitea" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/to" | ||||
|  | ||||
| 	gitea_sdk "code.gitea.io/sdk/gitea" | ||||
| @@ -72,6 +73,7 @@ func RegisterTool(s *server.MCPServer) { | ||||
| } | ||||
|  | ||||
| func GetIssueByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called GetIssueByIndexFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	index := req.Params.Arguments["index"].(float64) | ||||
| @@ -84,6 +86,7 @@ func GetIssueByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallT | ||||
| } | ||||
|  | ||||
| func GetPullRequestByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called GetPullRequestByIndexFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	index := req.Params.Arguments["index"].(float64) | ||||
| @@ -96,6 +99,7 @@ func GetPullRequestByIndexFn(ctx context.Context, req mcp.CallToolRequest) (*mcp | ||||
| } | ||||
|  | ||||
| func CreateIssueFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called CreateIssueFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	title := req.Params.Arguments["title"].(string) | ||||
| @@ -112,6 +116,7 @@ func CreateIssueFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR | ||||
| } | ||||
|  | ||||
| func CreateIssueCommentFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called CreateIssueCommentFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	index := req.Params.Arguments["index"].(float64) | ||||
| @@ -127,6 +132,7 @@ func CreateIssueCommentFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.Ca | ||||
| } | ||||
|  | ||||
| func CreatePullRequestFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called CreatePullRequestFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	title := req.Params.Arguments["title"].(string) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/gitea" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"github.com/mark3labs/mcp-go/mcp" | ||||
|  | ||||
| 	gitea_sdk "code.gitea.io/sdk/gitea" | ||||
| @@ -25,6 +26,7 @@ var ( | ||||
| ) | ||||
|  | ||||
| func CreateBranchFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called CreateBranchFn") | ||||
| 	owner := req.Params.Arguments["owner"].(string) | ||||
| 	repo := req.Params.Arguments["repo"].(string) | ||||
| 	branch := req.Params.Arguments["branch"].(string) | ||||
|   | ||||
| @@ -3,8 +3,9 @@ package repo | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"code.gitea.io/sdk/gitea" | ||||
| 	giteaPkg "gitea.com/gitea/gitea-mcp/pkg/gitea" | ||||
| 	gitea_sdk "code.gitea.io/sdk/gitea" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/gitea" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/to" | ||||
|  | ||||
| 	"github.com/mark3labs/mcp-go/mcp" | ||||
| @@ -49,6 +50,7 @@ func RegisterTool(s *server.MCPServer) { | ||||
| } | ||||
|  | ||||
| func CreateRepoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called CreateRepoFn") | ||||
| 	name := req.Params.Arguments["name"].(string) | ||||
| 	description := req.Params.Arguments["description"].(string) | ||||
| 	private := req.Params.Arguments["private"].(bool) | ||||
| @@ -60,7 +62,7 @@ func CreateRepoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRe | ||||
| 	readme := req.Params.Arguments["readme"].(string) | ||||
| 	defaultBranch := req.Params.Arguments["default_branch"].(string) | ||||
|  | ||||
| 	opt := gitea.CreateRepoOption{ | ||||
| 	opt := gitea_sdk.CreateRepoOption{ | ||||
| 		Name:          name, | ||||
| 		Description:   description, | ||||
| 		Private:       private, | ||||
| @@ -72,7 +74,7 @@ func CreateRepoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRe | ||||
| 		Readme:        readme, | ||||
| 		DefaultBranch: defaultBranch, | ||||
| 	} | ||||
| 	repo, _, err := giteaPkg.Client().CreateRepo(opt) | ||||
| 	repo, _, err := gitea.Client().CreateRepo(opt) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -80,6 +82,7 @@ func CreateRepoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolRe | ||||
| } | ||||
|  | ||||
| func ListMyReposFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called ListMyReposFn") | ||||
| 	page, ok := req.Params.Arguments["page"].(float64) | ||||
| 	if !ok { | ||||
| 		return mcp.NewToolResultError("get page number error"), nil | ||||
| @@ -88,13 +91,13 @@ func ListMyReposFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR | ||||
| 	if !ok { | ||||
| 		return mcp.NewToolResultError("get page size number error"), nil | ||||
| 	} | ||||
| 	opts := gitea.ListReposOptions{ | ||||
| 		ListOptions: gitea.ListOptions{ | ||||
| 	opt := gitea_sdk.ListReposOptions{ | ||||
| 		ListOptions: gitea_sdk.ListOptions{ | ||||
| 			Page:     int(page), | ||||
| 			PageSize: int(size), | ||||
| 		}, | ||||
| 	} | ||||
| 	repos, _, err := giteaPkg.Client().ListMyRepos(opts) | ||||
| 	repos, _, err := gitea.Client().ListMyRepos(opt) | ||||
| 	if err != nil { | ||||
| 		return mcp.NewToolResultError("List my repositories error"), err | ||||
| 	} | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/gitea" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/to" | ||||
|  | ||||
| 	"github.com/mark3labs/mcp-go/mcp" | ||||
| @@ -26,6 +27,7 @@ func RegisterTool(s *server.MCPServer) { | ||||
| } | ||||
|  | ||||
| func GetUserInfoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called GetUserInfoFn") | ||||
| 	user, _, err := gitea.Client().GetMyUserInfo() | ||||
| 	if err != nil { | ||||
| 		return mcp.NewToolResultError("Get My User Info Error"), err | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/flag" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/to" | ||||
|  | ||||
| 	"github.com/mark3labs/mcp-go/mcp" | ||||
| @@ -27,6 +28,7 @@ func RegisterTool(s *server.MCPServer) { | ||||
| } | ||||
|  | ||||
| func GetGiteaMCPServerVersionFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||
| 	log.Debugf("Called GetGiteaMCPServerVersionFn") | ||||
| 	version := flag.Version | ||||
| 	if version == "" { | ||||
| 		version = "dev" | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package gitea | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"sync" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/flag" | ||||
| @@ -18,18 +17,7 @@ var ( | ||||
| func Client() *gitea.Client { | ||||
| 	clientOnce.Do(func() { | ||||
| 		if client == nil { | ||||
| 			host, token := flag.Host, flag.Token | ||||
| 			if host == "" { | ||||
| 				host = os.Getenv("GITEA_HOST") | ||||
| 			} | ||||
| 			if host == "" { | ||||
| 				host = "https://gitea.com" | ||||
| 			} | ||||
| 			if token == "" { | ||||
| 				token = os.Getenv("GITEA_TOKEN") | ||||
| 			} | ||||
|  | ||||
| 			c, err := gitea.NewClient(host, gitea.SetToken(token)) | ||||
| 			c, err := gitea.NewClient(flag.Host, gitea.SetToken(flag.Token)) | ||||
| 			if err != nil { | ||||
| 				log.Fatalf("create gitea client err: %v", err) | ||||
| 			} | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import ( | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/flag" | ||||
| 	"go.uber.org/zap" | ||||
| 	"go.uber.org/zap/zapcore" | ||||
| ) | ||||
| @@ -28,7 +29,13 @@ func Default() *zap.Logger { | ||||
| 			ws = zapcore.NewMultiWriteSyncer(wss...) | ||||
|  | ||||
| 			enc := zapcore.NewConsoleEncoder(ec) | ||||
| 			core := zapcore.NewCore(enc, ws, zapcore.DebugLevel) | ||||
| 			var level zapcore.Level | ||||
| 			if flag.Debug { | ||||
| 				level = zapcore.DebugLevel | ||||
| 			} else { | ||||
| 				level = zapcore.InfoLevel | ||||
| 			} | ||||
| 			core := zapcore.NewCore(enc, ws, level) | ||||
| 			options := []zap.Option{ | ||||
| 				zap.AddStacktrace(zapcore.ErrorLevel), | ||||
| 				zap.AddCaller(), | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package to | ||||
| import ( | ||||
| 	"encoding/json" | ||||
|  | ||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||
| 	"github.com/mark3labs/mcp-go/mcp" | ||||
| ) | ||||
|  | ||||
| @@ -11,5 +12,6 @@ func TextResult(v any) (*mcp.CallToolResult, error) { | ||||
| 	if err != nil { | ||||
| 		return mcp.NewToolResultError("marshal result error"), err | ||||
| 	} | ||||
| 	log.Debugf("Text Result: %s", string(result)) | ||||
| 	return mcp.NewToolResultText(string(result)), nil | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user