mirror of
				https://gitea.com/gitea/gitea-mcp.git
				synced 2025-10-30 01:41:50 +00:00 
			
		
		
		
	Add get_user_orgs tool (#34)
				
					
				
			Fix #33 Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/34 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: techknowlogick <techknowlogick@gitea.com> Co-committed-by: techknowlogick <techknowlogick@gitea.com>
This commit is contained in:
		| @@ -148,6 +148,7 @@ The Gitea MCP Server supports the following tools: | |||||||
| |             Tool             |    Scope     |                      Description                      | | |             Tool             |    Scope     |                      Description                      | | ||||||
| | :--------------------------: | :----------: | :---------------------------------------------------: | | | :--------------------------: | :----------: | :---------------------------------------------------: | | ||||||
| |       get_my_user_info       |     User     |     Get the information of the authenticated user     | | |       get_my_user_info       |     User     |     Get the information of the authenticated user     | | ||||||
|  | |       get_user_orgs       |     User     |     Get organizations associated with the authenticated user     | | ||||||
| |         create_repo          |  Repository  |                Create a new repository                | | |         create_repo          |  Repository  |                Create a new repository                | | ||||||
| |          fork_repo           |  Repository  |                   Fork a repository                   | | |          fork_repo           |  Repository  |                   Fork a repository                   | | ||||||
| |        list_my_repos         |  Repository  | List all repositories owned by the authenticated user | | |        list_my_repos         |  Repository  | List all repositories owned by the authenticated user | | ||||||
|   | |||||||
| @@ -8,12 +8,14 @@ import ( | |||||||
| 	"gitea.com/gitea/gitea-mcp/pkg/log" | 	"gitea.com/gitea/gitea-mcp/pkg/log" | ||||||
| 	"gitea.com/gitea/gitea-mcp/pkg/to" | 	"gitea.com/gitea/gitea-mcp/pkg/to" | ||||||
|  |  | ||||||
|  | 	gitea_sdk "code.gitea.io/sdk/gitea" | ||||||
| 	"github.com/mark3labs/mcp-go/mcp" | 	"github.com/mark3labs/mcp-go/mcp" | ||||||
| 	"github.com/mark3labs/mcp-go/server" | 	"github.com/mark3labs/mcp-go/server" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| 	GetMyUserInfoToolName = "get_my_user_info" | 	GetMyUserInfoToolName = "get_my_user_info" | ||||||
|  | 	GetUserOrgsToolName   = "get_user_orgs" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var ( | var ( | ||||||
| @@ -21,10 +23,18 @@ var ( | |||||||
| 		GetMyUserInfoToolName, | 		GetMyUserInfoToolName, | ||||||
| 		mcp.WithDescription("Get my user info"), | 		mcp.WithDescription("Get my user info"), | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
|  | 	GetUserOrgsTool = mcp.NewTool( | ||||||
|  | 		GetUserOrgsToolName, | ||||||
|  | 		mcp.WithDescription("Get organizations associated with the authenticated user"), | ||||||
|  | 		mcp.WithNumber("page", mcp.Description("page number"), mcp.DefaultNumber(1)), | ||||||
|  | 		mcp.WithNumber("pageSize", mcp.Description("page size"), mcp.DefaultNumber(100)), | ||||||
|  | 	) | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func RegisterTool(s *server.MCPServer) { | func RegisterTool(s *server.MCPServer) { | ||||||
| 	s.AddTool(GetMyUserInfoTool, GetUserInfoFn) | 	s.AddTool(GetMyUserInfoTool, GetUserInfoFn) | ||||||
|  | 	s.AddTool(GetUserOrgsTool, GetUserOrgsFn) | ||||||
| } | } | ||||||
|  |  | ||||||
| func GetUserInfoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | func GetUserInfoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||||
| @@ -36,3 +46,27 @@ func GetUserInfoFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR | |||||||
|  |  | ||||||
| 	return to.TextResult(user) | 	return to.TextResult(user) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func GetUserOrgsFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { | ||||||
|  | 	log.Debugf("Called GetUserOrgsFn") | ||||||
|  | 	page, ok := req.Params.Arguments["page"].(float64) | ||||||
|  | 	if !ok || page < 1 { | ||||||
|  | 		page = 1 | ||||||
|  | 	} | ||||||
|  | 	pageSize, ok := req.Params.Arguments["pageSize"].(float64) | ||||||
|  | 	if !ok || pageSize < 1 { | ||||||
|  | 		pageSize = 100 | ||||||
|  | 	} | ||||||
|  | 	opt := gitea_sdk.ListOrgsOptions{ | ||||||
|  | 		ListOptions: gitea_sdk.ListOptions{ | ||||||
|  | 			Page:     int(page), | ||||||
|  | 			PageSize: int(pageSize), | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 	orgs, _, err := gitea.Client().ListMyOrgs(opt) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return to.ErrorResult(fmt.Errorf("get user orgs err: %v", err)) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return to.TextResult(orgs) | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user