27 Star 249 Fork 69

开源中国/mcp-gitee

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
update_issue.go 2.49 KB
一键复制 编辑 原始数据 按行查看 历史
JJ-H 提交于 2025-06-16 16:10 +08:00 . feat: Support streamable http
package issues
import (
"context"
"fmt"
"gitee.com/oschina/mcp-gitee/operations/types"
"gitee.com/oschina/mcp-gitee/utils"
"github.com/mark3labs/mcp-go/mcp"
)
const (
UpdateIssueToolName = "update_issue"
)
// UpdateIssueConfig structure for updating issues
type UpdateIssueConfig struct {
UrlTemplate string
PathParams []string
}
// Configuration mapping for issue updates
var updateIssueConfigs = map[string]UpdateIssueConfig{
UpdateIssueToolName: {
UrlTemplate: "/repos/%s/issues/%s",
PathParams: []string{"owner", "number"},
},
}
var UpdateIssueTool = func() mcp.Tool {
options := utils.CombineOptions(
[]mcp.ToolOption{
mcp.WithDescription("Update an issue"),
mcp.WithString(
"number",
mcp.Description("The number of the issue"),
mcp.Required(),
),
mcp.WithString(
"state",
mcp.Description("The state of the issue"),
mcp.Enum("open", "progressing", "closed"),
),
},
BasicOptions,
BasicIssueOptions,
)
return mcp.NewTool(UpdateIssueToolName, options...)
}()
// UpdateIssueHandleFunc handles requests to update repository issues
func UpdateIssueHandleFunc(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
return UpdateIssueHandleFuncCommon(UpdateIssueToolName)(ctx, request)
}
// UpdateIssueHandleFuncCommon is a common handler function for processing issue update requests
func UpdateIssueHandleFuncCommon(updateType string) func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
config, ok := updateIssueConfigs[updateType]
if !ok {
errMsg := fmt.Sprintf("Unsupported issue update type: %s", updateType)
return mcp.NewToolResultError(errMsg), fmt.Errorf(errMsg)
}
apiUrl := config.UrlTemplate
if len(config.PathParams) > 0 {
args, _ := utils.ConvertArgumentsToMap(request.Params.Arguments)
apiUrlArgs := make([]interface{}, 0, len(config.PathParams))
for _, param := range config.PathParams {
value, ok := args[param].(string)
if !ok {
errMsg := fmt.Sprintf("Missing required path parameter: %s", param)
return mcp.NewToolResultError(errMsg), fmt.Errorf(errMsg)
}
apiUrlArgs = append(apiUrlArgs, value)
}
apiUrl = fmt.Sprintf(apiUrl, apiUrlArgs...)
}
giteeClient := utils.NewGiteeClient("PATCH", apiUrl, utils.WithContext(ctx), utils.WithPayload(request.Params.Arguments))
issue := &types.BasicIssue{}
return giteeClient.HandleMCPResult(issue)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/oschina/mcp-gitee.git
git@gitee.com:oschina/mcp-gitee.git
oschina
mcp-gitee
mcp-gitee
master

搜索帮助