|
|
@@ -6,25 +6,24 @@ import (
|
|
|
"github.com/mark3labs/mcp-go/mcp"
|
|
|
|
|
|
"fwh-toolbox-server/cmd/mcp/tools/helper"
|
|
|
- "fwh-toolbox-server/repositories"
|
|
|
)
|
|
|
|
|
|
// === Workspace Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListWorkspaces(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListWorkspaces()
|
|
|
+ data, err := planeV2.ListWorkspaces()
|
|
|
return planeRawResult(data, err, "列出工作空间")
|
|
|
}
|
|
|
|
|
|
func handlePlaneV2GetWorkspace(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.GetWorkspace()
|
|
|
+ data, err := planeV2.GetWorkspace(planeV2Workspace)
|
|
|
return planeRawResult(data, err, "获取工作空间详情")
|
|
|
}
|
|
|
|
|
|
// === Project Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListProjects(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListProjects()
|
|
|
+ data, err := planeV2.ListProjects(planeV2Workspace)
|
|
|
return planeRawResult(data, err, "列出项目")
|
|
|
}
|
|
|
|
|
|
@@ -33,14 +32,14 @@ func handlePlaneV2GetProject(ctx context.Context, req mcp.CallToolRequest) (*mcp
|
|
|
if err != nil {
|
|
|
return helper.ParamError("project_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetProject(id)
|
|
|
+ data, apiErr := planeV2.GetProject(planeV2Workspace, id)
|
|
|
return planeRawResult(data, apiErr, "获取项目详情")
|
|
|
}
|
|
|
|
|
|
// === Issue Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListIssues()
|
|
|
+ data, err := planeV2.ListIssues(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出工作项")
|
|
|
}
|
|
|
|
|
|
@@ -49,7 +48,7 @@ func handlePlaneV2GetIssue(ctx context.Context, req mcp.CallToolRequest) (*mcp.C
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetIssue(id)
|
|
|
+ data, apiErr := planeV2.GetIssue(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取工作项详情")
|
|
|
}
|
|
|
|
|
|
@@ -58,7 +57,7 @@ func handlePlaneV2GetSubIssues(ctx context.Context, req mcp.CallToolRequest) (*m
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetSubIssues(id)
|
|
|
+ data, apiErr := planeV2.GetSubIssues(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取子工作项")
|
|
|
}
|
|
|
|
|
|
@@ -67,14 +66,14 @@ func handlePlaneV2GetIssueActivity(ctx context.Context, req mcp.CallToolRequest)
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetIssueActivity(id)
|
|
|
+ data, apiErr := planeV2.GetIssueActivity(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取工作项活动历史")
|
|
|
}
|
|
|
|
|
|
// === Cycle Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListCycles(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListCycles()
|
|
|
+ data, err := planeV2.ListCycles(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出周期")
|
|
|
}
|
|
|
|
|
|
@@ -83,7 +82,7 @@ func handlePlaneV2GetCycle(ctx context.Context, req mcp.CallToolRequest) (*mcp.C
|
|
|
if err != nil {
|
|
|
return helper.ParamError("cycle_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetCycle(id)
|
|
|
+ data, apiErr := planeV2.GetCycle(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取周期详情")
|
|
|
}
|
|
|
|
|
|
@@ -92,14 +91,14 @@ func handlePlaneV2ListCycleIssues(ctx context.Context, req mcp.CallToolRequest)
|
|
|
if err != nil {
|
|
|
return helper.ParamError("cycle_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.ListCycleIssues(id)
|
|
|
+ data, apiErr := planeV2.ListCycleIssues(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "列出周期工作项")
|
|
|
}
|
|
|
|
|
|
// === Module Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListModules(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListModules()
|
|
|
+ data, err := planeV2.ListModules(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出模块")
|
|
|
}
|
|
|
|
|
|
@@ -108,7 +107,7 @@ func handlePlaneV2GetModule(ctx context.Context, req mcp.CallToolRequest) (*mcp.
|
|
|
if err != nil {
|
|
|
return helper.ParamError("module_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetModule(id)
|
|
|
+ data, apiErr := planeV2.GetModule(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取模块详情")
|
|
|
}
|
|
|
|
|
|
@@ -117,14 +116,14 @@ func handlePlaneV2ListModuleIssues(ctx context.Context, req mcp.CallToolRequest)
|
|
|
if err != nil {
|
|
|
return helper.ParamError("module_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.ListModuleIssues(id)
|
|
|
+ data, apiErr := planeV2.ListModuleIssues(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "列出模块工作项")
|
|
|
}
|
|
|
|
|
|
// === Label Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListLabels(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListLabels()
|
|
|
+ data, err := planeV2.ListLabels(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出标签")
|
|
|
}
|
|
|
|
|
|
@@ -133,14 +132,14 @@ func handlePlaneV2GetLabel(ctx context.Context, req mcp.CallToolRequest) (*mcp.C
|
|
|
if err != nil {
|
|
|
return helper.ParamError("label_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetLabel(id)
|
|
|
+ data, apiErr := planeV2.GetLabel(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取标签详情")
|
|
|
}
|
|
|
|
|
|
// === State Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListStates(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListStates()
|
|
|
+ data, err := planeV2.ListStates(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出状态")
|
|
|
}
|
|
|
|
|
|
@@ -149,7 +148,7 @@ func handlePlaneV2GetState(ctx context.Context, req mcp.CallToolRequest) (*mcp.C
|
|
|
if err != nil {
|
|
|
return helper.ParamError("state_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetState(id)
|
|
|
+ data, apiErr := planeV2.GetState(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取状态详情")
|
|
|
}
|
|
|
|
|
|
@@ -160,7 +159,7 @@ func handlePlaneV2ListComments(ctx context.Context, req mcp.CallToolRequest) (*m
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.ListComments(id)
|
|
|
+ data, apiErr := planeV2.ListComments(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "列出评论")
|
|
|
}
|
|
|
|
|
|
@@ -173,7 +172,7 @@ func handlePlaneV2GetComment(ctx context.Context, req mcp.CallToolRequest) (*mcp
|
|
|
if err != nil {
|
|
|
return helper.ParamError("comment_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetComment(issueID, commentID)
|
|
|
+ data, apiErr := planeV2.GetComment(planeV2Workspace, planeV2Project, issueID, commentID)
|
|
|
return planeRawResult(data, apiErr, "获取评论详情")
|
|
|
}
|
|
|
|
|
|
@@ -184,7 +183,7 @@ func handlePlaneV2ListIssueLinks(ctx context.Context, req mcp.CallToolRequest) (
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.ListIssueLinks(id)
|
|
|
+ data, apiErr := planeV2.ListIssueLinks(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "列出工作项链接")
|
|
|
}
|
|
|
|
|
|
@@ -195,14 +194,14 @@ func handlePlaneV2ListIssueRelations(ctx context.Context, req mcp.CallToolReques
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.ListIssueRelations(id)
|
|
|
+ data, apiErr := planeV2.ListIssueRelations(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "列出工作项关联")
|
|
|
}
|
|
|
|
|
|
// === Sticky Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListStickies(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListStickies()
|
|
|
+ data, err := planeV2.ListStickies(planeV2Workspace)
|
|
|
return planeRawResult(data, err, "列出便签")
|
|
|
}
|
|
|
|
|
|
@@ -211,7 +210,7 @@ func handlePlaneV2GetSticky(ctx context.Context, req mcp.CallToolRequest) (*mcp.
|
|
|
if err != nil {
|
|
|
return helper.ParamError("sticky_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetSticky(id)
|
|
|
+ data, apiErr := planeV2.GetSticky(planeV2Workspace, id)
|
|
|
return planeRawResult(data, apiErr, "获取便签详情")
|
|
|
}
|
|
|
|
|
|
@@ -219,7 +218,7 @@ func handlePlaneV2GetSticky(ctx context.Context, req mcp.CallToolRequest) (*mcp.
|
|
|
|
|
|
func handlePlaneV2ListIntakeIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
status := req.GetString("status", "")
|
|
|
- data, err := repositories.Plane.ListIntakeIssues(status)
|
|
|
+ data, err := planeV2.ListIntakeIssues(planeV2Workspace, planeV2Project, status)
|
|
|
return planeRawResult(data, err, "列出收件箱工作项")
|
|
|
}
|
|
|
|
|
|
@@ -228,7 +227,7 @@ func handlePlaneV2GetIntakeIssue(ctx context.Context, req mcp.CallToolRequest) (
|
|
|
if err != nil {
|
|
|
return helper.ParamError("issue_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetIntakeIssue(id)
|
|
|
+ data, apiErr := planeV2.GetIntakeIssue(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取收件箱工作项详情")
|
|
|
}
|
|
|
|
|
|
@@ -239,7 +238,7 @@ func handlePlaneV2GetProjectAssetURL(ctx context.Context, req mcp.CallToolReques
|
|
|
if err != nil {
|
|
|
return helper.ParamError("asset_id"), nil
|
|
|
}
|
|
|
- url, apiErr := repositories.Plane.GetProjectAssetURL(id)
|
|
|
+ url, apiErr := planeV2.GetProjectAssetURL(planeV2Workspace, planeV2Project, id)
|
|
|
if apiErr != nil {
|
|
|
return helper.ServiceError("获取资源URL", apiErr), nil
|
|
|
}
|
|
|
@@ -249,7 +248,7 @@ func handlePlaneV2GetProjectAssetURL(ctx context.Context, req mcp.CallToolReques
|
|
|
// === Page Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListPages(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListPages()
|
|
|
+ data, err := planeV2.ListPages(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出页面")
|
|
|
}
|
|
|
|
|
|
@@ -258,7 +257,7 @@ func handlePlaneV2GetPage(ctx context.Context, req mcp.CallToolRequest) (*mcp.Ca
|
|
|
if err != nil {
|
|
|
return helper.ParamError("page_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetPage(id)
|
|
|
+ data, apiErr := planeV2.GetPage(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取页面详情")
|
|
|
}
|
|
|
|
|
|
@@ -267,14 +266,14 @@ func handlePlaneV2GetPageDescription(ctx context.Context, req mcp.CallToolReques
|
|
|
if err != nil {
|
|
|
return helper.ParamError("page_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetPageDescription(id)
|
|
|
+ data, apiErr := planeV2.GetPageDescription(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取页面描述")
|
|
|
}
|
|
|
|
|
|
// === Member Handlers ===
|
|
|
|
|
|
func handlePlaneV2ListWorkspaceMembers(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListWorkspaceMembers()
|
|
|
+ data, err := planeV2.ListWorkspaceMembers(planeV2Workspace)
|
|
|
return planeRawResult(data, err, "列出工作空间成员")
|
|
|
}
|
|
|
|
|
|
@@ -283,12 +282,12 @@ func handlePlaneV2GetWorkspaceMember(ctx context.Context, req mcp.CallToolReques
|
|
|
if err != nil {
|
|
|
return helper.ParamError("member_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetWorkspaceMember(id)
|
|
|
+ data, apiErr := planeV2.GetWorkspaceMember(planeV2Workspace, id)
|
|
|
return planeRawResult(data, apiErr, "获取工作空间成员详情")
|
|
|
}
|
|
|
|
|
|
func handlePlaneV2ListProjectMembers(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
|
|
|
- data, err := repositories.Plane.ListProjectMembers()
|
|
|
+ data, err := planeV2.ListProjectMembers(planeV2Workspace, planeV2Project)
|
|
|
return planeRawResult(data, err, "列出项目成员")
|
|
|
}
|
|
|
|
|
|
@@ -297,6 +296,6 @@ func handlePlaneV2GetProjectMember(ctx context.Context, req mcp.CallToolRequest)
|
|
|
if err != nil {
|
|
|
return helper.ParamError("member_id"), nil
|
|
|
}
|
|
|
- data, apiErr := repositories.Plane.GetProjectMember(id)
|
|
|
+ data, apiErr := planeV2.GetProjectMember(planeV2Workspace, planeV2Project, id)
|
|
|
return planeRawResult(data, apiErr, "获取项目成员详情")
|
|
|
}
|