| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- package data
- import (
- "github.com/mark3labs/mcp-go/mcp"
- "github.com/mark3labs/mcp-go/server"
- plane_v2 "fwh-toolbox-server/repositories/api/plane_v2"
- )
- // planeV2 通用 PlaneService 实例
- var planeV2Svc *plane_v2.PlaneService
- func registerPlaneV2ApiTools(s *server.MCPServer) {
- planeV2Svc = plane_v2.NewPlaneService()
- // ============ Workspace (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_workspaces",
- mcp.WithDescription("列出当前用户有权访问的所有工作空间"),
- ),
- handlePlaneV2ListWorkspaces,
- )
- s.AddTool(
- mcp.NewTool("plane_get_workspace",
- mcp.WithDescription("获取工作空间详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- ),
- handlePlaneV2GetWorkspace,
- )
- // ============ Project (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_projects",
- mcp.WithDescription("列出工作空间下的所有项目"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- ),
- handlePlaneV2ListProjects,
- )
- s.AddTool(
- mcp.NewTool("plane_get_project",
- mcp.WithDescription("获取项目详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2GetProject,
- )
- // ============ Issue (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_issues",
- mcp.WithDescription("列出项目工作项列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListIssues,
- )
- s.AddTool(
- mcp.NewTool("plane_get_issue",
- mcp.WithDescription("获取工作项详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("issue_id", mcp.Required(), mcp.Description("工作项 UUID")),
- ),
- handlePlaneV2GetIssue,
- )
- s.AddTool(
- mcp.NewTool("plane_get_sub_issues",
- mcp.WithDescription("获取子工作项列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("issue_id", mcp.Required(), mcp.Description("父工作项 UUID")),
- ),
- handlePlaneV2GetSubIssues,
- )
- s.AddTool(
- mcp.NewTool("plane_get_issue_activity",
- mcp.WithDescription("获取工作项活动历史"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("issue_id", mcp.Required(), mcp.Description("工作项 UUID")),
- ),
- handlePlaneV2GetIssueActivity,
- )
- // ============ Intake (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_intake_issues",
- mcp.WithDescription("列出收件箱工作项"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("status", mcp.Description("状态过滤,如 -2,-1,0,1,2")),
- ),
- handlePlaneV2ListIntakeIssues,
- )
- s.AddTool(
- mcp.NewTool("plane_get_intake_issue",
- mcp.WithDescription("获取收件箱工作项详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("issue_id", mcp.Required(), mcp.Description("工作项 UUID")),
- ),
- handlePlaneV2GetIntakeIssue,
- )
- // ============ Cycle (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_cycles",
- mcp.WithDescription("列出项目周期列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListCycles,
- )
- s.AddTool(
- mcp.NewTool("plane_get_cycle",
- mcp.WithDescription("获取周期详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("cycle_id", mcp.Required(), mcp.Description("周期 UUID")),
- ),
- handlePlaneV2GetCycle,
- )
- // ============ Module (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_modules",
- mcp.WithDescription("列出项目模块列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListModules,
- )
- s.AddTool(
- mcp.NewTool("plane_get_module",
- mcp.WithDescription("获取模块详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("module_id", mcp.Required(), mcp.Description("模块 UUID")),
- ),
- handlePlaneV2GetModule,
- )
- // ============ Label (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_labels",
- mcp.WithDescription("列出项目标签列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListLabels,
- )
- // ============ State (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_states",
- mcp.WithDescription("列出项目状态列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListStates,
- )
- // ============ Page (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_pages",
- mcp.WithDescription("列出项目页面列表"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListPages,
- )
- s.AddTool(
- mcp.NewTool("plane_get_page",
- mcp.WithDescription("获取页面详情"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("page_id", mcp.Required(), mcp.Description("页面 UUID")),
- ),
- handlePlaneV2GetPage,
- )
- s.AddTool(
- mcp.NewTool("plane_get_page_description",
- mcp.WithDescription("获取页面描述内容"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- mcp.WithString("page_id", mcp.Required(), mcp.Description("页面 UUID")),
- ),
- handlePlaneV2GetPageDescription,
- )
- // ============ Member (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_workspace_members",
- mcp.WithDescription("列出工作空间成员"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- ),
- handlePlaneV2ListWorkspaceMembers,
- )
- s.AddTool(
- mcp.NewTool("plane_list_project_members",
- mcp.WithDescription("列出项目成员"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- mcp.WithString("project_id", mcp.Required(), mcp.Description("项目 UUID")),
- ),
- handlePlaneV2ListProjectMembers,
- )
- // ============ Sticky (读) ============
- s.AddTool(
- mcp.NewTool("plane_list_stickies",
- mcp.WithDescription("列出工作空间便签"),
- mcp.WithString("workspace_slug", mcp.Required(), mcp.Description("工作空间 slug")),
- ),
- handlePlaneV2ListStickies,
- )
- }
|