mirror of
https://gitea.com/gitea/gitea-mcp.git
synced 2025-08-23 14:23:05 +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