mirror of
				https://gitea.com/gitea/gitea-mcp.git
				synced 2025-11-03 20:01: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                      |
 | 
			
		||||
| :--------------------------: | :----------: | :---------------------------------------------------: |
 | 
			
		||||
|       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                |
 | 
			
		||||
|          fork_repo           |  Repository  |                   Fork a repository                   |
 | 
			
		||||
|        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/to"
 | 
			
		||||
 | 
			
		||||
	gitea_sdk "code.gitea.io/sdk/gitea"
 | 
			
		||||
	"github.com/mark3labs/mcp-go/mcp"
 | 
			
		||||
	"github.com/mark3labs/mcp-go/server"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	GetMyUserInfoToolName = "get_my_user_info"
 | 
			
		||||
	GetUserOrgsToolName   = "get_user_orgs"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
@@ -21,10 +23,18 @@ var (
 | 
			
		||||
		GetMyUserInfoToolName,
 | 
			
		||||
		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) {
 | 
			
		||||
	s.AddTool(GetMyUserInfoTool, GetUserInfoFn)
 | 
			
		||||
	s.AddTool(GetUserOrgsTool, GetUserOrgsFn)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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