@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,121 @@
1
+ /**
2
+ * Response Filtering Utilities
3
+ * Functions to filter API responses to return only essential fields
4
+ * This reduces token usage when returning list responses to LLMs
5
+ */
6
+ import { Task, Project, Milestone, Tag, Workflow, ProjectTemplate, ProjectMemberGroup, TaskComment, PaginatedResponse } from '../types/dooray-api.js';
7
+ /**
8
+ * Filter Task object to return only essential fields for list display
9
+ */
10
+ export declare function filterTaskForList(task: Task): {
11
+ id: string;
12
+ number: number;
13
+ subject: string;
14
+ workflowClass: string;
15
+ priority: "highest" | "high" | "normal" | "low" | "lowest" | "none";
16
+ milestone: {
17
+ id: string;
18
+ name: string;
19
+ } | undefined;
20
+ tags: {
21
+ id: string;
22
+ name?: string;
23
+ }[] | undefined;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ };
27
+ /**
28
+ * Filter Project object to return only essential fields for list display
29
+ */
30
+ export declare function filterProjectForList(project: Project): {
31
+ id: string;
32
+ name: string;
33
+ };
34
+ /**
35
+ * Filter Milestone object to return only essential fields for list display
36
+ */
37
+ export declare function filterMilestoneForList(milestone: Milestone): {
38
+ id: string;
39
+ name: string;
40
+ status: "open" | "closed";
41
+ startedAt: string | undefined;
42
+ endedAt: string | undefined;
43
+ createdAt: string;
44
+ };
45
+ /**
46
+ * Filter Tag object to return only essential fields for list display
47
+ */
48
+ export declare function filterTagForList(tag: Tag): {
49
+ id: string;
50
+ name: string;
51
+ tagGroup: {
52
+ id: string;
53
+ name: string;
54
+ mandatory?: boolean;
55
+ selectOne?: boolean;
56
+ } | undefined;
57
+ };
58
+ /**
59
+ * Group tags by their tagGroup for more organized display
60
+ * Returns tagGroups with their associated tags nested inside
61
+ * Tags without a tagGroup are placed in an "Ungrouped" category
62
+ */
63
+ export declare function groupTagsByTagGroup(tags: Tag[]): {
64
+ tagGroups: {
65
+ id: string | null;
66
+ name: string;
67
+ mandatory: boolean;
68
+ selectOne: boolean;
69
+ tags: Array<{
70
+ id: string;
71
+ name: string;
72
+ }>;
73
+ }[];
74
+ };
75
+ /**
76
+ * Filter Workflow object to return only essential fields for list display
77
+ * Returns: id, name, order, class
78
+ * Excludes: names array (localized names), projectId
79
+ */
80
+ export declare function filterWorkflowForList(workflow: Workflow): {
81
+ id: string;
82
+ name: string;
83
+ order: number;
84
+ class: "closed" | "backlog" | "registered" | "working";
85
+ };
86
+ /**
87
+ * Filter ProjectTemplate object to return only essential fields for list display
88
+ */
89
+ export declare function filterTemplateForList(template: ProjectTemplate): {
90
+ id: string;
91
+ templateName: string;
92
+ };
93
+ /**
94
+ * Filter ProjectMemberGroup object to return only essential fields for list display
95
+ */
96
+ export declare function filterMemberGroupForList(group: ProjectMemberGroup): {
97
+ id: string;
98
+ name: string;
99
+ };
100
+ /**
101
+ * Filter TaskComment object to return only essential fields
102
+ * Returns: id, creator, body
103
+ * Excludes: type, subtype, createdAt, modifiedAt, mailUsers, post
104
+ */
105
+ export declare function filterTaskCommentForList(comment: TaskComment): {
106
+ id: string;
107
+ creator: import("../types/dooray-api.js").TaskCommentCreator;
108
+ body: {
109
+ mimeType: string;
110
+ content: string;
111
+ };
112
+ };
113
+ /**
114
+ * Filter paginated response by applying a filter function to each item in data array
115
+ * Preserves pagination metadata (totalCount)
116
+ */
117
+ export declare function filterPaginatedResponse<T, F>(response: PaginatedResponse<T>, filterFn: (item: T) => F): {
118
+ totalCount: number;
119
+ data: F[];
120
+ };
121
+ //# sourceMappingURL=response-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-filters.d.ts","sourceRoot":"","sources":["../../src/utils/response-filters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEtJ;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;;;;;EAY3C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO;;;EAKpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS;;;;;;;EAS1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG;;;;;;;;;EAMxC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE;;YAGvC,MAAM,GAAG,IAAI;cACX,MAAM;mBACD,OAAO;mBACP,OAAO;cACZ,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;;EA6C5C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ;;;;;EAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe;;;EAK9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB;;;EAKjE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW;;;;;;;EAM5D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAC1C,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GACvB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,EAAE,CAAA;CAAE,CAKnC"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * Response Filtering Utilities
4
+ * Functions to filter API responses to return only essential fields
5
+ * This reduces token usage when returning list responses to LLMs
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.filterTaskForList = filterTaskForList;
9
+ exports.filterProjectForList = filterProjectForList;
10
+ exports.filterMilestoneForList = filterMilestoneForList;
11
+ exports.filterTagForList = filterTagForList;
12
+ exports.groupTagsByTagGroup = groupTagsByTagGroup;
13
+ exports.filterWorkflowForList = filterWorkflowForList;
14
+ exports.filterTemplateForList = filterTemplateForList;
15
+ exports.filterMemberGroupForList = filterMemberGroupForList;
16
+ exports.filterTaskCommentForList = filterTaskCommentForList;
17
+ exports.filterPaginatedResponse = filterPaginatedResponse;
18
+ /**
19
+ * Filter Task object to return only essential fields for list display
20
+ */
21
+ function filterTaskForList(task) {
22
+ return {
23
+ id: task.id,
24
+ number: task.number,
25
+ subject: task.subject,
26
+ workflowClass: task.workflowClass,
27
+ priority: task.priority,
28
+ milestone: task.milestone,
29
+ tags: task.tags,
30
+ createdAt: task.createdAt,
31
+ updatedAt: task.updatedAt,
32
+ };
33
+ }
34
+ /**
35
+ * Filter Project object to return only essential fields for list display
36
+ */
37
+ function filterProjectForList(project) {
38
+ return {
39
+ id: project.id,
40
+ name: project.code, // 'code' field is actually the project name
41
+ };
42
+ }
43
+ /**
44
+ * Filter Milestone object to return only essential fields for list display
45
+ */
46
+ function filterMilestoneForList(milestone) {
47
+ return {
48
+ id: milestone.id,
49
+ name: milestone.name,
50
+ status: milestone.status,
51
+ startedAt: milestone.startedAt,
52
+ endedAt: milestone.endedAt,
53
+ createdAt: milestone.createdAt,
54
+ };
55
+ }
56
+ /**
57
+ * Filter Tag object to return only essential fields for list display
58
+ */
59
+ function filterTagForList(tag) {
60
+ return {
61
+ id: tag.id,
62
+ name: tag.name,
63
+ tagGroup: tag.tagGroup,
64
+ };
65
+ }
66
+ /**
67
+ * Group tags by their tagGroup for more organized display
68
+ * Returns tagGroups with their associated tags nested inside
69
+ * Tags without a tagGroup are placed in an "Ungrouped" category
70
+ */
71
+ function groupTagsByTagGroup(tags) {
72
+ // Group tags by tagGroup.id
73
+ const groupMap = new Map();
74
+ for (const tag of tags) {
75
+ if (tag.tagGroup) {
76
+ const groupId = tag.tagGroup.id;
77
+ if (!groupMap.has(groupId)) {
78
+ groupMap.set(groupId, {
79
+ id: groupId,
80
+ name: tag.tagGroup.name,
81
+ mandatory: tag.tagGroup.mandatory || false,
82
+ selectOne: tag.tagGroup.selectOne || false,
83
+ tags: [],
84
+ });
85
+ }
86
+ groupMap.get(groupId).tags.push({
87
+ id: tag.id,
88
+ name: tag.name,
89
+ });
90
+ }
91
+ else {
92
+ // Handle tags without tagGroup
93
+ const ungroupedKey = '__ungrouped__';
94
+ if (!groupMap.has(ungroupedKey)) {
95
+ groupMap.set(ungroupedKey, {
96
+ id: null,
97
+ name: 'Ungrouped',
98
+ mandatory: false,
99
+ selectOne: false,
100
+ tags: [],
101
+ });
102
+ }
103
+ groupMap.get(ungroupedKey).tags.push({
104
+ id: tag.id,
105
+ name: tag.name,
106
+ });
107
+ }
108
+ }
109
+ return {
110
+ tagGroups: Array.from(groupMap.values()),
111
+ };
112
+ }
113
+ /**
114
+ * Filter Workflow object to return only essential fields for list display
115
+ * Returns: id, name, order, class
116
+ * Excludes: names array (localized names), projectId
117
+ */
118
+ function filterWorkflowForList(workflow) {
119
+ return {
120
+ id: workflow.id,
121
+ name: workflow.name,
122
+ order: workflow.order,
123
+ class: workflow.class,
124
+ };
125
+ }
126
+ /**
127
+ * Filter ProjectTemplate object to return only essential fields for list display
128
+ */
129
+ function filterTemplateForList(template) {
130
+ return {
131
+ id: template.id,
132
+ templateName: template.templateName,
133
+ };
134
+ }
135
+ /**
136
+ * Filter ProjectMemberGroup object to return only essential fields for list display
137
+ */
138
+ function filterMemberGroupForList(group) {
139
+ return {
140
+ id: group.id,
141
+ name: group.code,
142
+ };
143
+ }
144
+ /**
145
+ * Filter TaskComment object to return only essential fields
146
+ * Returns: id, creator, body
147
+ * Excludes: type, subtype, createdAt, modifiedAt, mailUsers, post
148
+ */
149
+ function filterTaskCommentForList(comment) {
150
+ return {
151
+ id: comment.id,
152
+ creator: comment.creator,
153
+ body: comment.body,
154
+ };
155
+ }
156
+ /**
157
+ * Filter paginated response by applying a filter function to each item in data array
158
+ * Preserves pagination metadata (totalCount)
159
+ */
160
+ function filterPaginatedResponse(response, filterFn) {
161
+ return {
162
+ totalCount: response.totalCount,
163
+ data: (response.data || []).map(filterFn),
164
+ };
165
+ }
166
+ //# sourceMappingURL=response-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-filters.js","sourceRoot":"","sources":["../../src/utils/response-filters.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAOH,8CAYC;AAKD,oDAKC;AAKD,wDASC;AAKD,4CAMC;AAOD,kDAoDC;AAOD,sDAOC;AAKD,sDAKC;AAKD,4DAKC;AAOD,4DAMC;AAMD,0DAQC;AA1KD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI,EAAG,4CAA4C;KAClE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,SAAoB;IACzD,OAAO;QACL,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,GAAQ;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,IAAW;IAC7C,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAMpB,CAAC;IAEL,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAEhC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;oBACpB,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI;oBACvB,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK;oBAC1C,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK;oBAC1C,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;YACL,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,YAAY,GAAG,eAAe,CAAC;YAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE;oBACzB,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,KAAK;oBAChB,SAAS,EAAE,KAAK;oBAChB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;YACL,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,QAAkB;IACtD,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,QAAyB;IAC7D,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAyB;IAChE,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,wBAAwB,CAAC,OAAoB;IAC3D,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,QAA8B,EAC9B,QAAwB;IAExB,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;KAC1C,CAAC;AACJ,CAAC"}
package/dooray-mcp.iml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="GENERAL_MODULE" version="4">
3
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+ <exclude-output />
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@jhl8041/dooray-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for Dooray",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "dooray-mcp": "dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsx src/index.ts",
13
+ "prepare": "npm run build",
14
+ "watch": "tsc --watch"
15
+ },
16
+ "keywords": [
17
+ "dooray-mcp",
18
+ "dooray mcp",
19
+ "dooray",
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "nhn",
23
+ "nhn cloud",
24
+ "ai",
25
+ "llm"
26
+ ],
27
+ "author": "Jae Hyung Lee",
28
+ "license": "MIT",
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/jhl8041/dooray-mcp.git"
35
+ },
36
+ "bugs": {
37
+ "url": "https://github.com/jhl8041/dooray-mcp/issues"
38
+ },
39
+ "homepage": "https://github.com/jhl8041/dooray-mcp#readme",
40
+ "dependencies": {
41
+ "@modelcontextprotocol/sdk": "^1.0.4",
42
+ "axios": "^1.7.9",
43
+ "dotenv": "^16.4.7",
44
+ "zod": "^3.24.1"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^22.10.2",
48
+ "tsx": "^4.19.2",
49
+ "typescript": "^5.7.2"
50
+ },
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ }
54
+ }