@jhl8041/dooray-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.serena/project.yml +84 -0
  3. package/CLAUDE.md +119 -0
  4. package/README.md +82 -0
  5. package/dist/api/client.d.ts +70 -0
  6. package/dist/api/client.d.ts.map +1 -0
  7. package/dist/api/client.js +186 -0
  8. package/dist/api/client.js.map +1 -0
  9. package/dist/api/common.d.ts +14 -0
  10. package/dist/api/common.d.ts.map +1 -0
  11. package/dist/api/common.js +25 -0
  12. package/dist/api/common.js.map +1 -0
  13. package/dist/api/projects.d.ts +83 -0
  14. package/dist/api/projects.d.ts.map +1 -0
  15. package/dist/api/projects.js +300 -0
  16. package/dist/api/projects.js.map +1 -0
  17. package/dist/api/wiki.d.ts +38 -0
  18. package/dist/api/wiki.d.ts.map +1 -0
  19. package/dist/api/wiki.js +95 -0
  20. package/dist/api/wiki.js.map +1 -0
  21. package/dist/index.d.ts +7 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +227 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/tools/common/get-my-member-info.d.ts +29 -0
  26. package/dist/tools/common/get-my-member-info.d.ts.map +1 -0
  27. package/dist/tools/common/get-my-member-info.js +95 -0
  28. package/dist/tools/common/get-my-member-info.js.map +1 -0
  29. package/dist/tools/projects/create-task-comment.d.ts +92 -0
  30. package/dist/tools/projects/create-task-comment.d.ts.map +1 -0
  31. package/dist/tools/projects/create-task-comment.js +171 -0
  32. package/dist/tools/projects/create-task-comment.js.map +1 -0
  33. package/dist/tools/projects/create-task.d.ts +191 -0
  34. package/dist/tools/projects/create-task.d.ts.map +1 -0
  35. package/dist/tools/projects/create-task.js +217 -0
  36. package/dist/tools/projects/create-task.js.map +1 -0
  37. package/dist/tools/projects/get-milestone-list.d.ts +49 -0
  38. package/dist/tools/projects/get-milestone-list.d.ts.map +1 -0
  39. package/dist/tools/projects/get-milestone-list.js +112 -0
  40. package/dist/tools/projects/get-milestone-list.js.map +1 -0
  41. package/dist/tools/projects/get-project-list.d.ts +50 -0
  42. package/dist/tools/projects/get-project-list.d.ts.map +1 -0
  43. package/dist/tools/projects/get-project-list.js +113 -0
  44. package/dist/tools/projects/get-project-list.js.map +1 -0
  45. package/dist/tools/projects/get-project-member-group-list.d.ts +55 -0
  46. package/dist/tools/projects/get-project-member-group-list.d.ts.map +1 -0
  47. package/dist/tools/projects/get-project-member-group-list.js +127 -0
  48. package/dist/tools/projects/get-project-member-group-list.js.map +1 -0
  49. package/dist/tools/projects/get-project-member-list.d.ts +66 -0
  50. package/dist/tools/projects/get-project-member-list.d.ts.map +1 -0
  51. package/dist/tools/projects/get-project-member-list.js +159 -0
  52. package/dist/tools/projects/get-project-member-list.js.map +1 -0
  53. package/dist/tools/projects/get-project-template-list.d.ts +55 -0
  54. package/dist/tools/projects/get-project-template-list.d.ts.map +1 -0
  55. package/dist/tools/projects/get-project-template-list.js +127 -0
  56. package/dist/tools/projects/get-project-template-list.js.map +1 -0
  57. package/dist/tools/projects/get-project-template.d.ts +48 -0
  58. package/dist/tools/projects/get-project-template.d.ts.map +1 -0
  59. package/dist/tools/projects/get-project-template.js +132 -0
  60. package/dist/tools/projects/get-project-template.js.map +1 -0
  61. package/dist/tools/projects/get-project-workflow-list.d.ts +41 -0
  62. package/dist/tools/projects/get-project-workflow-list.d.ts.map +1 -0
  63. package/dist/tools/projects/get-project-workflow-list.js +107 -0
  64. package/dist/tools/projects/get-project-workflow-list.js.map +1 -0
  65. package/dist/tools/projects/get-project.d.ts +41 -0
  66. package/dist/tools/projects/get-project.d.ts.map +1 -0
  67. package/dist/tools/projects/get-project.js +110 -0
  68. package/dist/tools/projects/get-project.js.map +1 -0
  69. package/dist/tools/projects/get-tag-list.d.ts +55 -0
  70. package/dist/tools/projects/get-tag-list.d.ts.map +1 -0
  71. package/dist/tools/projects/get-tag-list.js +145 -0
  72. package/dist/tools/projects/get-tag-list.js.map +1 -0
  73. package/dist/tools/projects/get-task-comment-list.d.ts +63 -0
  74. package/dist/tools/projects/get-task-comment-list.d.ts.map +1 -0
  75. package/dist/tools/projects/get-task-comment-list.js +136 -0
  76. package/dist/tools/projects/get-task-comment-list.js.map +1 -0
  77. package/dist/tools/projects/get-task-list.d.ts +184 -0
  78. package/dist/tools/projects/get-task-list.d.ts.map +1 -0
  79. package/dist/tools/projects/get-task-list.js +257 -0
  80. package/dist/tools/projects/get-task-list.js.map +1 -0
  81. package/dist/tools/projects/get-task.d.ts +48 -0
  82. package/dist/tools/projects/get-task.d.ts.map +1 -0
  83. package/dist/tools/projects/get-task.js +130 -0
  84. package/dist/tools/projects/get-task.js.map +1 -0
  85. package/dist/tools/projects/update-task-comment.d.ts +92 -0
  86. package/dist/tools/projects/update-task-comment.d.ts.map +1 -0
  87. package/dist/tools/projects/update-task-comment.js +176 -0
  88. package/dist/tools/projects/update-task-comment.js.map +1 -0
  89. package/dist/tools/projects/update-task.d.ts +196 -0
  90. package/dist/tools/projects/update-task.d.ts.map +1 -0
  91. package/dist/tools/projects/update-task.js +227 -0
  92. package/dist/tools/projects/update-task.js.map +1 -0
  93. package/dist/tools/wiki/create-wiki-page.d.ts +89 -0
  94. package/dist/tools/wiki/create-wiki-page.d.ts.map +1 -0
  95. package/dist/tools/wiki/create-wiki-page.js +142 -0
  96. package/dist/tools/wiki/create-wiki-page.js.map +1 -0
  97. package/dist/tools/wiki/get-wiki-list.d.ts +58 -0
  98. package/dist/tools/wiki/get-wiki-list.d.ts.map +1 -0
  99. package/dist/tools/wiki/get-wiki-list.js +118 -0
  100. package/dist/tools/wiki/get-wiki-list.js.map +1 -0
  101. package/dist/tools/wiki/get-wiki-page-list.d.ts +65 -0
  102. package/dist/tools/wiki/get-wiki-page-list.d.ts.map +1 -0
  103. package/dist/tools/wiki/get-wiki-page-list.js +125 -0
  104. package/dist/tools/wiki/get-wiki-page-list.js.map +1 -0
  105. package/dist/tools/wiki/get-wiki-page.d.ts +48 -0
  106. package/dist/tools/wiki/get-wiki-page.d.ts.map +1 -0
  107. package/dist/tools/wiki/get-wiki-page.js +100 -0
  108. package/dist/tools/wiki/get-wiki-page.js.map +1 -0
  109. package/dist/tools/wiki/update-wiki-page.d.ts +89 -0
  110. package/dist/tools/wiki/update-wiki-page.d.ts.map +1 -0
  111. package/dist/tools/wiki/update-wiki-page.js +140 -0
  112. package/dist/tools/wiki/update-wiki-page.js.map +1 -0
  113. package/dist/types/config.d.ts +18 -0
  114. package/dist/types/config.d.ts.map +1 -0
  115. package/dist/types/config.js +6 -0
  116. package/dist/types/config.js.map +1 -0
  117. package/dist/types/dooray-api.d.ts +387 -0
  118. package/dist/types/dooray-api.d.ts.map +1 -0
  119. package/dist/types/dooray-api.js +7 -0
  120. package/dist/types/dooray-api.js.map +1 -0
  121. package/dist/utils/errors.d.ts +28 -0
  122. package/dist/utils/errors.d.ts.map +1 -0
  123. package/dist/utils/errors.js +60 -0
  124. package/dist/utils/errors.js.map +1 -0
  125. package/dist/utils/logger.d.ts +22 -0
  126. package/dist/utils/logger.d.ts.map +1 -0
  127. package/dist/utils/logger.js +50 -0
  128. package/dist/utils/logger.js.map +1 -0
  129. package/dist/utils/member-transform.d.ts +20 -0
  130. package/dist/utils/member-transform.d.ts.map +1 -0
  131. package/dist/utils/member-transform.js +48 -0
  132. package/dist/utils/member-transform.js.map +1 -0
  133. package/dist/utils/response-filters.d.ts +121 -0
  134. package/dist/utils/response-filters.d.ts.map +1 -0
  135. package/dist/utils/response-filters.js +166 -0
  136. package/dist/utils/response-filters.js.map +1 -0
  137. package/dooray-mcp.iml +8 -0
  138. package/package.json +54 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * Get Project List Tool
4
+ * Get list of projects accessible by the user
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.getProjectListTool = exports.getProjectListSchema = void 0;
41
+ exports.getProjectListHandler = getProjectListHandler;
42
+ const zod_1 = require("zod");
43
+ const projectsApi = __importStar(require("../../api/projects.js"));
44
+ const errors_js_1 = require("../../utils/errors.js");
45
+ const response_filters_js_1 = require("../../utils/response-filters.js");
46
+ exports.getProjectListSchema = zod_1.z.object({
47
+ page: zod_1.z.number().min(0).optional().describe('Page number for pagination (default: 0)'),
48
+ size: zod_1.z.number().min(1).max(100).optional().describe('Number of items per page (default: 20, max: 100)'),
49
+ });
50
+ async function getProjectListHandler(args) {
51
+ try {
52
+ const result = await projectsApi.getProjects({
53
+ page: args.page,
54
+ size: args.size,
55
+ });
56
+ // Filter to compact response to reduce token usage
57
+ const compactResult = (0, response_filters_js_1.filterPaginatedResponse)(result, response_filters_js_1.filterProjectForList);
58
+ return {
59
+ content: [
60
+ {
61
+ type: 'text',
62
+ text: JSON.stringify(compactResult, null, 2),
63
+ },
64
+ ],
65
+ };
66
+ }
67
+ catch (error) {
68
+ return {
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: `Error: ${(0, errors_js_1.formatError)(error)}`,
73
+ },
74
+ ],
75
+ isError: true,
76
+ };
77
+ }
78
+ }
79
+ exports.getProjectListTool = {
80
+ name: 'get-project-list',
81
+ description: `Get list of active projects that you belong to.
82
+
83
+ This tool retrieves only active projects where you are a member. Archived projects are excluded.
84
+
85
+ **Note**: Returns compact response with essential fields only. For complete project details, use get-project.
86
+
87
+ **IMPORTANT**: When the user provides a specific Dooray URL (e.g., "https://nhnent.dooray.com/task/PROJECT_ID"), do NOT use this tool. Instead, extract the PROJECT_ID from the URL and call get-project directly to get information about that specific project.
88
+
89
+ This tool is for browsing your active projects when no specific project URL or ID is provided.
90
+
91
+ Examples:
92
+ - Get all your active projects: {} (empty parameters)
93
+ - Get second page with 50 items: {"page": 1, "size": 50}
94
+
95
+ Returns a paginated list with project id and name (project code) for each project.`,
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ page: {
100
+ type: 'number',
101
+ description: 'Page number for pagination (default: 0)',
102
+ minimum: 0,
103
+ },
104
+ size: {
105
+ type: 'number',
106
+ description: 'Number of items per page (default: 20, max: 100)',
107
+ minimum: 1,
108
+ maximum: 100,
109
+ },
110
+ },
111
+ },
112
+ };
113
+ //# sourceMappingURL=get-project-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-list.js","sourceRoot":"","sources":["../../../src/tools/projects/get-project-list.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,sDA6BC;AAzCD,6BAAwB;AACxB,mEAAqD;AACrD,qDAAoD;AACpD,yEAAgG;AAEnF,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACtF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CACzG,CAAC,CAAC;AAII,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,aAAa,GAAG,IAAA,6CAAuB,EAAC,MAAM,EAAE,0CAAoB,CAAC,CAAC;QAE5E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,IAAA,uBAAW,EAAC,KAAK,CAAC,EAAE;iBACrC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAEY,QAAA,kBAAkB,GAAG;IAChC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE;;;;;;;;;;;;;;mFAcoE;IACjF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,CAAC;aACX;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;gBAC/D,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,GAAG;aACb;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Get Project Member Group List Tool
3
+ * Get list of project member groups
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const getProjectMemberGroupListSchema: z.ZodObject<{
7
+ projectId: z.ZodString;
8
+ page: z.ZodOptional<z.ZodNumber>;
9
+ size: z.ZodOptional<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ projectId: string;
12
+ page?: number | undefined;
13
+ size?: number | undefined;
14
+ }, {
15
+ projectId: string;
16
+ page?: number | undefined;
17
+ size?: number | undefined;
18
+ }>;
19
+ export type GetProjectMemberGroupListInput = z.infer<typeof getProjectMemberGroupListSchema>;
20
+ export declare function getProjectMemberGroupListHandler(args: GetProjectMemberGroupListInput): Promise<{
21
+ content: {
22
+ type: string;
23
+ text: string;
24
+ }[];
25
+ isError?: undefined;
26
+ } | {
27
+ content: {
28
+ type: string;
29
+ text: string;
30
+ }[];
31
+ isError: boolean;
32
+ }>;
33
+ export declare const getProjectMemberGroupListTool: {
34
+ name: string;
35
+ description: string;
36
+ inputSchema: {
37
+ type: string;
38
+ properties: {
39
+ projectId: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ page: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ size: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ };
52
+ required: string[];
53
+ };
54
+ };
55
+ //# sourceMappingURL=get-project-member-group-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-member-group-list.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/get-project-member-group-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,+BAA+B;;;;;;;;;;;;EAI1C,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAE7F,wBAAsB,gCAAgC,CAAC,IAAI,EAAE,8BAA8B;;;;;;;;;;;;GAiC1F;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;CA0CzC,CAAC"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * Get Project Member Group List Tool
4
+ * Get list of project member groups
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.getProjectMemberGroupListTool = exports.getProjectMemberGroupListSchema = void 0;
41
+ exports.getProjectMemberGroupListHandler = getProjectMemberGroupListHandler;
42
+ const zod_1 = require("zod");
43
+ const projectsApi = __importStar(require("../../api/projects.js"));
44
+ const errors_js_1 = require("../../utils/errors.js");
45
+ const response_filters_js_1 = require("../../utils/response-filters.js");
46
+ exports.getProjectMemberGroupListSchema = zod_1.z.object({
47
+ projectId: zod_1.z.string().describe('Project ID to get member groups from'),
48
+ page: zod_1.z.number().optional().describe('Page number (default: 0)'),
49
+ size: zod_1.z.number().optional().describe('Items per page (default: 20, max: 100)'),
50
+ });
51
+ async function getProjectMemberGroupListHandler(args) {
52
+ try {
53
+ const result = await projectsApi.getProjectMemberGroups({
54
+ projectId: args.projectId,
55
+ page: args.page,
56
+ size: args.size,
57
+ });
58
+ // Filter to compact response to reduce token usage
59
+ const compactResult = {
60
+ totalCount: result.totalCount,
61
+ data: result.data.map(response_filters_js_1.filterMemberGroupForList),
62
+ };
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: JSON.stringify(compactResult, null, 2),
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ content: [
75
+ {
76
+ type: 'text',
77
+ text: `Error: ${(0, errors_js_1.formatError)(error)}`,
78
+ },
79
+ ],
80
+ isError: true,
81
+ };
82
+ }
83
+ }
84
+ exports.getProjectMemberGroupListTool = {
85
+ name: 'get-project-member-group-list',
86
+ description: `Get list of member groups in a project.
87
+
88
+ Member groups are collections of members that can be assigned to tasks as a group. This tool retrieves all member groups configured in a project.
89
+
90
+ **URL Pattern Recognition**:
91
+ When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.
92
+
93
+ **Pagination**:
94
+ - Default page size is 20 (maximum: 100)
95
+ - Use page parameter to get additional pages if totalCount > size
96
+
97
+ **Note**: Returns compact response with essential fields only (id and code).
98
+
99
+ Examples:
100
+ - Get all member groups: {"projectId": "123456"}
101
+ - Get with pagination: {"projectId": "123456", "page": 0, "size": 50}
102
+
103
+ Returns a paginated response with totalCount and array of member groups containing:
104
+ - **id**: Member group ID
105
+ - **code**: Member group name/code
106
+
107
+ Use this tool to find member groups for assigning tasks to groups of members.`,
108
+ inputSchema: {
109
+ type: 'object',
110
+ properties: {
111
+ projectId: {
112
+ type: 'string',
113
+ description: 'Project ID to get member groups from',
114
+ },
115
+ page: {
116
+ type: 'number',
117
+ description: 'Page number for pagination (default: 0)',
118
+ },
119
+ size: {
120
+ type: 'number',
121
+ description: 'Number of items per page (default: 20, max: 100)',
122
+ },
123
+ },
124
+ required: ['projectId'],
125
+ },
126
+ };
127
+ //# sourceMappingURL=get-project-member-group-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-member-group-list.js","sourceRoot":"","sources":["../../../src/tools/projects/get-project-member-group-list.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeH,4EAiCC;AA9CD,6BAAwB;AACxB,mEAAqD;AACrD,qDAAoD;AACpD,yEAA2E;AAE9D,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACtE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAChE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC/E,CAAC,CAAC;AAII,KAAK,UAAU,gCAAgC,CAAC,IAAoC;IACzF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,sBAAsB,CAAC;YACtD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,aAAa,GAAG;YACpB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,8CAAwB,CAAC;SAChD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,IAAA,uBAAW,EAAC,KAAK,CAAC,EAAE;iBACrC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAEY,QAAA,6BAA6B,GAAG;IAC3C,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;8EAqB+D;IAC5E,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;aAChE;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Get Project Member List Tool
3
+ * Get list of project members with detailed information
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const getProjectMemberListSchema: z.ZodObject<{
7
+ projectId: z.ZodString;
8
+ roles: z.ZodOptional<z.ZodArray<z.ZodEnum<["admin", "member"]>, "many">>;
9
+ page: z.ZodOptional<z.ZodNumber>;
10
+ size: z.ZodOptional<z.ZodNumber>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ projectId: string;
13
+ page?: number | undefined;
14
+ size?: number | undefined;
15
+ roles?: ("member" | "admin")[] | undefined;
16
+ }, {
17
+ projectId: string;
18
+ page?: number | undefined;
19
+ size?: number | undefined;
20
+ roles?: ("member" | "admin")[] | undefined;
21
+ }>;
22
+ export type GetProjectMemberListInput = z.infer<typeof getProjectMemberListSchema>;
23
+ export declare function getProjectMemberListHandler(args: GetProjectMemberListInput): Promise<{
24
+ content: {
25
+ type: string;
26
+ text: string;
27
+ }[];
28
+ isError?: undefined;
29
+ } | {
30
+ content: {
31
+ type: string;
32
+ text: string;
33
+ }[];
34
+ isError: boolean;
35
+ }>;
36
+ export declare const getProjectMemberListTool: {
37
+ name: string;
38
+ description: string;
39
+ inputSchema: {
40
+ type: string;
41
+ properties: {
42
+ projectId: {
43
+ type: string;
44
+ description: string;
45
+ };
46
+ roles: {
47
+ type: string;
48
+ items: {
49
+ type: string;
50
+ enum: string[];
51
+ };
52
+ description: string;
53
+ };
54
+ page: {
55
+ type: string;
56
+ description: string;
57
+ };
58
+ size: {
59
+ type: string;
60
+ description: string;
61
+ };
62
+ };
63
+ required: string[];
64
+ };
65
+ };
66
+ //# sourceMappingURL=get-project-member-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-member-list.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/get-project-member-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAKrC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,yBAAyB;;;;;;;;;;;;GAmDhF;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDpC,CAAC"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * Get Project Member List Tool
4
+ * Get list of project members with detailed information
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.getProjectMemberListTool = exports.getProjectMemberListSchema = void 0;
41
+ exports.getProjectMemberListHandler = getProjectMemberListHandler;
42
+ const zod_1 = require("zod");
43
+ const projectsApi = __importStar(require("../../api/projects.js"));
44
+ const commonApi = __importStar(require("../../api/common.js"));
45
+ const errors_js_1 = require("../../utils/errors.js");
46
+ exports.getProjectMemberListSchema = zod_1.z.object({
47
+ projectId: zod_1.z.string().describe('Project ID to get members from'),
48
+ roles: zod_1.z.array(zod_1.z.enum(['admin', 'member'])).optional().describe('Filter by roles (admin, member)'),
49
+ page: zod_1.z.number().optional().describe('Page number (default: 0)'),
50
+ size: zod_1.z.number().optional().describe('Items per page (default: 20, max: 100)'),
51
+ });
52
+ async function getProjectMemberListHandler(args) {
53
+ try {
54
+ // Step 1: Fetch project members (only IDs and roles)
55
+ const projectMembers = await projectsApi.getProjectMembers(args);
56
+ // Step 2: Fetch detailed info for each member in parallel
57
+ const memberDetailsPromises = projectMembers.data.map(async (pm) => {
58
+ try {
59
+ const details = await commonApi.getMemberDetails(pm.organizationMemberId);
60
+ return {
61
+ id: details.id,
62
+ name: details.name,
63
+ externalEmailAddress: details.externalEmailAddress,
64
+ };
65
+ }
66
+ catch (error) {
67
+ // If member details fail, return partial info
68
+ return {
69
+ id: pm.organizationMemberId,
70
+ name: 'Unknown',
71
+ externalEmailAddress: 'Unknown',
72
+ };
73
+ }
74
+ });
75
+ const enrichedMembers = await Promise.all(memberDetailsPromises);
76
+ // Step 3: Return compact response with only requested fields
77
+ const compactResult = {
78
+ totalCount: projectMembers.totalCount,
79
+ data: enrichedMembers,
80
+ };
81
+ return {
82
+ content: [
83
+ {
84
+ type: 'text',
85
+ text: JSON.stringify(compactResult, null, 2),
86
+ },
87
+ ],
88
+ };
89
+ }
90
+ catch (error) {
91
+ return {
92
+ content: [
93
+ {
94
+ type: 'text',
95
+ text: `Error: ${(0, errors_js_1.formatError)(error)}`,
96
+ },
97
+ ],
98
+ isError: true,
99
+ };
100
+ }
101
+ }
102
+ exports.getProjectMemberListTool = {
103
+ name: 'get-project-member-list',
104
+ description: `Get list of members in a project with their details.
105
+
106
+ This tool fetches project members and enriches each member with detailed information including name and email address.
107
+
108
+ **URL Pattern Recognition**:
109
+ When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.
110
+
111
+ **Role Filtering**:
112
+ - Optionally filter by roles: ["admin"], ["member"], or ["admin", "member"]
113
+ - If not specified, returns all members regardless of role
114
+
115
+ **Pagination**:
116
+ - Default page size is 20 (maximum: 100)
117
+ - Use page parameter to get additional pages if totalCount > size
118
+
119
+ **Note**: Returns compact response with essential fields only (id, name, externalEmailAddress).
120
+
121
+ Examples:
122
+ - Get all members: {"projectId": "123456"}
123
+ - Get only admins: {"projectId": "123456", "roles": ["admin"]}
124
+ - Get with pagination: {"projectId": "123456", "page": 0, "size": 50}
125
+
126
+ Returns a paginated response with totalCount and array of members containing:
127
+ - **id**: Member ID (organizationMemberId)
128
+ - **name**: Member's display name
129
+ - **externalEmailAddress**: Member's email address
130
+
131
+ Use this tool to find project members for assigning tasks or understanding team composition.`,
132
+ inputSchema: {
133
+ type: 'object',
134
+ properties: {
135
+ projectId: {
136
+ type: 'string',
137
+ description: 'Project ID to get members from',
138
+ },
139
+ roles: {
140
+ type: 'array',
141
+ items: {
142
+ type: 'string',
143
+ enum: ['admin', 'member'],
144
+ },
145
+ description: 'Filter by roles (optional)',
146
+ },
147
+ page: {
148
+ type: 'number',
149
+ description: 'Page number for pagination (default: 0)',
150
+ },
151
+ size: {
152
+ type: 'number',
153
+ description: 'Number of items per page (default: 20, max: 100)',
154
+ },
155
+ },
156
+ required: ['projectId'],
157
+ },
158
+ };
159
+ //# sourceMappingURL=get-project-member-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-member-list.js","sourceRoot":"","sources":["../../../src/tools/projects/get-project-member-list.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBH,kEAmDC;AAjED,6BAAwB;AACxB,mEAAqD;AACrD,+DAAiD;AACjD,qDAAoD;AAEvC,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAChE,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAClG,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAChE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC/E,CAAC,CAAC;AAII,KAAK,UAAU,2BAA2B,CAAC,IAA+B;IAC/E,IAAI,CAAC;QACH,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEjE,0DAA0D;QAC1D,MAAM,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACjE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBAC1E,OAAO;oBACL,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;iBACnD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,OAAO;oBACL,EAAE,EAAE,EAAE,CAAC,oBAAoB;oBAC3B,IAAI,EAAE,SAAS;oBACf,oBAAoB,EAAE,SAAS;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEjE,6DAA6D;QAC7D,MAAM,aAAa,GAAG;YACpB,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,IAAI,EAAE,eAAe;SACtB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,IAAA,uBAAW,EAAC,KAAK,CAAC,EAAE;iBACrC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAEY,QAAA,wBAAwB,GAAG;IACtC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;6FA2B8E;IAC3F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;aAC9C;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;iBAC1B;gBACD,WAAW,EAAE,4BAA4B;aAC1C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;aAChE;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Get Project Template List Tool
3
+ * Get list of project task templates
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const getProjectTemplateListSchema: z.ZodObject<{
7
+ projectId: z.ZodString;
8
+ page: z.ZodOptional<z.ZodNumber>;
9
+ size: z.ZodOptional<z.ZodNumber>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ projectId: string;
12
+ page?: number | undefined;
13
+ size?: number | undefined;
14
+ }, {
15
+ projectId: string;
16
+ page?: number | undefined;
17
+ size?: number | undefined;
18
+ }>;
19
+ export type GetProjectTemplateListInput = z.infer<typeof getProjectTemplateListSchema>;
20
+ export declare function getProjectTemplateListHandler(args: GetProjectTemplateListInput): Promise<{
21
+ content: {
22
+ type: string;
23
+ text: string;
24
+ }[];
25
+ isError?: undefined;
26
+ } | {
27
+ content: {
28
+ type: string;
29
+ text: string;
30
+ }[];
31
+ isError: boolean;
32
+ }>;
33
+ export declare const getProjectTemplateListTool: {
34
+ name: string;
35
+ description: string;
36
+ inputSchema: {
37
+ type: string;
38
+ properties: {
39
+ projectId: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ page: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ size: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ };
52
+ required: string[];
53
+ };
54
+ };
55
+ //# sourceMappingURL=get-project-template-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-template-list.d.ts","sourceRoot":"","sources":["../../../src/tools/projects/get-project-template-list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAIvC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEvF,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,2BAA2B;;;;;;;;;;;;GAiCpF;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;CA0CtC,CAAC"}