| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- package data
- import (
- "context"
- "github.com/mark3labs/mcp-go/mcp"
- "fwh-toolbox-server/cmd/mcp/tools/helper"
- )
- // === Workspace Handlers ===
- func handlePlaneV2ListWorkspaces(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- data, err := planeV2.ListWorkspaces()
- return planeRawResult(data, err, "列出工作空间")
- }
- func handlePlaneV2GetWorkspace(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- data, err := planeV2.GetWorkspace(planeV2Workspace)
- return planeRawResult(data, err, "获取工作空间详情")
- }
- // === Project Handlers ===
- func handlePlaneV2ListProjects(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- data, err := planeV2.ListProjects(planeV2Workspace)
- return planeRawResult(data, err, "列出项目")
- }
- func handlePlaneV2GetProject(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("project_id")
- if err != nil {
- return helper.ParamError("project_id"), nil
- }
- 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 := planeV2.ListIssues(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出工作项")
- }
- func handlePlaneV2GetIssue(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- data, apiErr := planeV2.GetIssue(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取工作项详情")
- }
- func handlePlaneV2GetSubIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- data, apiErr := planeV2.GetSubIssues(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取子工作项")
- }
- func handlePlaneV2GetIssueActivity(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- 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 := planeV2.ListCycles(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出周期")
- }
- func handlePlaneV2GetCycle(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("cycle_id")
- if err != nil {
- return helper.ParamError("cycle_id"), nil
- }
- data, apiErr := planeV2.GetCycle(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取周期详情")
- }
- func handlePlaneV2ListCycleIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("cycle_id")
- if err != nil {
- return helper.ParamError("cycle_id"), nil
- }
- 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 := planeV2.ListModules(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出模块")
- }
- func handlePlaneV2GetModule(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("module_id")
- if err != nil {
- return helper.ParamError("module_id"), nil
- }
- data, apiErr := planeV2.GetModule(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取模块详情")
- }
- func handlePlaneV2ListModuleIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("module_id")
- if err != nil {
- return helper.ParamError("module_id"), nil
- }
- 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 := planeV2.ListLabels(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出标签")
- }
- func handlePlaneV2GetLabel(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("label_id")
- if err != nil {
- return helper.ParamError("label_id"), nil
- }
- 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 := planeV2.ListStates(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出状态")
- }
- func handlePlaneV2GetState(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("state_id")
- if err != nil {
- return helper.ParamError("state_id"), nil
- }
- data, apiErr := planeV2.GetState(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取状态详情")
- }
- // === Comment Handlers ===
- func handlePlaneV2ListComments(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- data, apiErr := planeV2.ListComments(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "列出评论")
- }
- func handlePlaneV2GetComment(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- issueID, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- commentID, err := req.RequireString("comment_id")
- if err != nil {
- return helper.ParamError("comment_id"), nil
- }
- data, apiErr := planeV2.GetComment(planeV2Workspace, planeV2Project, issueID, commentID)
- return planeRawResult(data, apiErr, "获取评论详情")
- }
- // === Link Handlers ===
- func handlePlaneV2ListIssueLinks(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- data, apiErr := planeV2.ListIssueLinks(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "列出工作项链接")
- }
- // === Relation Handlers ===
- func handlePlaneV2ListIssueRelations(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- 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 := planeV2.ListStickies(planeV2Workspace)
- return planeRawResult(data, err, "列出便签")
- }
- func handlePlaneV2GetSticky(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("sticky_id")
- if err != nil {
- return helper.ParamError("sticky_id"), nil
- }
- data, apiErr := planeV2.GetSticky(planeV2Workspace, id)
- return planeRawResult(data, apiErr, "获取便签详情")
- }
- // === Intake Handlers ===
- func handlePlaneV2ListIntakeIssues(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- status := req.GetString("status", "")
- data, err := planeV2.ListIntakeIssues(planeV2Workspace, planeV2Project, status)
- return planeRawResult(data, err, "列出收件箱工作项")
- }
- func handlePlaneV2GetIntakeIssue(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("issue_id")
- if err != nil {
- return helper.ParamError("issue_id"), nil
- }
- data, apiErr := planeV2.GetIntakeIssue(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取收件箱工作项详情")
- }
- // === Asset Handlers ===
- func handlePlaneV2GetProjectAssetURL(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("asset_id")
- if err != nil {
- return helper.ParamError("asset_id"), nil
- }
- url, apiErr := planeV2.GetProjectAssetURL(planeV2Workspace, planeV2Project, id)
- if apiErr != nil {
- return helper.ServiceError("获取资源URL", apiErr), nil
- }
- return helper.TextResult(url), nil
- }
- // === Page Handlers ===
- func handlePlaneV2ListPages(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- data, err := planeV2.ListPages(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出页面")
- }
- func handlePlaneV2GetPage(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("page_id")
- if err != nil {
- return helper.ParamError("page_id"), nil
- }
- data, apiErr := planeV2.GetPage(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取页面详情")
- }
- func handlePlaneV2GetPageDescription(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("page_id")
- if err != nil {
- return helper.ParamError("page_id"), nil
- }
- 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 := planeV2.ListWorkspaceMembers(planeV2Workspace)
- return planeRawResult(data, err, "列出工作空间成员")
- }
- func handlePlaneV2GetWorkspaceMember(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("member_id")
- if err != nil {
- return helper.ParamError("member_id"), nil
- }
- data, apiErr := planeV2.GetWorkspaceMember(planeV2Workspace, id)
- return planeRawResult(data, apiErr, "获取工作空间成员详情")
- }
- func handlePlaneV2ListProjectMembers(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- data, err := planeV2.ListProjectMembers(planeV2Workspace, planeV2Project)
- return planeRawResult(data, err, "列出项目成员")
- }
- func handlePlaneV2GetProjectMember(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- id, err := req.RequireString("member_id")
- if err != nil {
- return helper.ParamError("member_id"), nil
- }
- data, apiErr := planeV2.GetProjectMember(planeV2Workspace, planeV2Project, id)
- return planeRawResult(data, apiErr, "获取项目成员详情")
- }
|