@geonheeye/dooray-mcp 0.1.13
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.
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/api/client.d.ts +85 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +272 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/common.d.ts +14 -0
- package/dist/api/common.d.ts.map +1 -0
- package/dist/api/common.js +25 -0
- package/dist/api/common.js.map +1 -0
- package/dist/api/drive.d.ts +22 -0
- package/dist/api/drive.d.ts.map +1 -0
- package/dist/api/drive.js +86 -0
- package/dist/api/drive.js.map +1 -0
- package/dist/api/messenger.d.ts +56 -0
- package/dist/api/messenger.d.ts.map +1 -0
- package/dist/api/messenger.js +49 -0
- package/dist/api/messenger.js.map +1 -0
- package/dist/api/projects.d.ts +147 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +485 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/wiki.d.ts +38 -0
- package/dist/api/wiki.d.ts.map +1 -0
- package/dist/api/wiki.js +139 -0
- package/dist/api/wiki.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +736 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/common/get-my-member-info.d.ts +29 -0
- package/dist/tools/common/get-my-member-info.d.ts.map +1 -0
- package/dist/tools/common/get-my-member-info.js +95 -0
- package/dist/tools/common/get-my-member-info.js.map +1 -0
- package/dist/tools/drive/copy-drive-file.d.ts +62 -0
- package/dist/tools/drive/copy-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/copy-drive-file.js +91 -0
- package/dist/tools/drive/copy-drive-file.js.map +1 -0
- package/dist/tools/drive/create-drive-folder.d.ts +55 -0
- package/dist/tools/drive/create-drive-folder.d.ts.map +1 -0
- package/dist/tools/drive/create-drive-folder.js +91 -0
- package/dist/tools/drive/create-drive-folder.js.map +1 -0
- package/dist/tools/drive/delete-drive-file.d.ts +48 -0
- package/dist/tools/drive/delete-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/delete-drive-file.js +87 -0
- package/dist/tools/drive/delete-drive-file.js.map +1 -0
- package/dist/tools/drive/download-drive-file.d.ts +55 -0
- package/dist/tools/drive/download-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/download-drive-file.js +160 -0
- package/dist/tools/drive/download-drive-file.js.map +1 -0
- package/dist/tools/drive/get-drive-file-list.d.ts +77 -0
- package/dist/tools/drive/get-drive-file-list.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-file-list.js +89 -0
- package/dist/tools/drive/get-drive-file-list.js.map +1 -0
- package/dist/tools/drive/get-drive-file-meta.d.ts +41 -0
- package/dist/tools/drive/get-drive-file-meta.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-file-meta.js +74 -0
- package/dist/tools/drive/get-drive-file-meta.js.map +1 -0
- package/dist/tools/drive/get-drive-list.d.ts +63 -0
- package/dist/tools/drive/get-drive-list.d.ts.map +1 -0
- package/dist/tools/drive/get-drive-list.js +84 -0
- package/dist/tools/drive/get-drive-list.js.map +1 -0
- package/dist/tools/drive/move-drive-file.d.ts +55 -0
- package/dist/tools/drive/move-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/move-drive-file.js +92 -0
- package/dist/tools/drive/move-drive-file.js.map +1 -0
- package/dist/tools/drive/rename-drive-file.d.ts +55 -0
- package/dist/tools/drive/rename-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/rename-drive-file.js +88 -0
- package/dist/tools/drive/rename-drive-file.js.map +1 -0
- package/dist/tools/drive/update-drive-file.d.ts +55 -0
- package/dist/tools/drive/update-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/update-drive-file.js +119 -0
- package/dist/tools/drive/update-drive-file.js.map +1 -0
- package/dist/tools/drive/upload-drive-file.d.ts +55 -0
- package/dist/tools/drive/upload-drive-file.d.ts.map +1 -0
- package/dist/tools/drive/upload-drive-file.js +118 -0
- package/dist/tools/drive/upload-drive-file.js.map +1 -0
- package/dist/tools/messenger/get-channel-messages.d.ts +55 -0
- package/dist/tools/messenger/get-channel-messages.d.ts.map +1 -0
- package/dist/tools/messenger/get-channel-messages.js +115 -0
- package/dist/tools/messenger/get-channel-messages.js.map +1 -0
- package/dist/tools/messenger/get-channels.d.ts +30 -0
- package/dist/tools/messenger/get-channels.d.ts.map +1 -0
- package/dist/tools/messenger/get-channels.js +87 -0
- package/dist/tools/messenger/get-channels.js.map +1 -0
- package/dist/tools/messenger/send-channel-message.d.ts +48 -0
- package/dist/tools/messenger/send-channel-message.d.ts.map +1 -0
- package/dist/tools/messenger/send-channel-message.js +108 -0
- package/dist/tools/messenger/send-channel-message.js.map +1 -0
- package/dist/tools/messenger/send-direct-message.d.ts +48 -0
- package/dist/tools/messenger/send-direct-message.d.ts.map +1 -0
- package/dist/tools/messenger/send-direct-message.js +112 -0
- package/dist/tools/messenger/send-direct-message.js.map +1 -0
- package/dist/tools/projects/create-project-template.d.ts +305 -0
- package/dist/tools/projects/create-project-template.d.ts.map +1 -0
- package/dist/tools/projects/create-project-template.js +262 -0
- package/dist/tools/projects/create-project-template.js.map +1 -0
- package/dist/tools/projects/create-tag.d.ts +55 -0
- package/dist/tools/projects/create-tag.d.ts.map +1 -0
- package/dist/tools/projects/create-tag.js +134 -0
- package/dist/tools/projects/create-tag.js.map +1 -0
- package/dist/tools/projects/create-task-comment.d.ts +92 -0
- package/dist/tools/projects/create-task-comment.d.ts.map +1 -0
- package/dist/tools/projects/create-task-comment.js +171 -0
- package/dist/tools/projects/create-task-comment.js.map +1 -0
- package/dist/tools/projects/create-task.d.ts +198 -0
- package/dist/tools/projects/create-task.d.ts.map +1 -0
- package/dist/tools/projects/create-task.js +230 -0
- package/dist/tools/projects/create-task.js.map +1 -0
- package/dist/tools/projects/delete-attachment.d.ts +55 -0
- package/dist/tools/projects/delete-attachment.d.ts.map +1 -0
- package/dist/tools/projects/delete-attachment.js +115 -0
- package/dist/tools/projects/delete-attachment.js.map +1 -0
- package/dist/tools/projects/delete-project-template.d.ts +48 -0
- package/dist/tools/projects/delete-project-template.d.ts.map +1 -0
- package/dist/tools/projects/delete-project-template.js +108 -0
- package/dist/tools/projects/delete-project-template.js.map +1 -0
- package/dist/tools/projects/download-attachment.d.ts +62 -0
- package/dist/tools/projects/download-attachment.d.ts.map +1 -0
- package/dist/tools/projects/download-attachment.js +195 -0
- package/dist/tools/projects/download-attachment.js.map +1 -0
- package/dist/tools/projects/get-attachment-list.d.ts +48 -0
- package/dist/tools/projects/get-attachment-list.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-list.js +118 -0
- package/dist/tools/projects/get-attachment-list.js.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts +55 -0
- package/dist/tools/projects/get-attachment-metadata.d.ts.map +1 -0
- package/dist/tools/projects/get-attachment-metadata.js +120 -0
- package/dist/tools/projects/get-attachment-metadata.js.map +1 -0
- package/dist/tools/projects/get-milestone-list.d.ts +49 -0
- package/dist/tools/projects/get-milestone-list.d.ts.map +1 -0
- package/dist/tools/projects/get-milestone-list.js +112 -0
- package/dist/tools/projects/get-milestone-list.js.map +1 -0
- package/dist/tools/projects/get-project-list.d.ts +50 -0
- package/dist/tools/projects/get-project-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-list.js +113 -0
- package/dist/tools/projects/get-project-list.js.map +1 -0
- package/dist/tools/projects/get-project-member-group-list.d.ts +55 -0
- package/dist/tools/projects/get-project-member-group-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-member-group-list.js +127 -0
- package/dist/tools/projects/get-project-member-group-list.js.map +1 -0
- package/dist/tools/projects/get-project-member-list.d.ts +66 -0
- package/dist/tools/projects/get-project-member-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-member-list.js +159 -0
- package/dist/tools/projects/get-project-member-list.js.map +1 -0
- package/dist/tools/projects/get-project-template-list.d.ts +55 -0
- package/dist/tools/projects/get-project-template-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-template-list.js +127 -0
- package/dist/tools/projects/get-project-template-list.js.map +1 -0
- package/dist/tools/projects/get-project-template.d.ts +48 -0
- package/dist/tools/projects/get-project-template.d.ts.map +1 -0
- package/dist/tools/projects/get-project-template.js +132 -0
- package/dist/tools/projects/get-project-template.js.map +1 -0
- package/dist/tools/projects/get-project-workflow-list.d.ts +41 -0
- package/dist/tools/projects/get-project-workflow-list.d.ts.map +1 -0
- package/dist/tools/projects/get-project-workflow-list.js +107 -0
- package/dist/tools/projects/get-project-workflow-list.js.map +1 -0
- package/dist/tools/projects/get-project.d.ts +41 -0
- package/dist/tools/projects/get-project.d.ts.map +1 -0
- package/dist/tools/projects/get-project.js +110 -0
- package/dist/tools/projects/get-project.js.map +1 -0
- package/dist/tools/projects/get-tag-list.d.ts +55 -0
- package/dist/tools/projects/get-tag-list.d.ts.map +1 -0
- package/dist/tools/projects/get-tag-list.js +145 -0
- package/dist/tools/projects/get-tag-list.js.map +1 -0
- package/dist/tools/projects/get-tag.d.ts +48 -0
- package/dist/tools/projects/get-tag.d.ts.map +1 -0
- package/dist/tools/projects/get-tag.js +124 -0
- package/dist/tools/projects/get-tag.js.map +1 -0
- package/dist/tools/projects/get-task-comment-list.d.ts +63 -0
- package/dist/tools/projects/get-task-comment-list.d.ts.map +1 -0
- package/dist/tools/projects/get-task-comment-list.js +136 -0
- package/dist/tools/projects/get-task-comment-list.js.map +1 -0
- package/dist/tools/projects/get-task-list.d.ts +184 -0
- package/dist/tools/projects/get-task-list.d.ts.map +1 -0
- package/dist/tools/projects/get-task-list.js +257 -0
- package/dist/tools/projects/get-task-list.js.map +1 -0
- package/dist/tools/projects/get-task.d.ts +48 -0
- package/dist/tools/projects/get-task.d.ts.map +1 -0
- package/dist/tools/projects/get-task.js +130 -0
- package/dist/tools/projects/get-task.js.map +1 -0
- package/dist/tools/projects/update-project-template.d.ts +312 -0
- package/dist/tools/projects/update-project-template.d.ts.map +1 -0
- package/dist/tools/projects/update-project-template.js +266 -0
- package/dist/tools/projects/update-project-template.js.map +1 -0
- package/dist/tools/projects/update-tag-group.d.ts +62 -0
- package/dist/tools/projects/update-tag-group.d.ts.map +1 -0
- package/dist/tools/projects/update-tag-group.js +162 -0
- package/dist/tools/projects/update-tag-group.js.map +1 -0
- package/dist/tools/projects/update-task-comment.d.ts +92 -0
- package/dist/tools/projects/update-task-comment.d.ts.map +1 -0
- package/dist/tools/projects/update-task-comment.js +176 -0
- package/dist/tools/projects/update-task-comment.js.map +1 -0
- package/dist/tools/projects/update-task.d.ts +203 -0
- package/dist/tools/projects/update-task.d.ts.map +1 -0
- package/dist/tools/projects/update-task.js +261 -0
- package/dist/tools/projects/update-task.js.map +1 -0
- package/dist/tools/projects/upload-attachment.d.ts +55 -0
- package/dist/tools/projects/upload-attachment.d.ts.map +1 -0
- package/dist/tools/projects/upload-attachment.js +143 -0
- package/dist/tools/projects/upload-attachment.js.map +1 -0
- package/dist/tools/wiki/create-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/create-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/create-wiki-comment.js +72 -0
- package/dist/tools/wiki/create-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/create-wiki-page.d.ts +127 -0
- package/dist/tools/wiki/create-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/create-wiki-page.js +116 -0
- package/dist/tools/wiki/create-wiki-page.js.map +1 -0
- package/dist/tools/wiki/delete-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/delete-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/delete-wiki-comment.js +72 -0
- package/dist/tools/wiki/delete-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/delete-wiki-page-file.d.ts +55 -0
- package/dist/tools/wiki/delete-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/delete-wiki-page-file.js +115 -0
- package/dist/tools/wiki/delete-wiki-page-file.js.map +1 -0
- package/dist/tools/wiki/download-wiki-attach-file.d.ts +55 -0
- package/dist/tools/wiki/download-wiki-attach-file.d.ts.map +1 -0
- package/dist/tools/wiki/download-wiki-attach-file.js +176 -0
- package/dist/tools/wiki/download-wiki-attach-file.js.map +1 -0
- package/dist/tools/wiki/download-wiki-page-file.d.ts +62 -0
- package/dist/tools/wiki/download-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/download-wiki-page-file.js +189 -0
- package/dist/tools/wiki/download-wiki-page-file.js.map +1 -0
- package/dist/tools/wiki/get-wiki-comment-list.d.ts +62 -0
- package/dist/tools/wiki/get-wiki-comment-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-comment-list.js +74 -0
- package/dist/tools/wiki/get-wiki-comment-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-comment.d.ts +55 -0
- package/dist/tools/wiki/get-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-comment.js +72 -0
- package/dist/tools/wiki/get-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/get-wiki-list.d.ts +47 -0
- package/dist/tools/wiki/get-wiki-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-list.js +76 -0
- package/dist/tools/wiki/get-wiki-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-page-list.d.ts +48 -0
- package/dist/tools/wiki/get-wiki-page-list.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-page-list.js +70 -0
- package/dist/tools/wiki/get-wiki-page-list.js.map +1 -0
- package/dist/tools/wiki/get-wiki-page.d.ts +48 -0
- package/dist/tools/wiki/get-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/get-wiki-page.js +78 -0
- package/dist/tools/wiki/get-wiki-page.js.map +1 -0
- package/dist/tools/wiki/update-wiki-comment.d.ts +62 -0
- package/dist/tools/wiki/update-wiki-comment.d.ts.map +1 -0
- package/dist/tools/wiki/update-wiki-comment.js +74 -0
- package/dist/tools/wiki/update-wiki-comment.js.map +1 -0
- package/dist/tools/wiki/update-wiki-page.d.ts +117 -0
- package/dist/tools/wiki/update-wiki-page.d.ts.map +1 -0
- package/dist/tools/wiki/update-wiki-page.js +111 -0
- package/dist/tools/wiki/update-wiki-page.js.map +1 -0
- package/dist/tools/wiki/upload-wiki-file.d.ts +49 -0
- package/dist/tools/wiki/upload-wiki-file.d.ts.map +1 -0
- package/dist/tools/wiki/upload-wiki-file.js +145 -0
- package/dist/tools/wiki/upload-wiki-file.js.map +1 -0
- package/dist/tools/wiki/upload-wiki-page-file.d.ts +55 -0
- package/dist/tools/wiki/upload-wiki-page-file.d.ts.map +1 -0
- package/dist/tools/wiki/upload-wiki-page-file.js +147 -0
- package/dist/tools/wiki/upload-wiki-page-file.js.map +1 -0
- package/dist/types/config.d.ts +18 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dooray-api.d.ts +717 -0
- package/dist/types/dooray-api.d.ts.map +1 -0
- package/dist/types/dooray-api.js +7 -0
- package/dist/types/dooray-api.js.map +1 -0
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +60 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/member-transform.d.ts +20 -0
- package/dist/utils/member-transform.d.ts.map +1 -0
- package/dist/utils/member-transform.js +48 -0
- package/dist/utils/member-transform.js.map +1 -0
- package/dist/utils/response-filters.d.ts +105 -0
- package/dist/utils/response-filters.d.ts.map +1 -0
- package/dist/utils/response-filters.js +152 -0
- package/dist/utils/response-filters.js.map +1 -0
- package/package.json +54 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,736 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Dooray MCP Server
|
|
5
|
+
* Main entry point for the Model Context Protocol server
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
42
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
43
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
44
|
+
const dotenv = __importStar(require("dotenv"));
|
|
45
|
+
const client_js_1 = require("./api/client.js");
|
|
46
|
+
const logger_js_1 = require("./utils/logger.js");
|
|
47
|
+
// Import all tools
|
|
48
|
+
const get_my_member_info_js_1 = require("./tools/common/get-my-member-info.js");
|
|
49
|
+
const get_project_list_js_1 = require("./tools/projects/get-project-list.js");
|
|
50
|
+
const get_project_js_1 = require("./tools/projects/get-project.js");
|
|
51
|
+
const get_task_list_js_1 = require("./tools/projects/get-task-list.js");
|
|
52
|
+
const get_task_js_1 = require("./tools/projects/get-task.js");
|
|
53
|
+
const create_task_js_1 = require("./tools/projects/create-task.js");
|
|
54
|
+
const update_task_js_1 = require("./tools/projects/update-task.js");
|
|
55
|
+
const create_task_comment_js_1 = require("./tools/projects/create-task-comment.js");
|
|
56
|
+
const get_task_comment_list_js_1 = require("./tools/projects/get-task-comment-list.js");
|
|
57
|
+
const update_task_comment_js_1 = require("./tools/projects/update-task-comment.js");
|
|
58
|
+
const get_milestone_list_js_1 = require("./tools/projects/get-milestone-list.js");
|
|
59
|
+
const get_tag_list_js_1 = require("./tools/projects/get-tag-list.js");
|
|
60
|
+
const get_tag_js_1 = require("./tools/projects/get-tag.js");
|
|
61
|
+
const create_tag_js_1 = require("./tools/projects/create-tag.js");
|
|
62
|
+
const update_tag_group_js_1 = require("./tools/projects/update-tag-group.js");
|
|
63
|
+
const get_project_template_list_js_1 = require("./tools/projects/get-project-template-list.js");
|
|
64
|
+
const get_project_template_js_1 = require("./tools/projects/get-project-template.js");
|
|
65
|
+
const create_project_template_js_1 = require("./tools/projects/create-project-template.js");
|
|
66
|
+
const update_project_template_js_1 = require("./tools/projects/update-project-template.js");
|
|
67
|
+
const delete_project_template_js_1 = require("./tools/projects/delete-project-template.js");
|
|
68
|
+
const get_project_member_list_js_1 = require("./tools/projects/get-project-member-list.js");
|
|
69
|
+
const get_project_member_group_list_js_1 = require("./tools/projects/get-project-member-group-list.js");
|
|
70
|
+
const get_project_workflow_list_js_1 = require("./tools/projects/get-project-workflow-list.js");
|
|
71
|
+
const upload_attachment_js_1 = require("./tools/projects/upload-attachment.js");
|
|
72
|
+
const get_attachment_list_js_1 = require("./tools/projects/get-attachment-list.js");
|
|
73
|
+
const get_attachment_metadata_js_1 = require("./tools/projects/get-attachment-metadata.js");
|
|
74
|
+
const download_attachment_js_1 = require("./tools/projects/download-attachment.js");
|
|
75
|
+
const delete_attachment_js_1 = require("./tools/projects/delete-attachment.js");
|
|
76
|
+
// Drive tools
|
|
77
|
+
const get_drive_list_js_1 = require("./tools/drive/get-drive-list.js");
|
|
78
|
+
const get_drive_file_list_js_1 = require("./tools/drive/get-drive-file-list.js");
|
|
79
|
+
const get_drive_file_meta_js_1 = require("./tools/drive/get-drive-file-meta.js");
|
|
80
|
+
const create_drive_folder_js_1 = require("./tools/drive/create-drive-folder.js");
|
|
81
|
+
const rename_drive_file_js_1 = require("./tools/drive/rename-drive-file.js");
|
|
82
|
+
const move_drive_file_js_1 = require("./tools/drive/move-drive-file.js");
|
|
83
|
+
const copy_drive_file_js_1 = require("./tools/drive/copy-drive-file.js");
|
|
84
|
+
const delete_drive_file_js_1 = require("./tools/drive/delete-drive-file.js");
|
|
85
|
+
const upload_drive_file_js_1 = require("./tools/drive/upload-drive-file.js");
|
|
86
|
+
const download_drive_file_js_1 = require("./tools/drive/download-drive-file.js");
|
|
87
|
+
const update_drive_file_js_1 = require("./tools/drive/update-drive-file.js");
|
|
88
|
+
// Wiki tools
|
|
89
|
+
const get_wiki_list_js_1 = require("./tools/wiki/get-wiki-list.js");
|
|
90
|
+
const get_wiki_page_list_js_1 = require("./tools/wiki/get-wiki-page-list.js");
|
|
91
|
+
const get_wiki_page_js_1 = require("./tools/wiki/get-wiki-page.js");
|
|
92
|
+
const create_wiki_page_js_1 = require("./tools/wiki/create-wiki-page.js");
|
|
93
|
+
const update_wiki_page_js_1 = require("./tools/wiki/update-wiki-page.js");
|
|
94
|
+
const get_wiki_comment_list_js_1 = require("./tools/wiki/get-wiki-comment-list.js");
|
|
95
|
+
const get_wiki_comment_js_1 = require("./tools/wiki/get-wiki-comment.js");
|
|
96
|
+
const create_wiki_comment_js_1 = require("./tools/wiki/create-wiki-comment.js");
|
|
97
|
+
const update_wiki_comment_js_1 = require("./tools/wiki/update-wiki-comment.js");
|
|
98
|
+
const delete_wiki_comment_js_1 = require("./tools/wiki/delete-wiki-comment.js");
|
|
99
|
+
// Wiki file tools
|
|
100
|
+
const upload_wiki_page_file_js_1 = require("./tools/wiki/upload-wiki-page-file.js");
|
|
101
|
+
const download_wiki_page_file_js_1 = require("./tools/wiki/download-wiki-page-file.js");
|
|
102
|
+
const delete_wiki_page_file_js_1 = require("./tools/wiki/delete-wiki-page-file.js");
|
|
103
|
+
const upload_wiki_file_js_1 = require("./tools/wiki/upload-wiki-file.js");
|
|
104
|
+
const download_wiki_attach_file_js_1 = require("./tools/wiki/download-wiki-attach-file.js");
|
|
105
|
+
// Messenger tools
|
|
106
|
+
const get_channels_js_1 = require("./tools/messenger/get-channels.js");
|
|
107
|
+
const send_channel_message_js_1 = require("./tools/messenger/send-channel-message.js");
|
|
108
|
+
const send_direct_message_js_1 = require("./tools/messenger/send-direct-message.js");
|
|
109
|
+
const get_channel_messages_js_1 = require("./tools/messenger/get-channel-messages.js");
|
|
110
|
+
// Load environment variables
|
|
111
|
+
dotenv.config();
|
|
112
|
+
/**
|
|
113
|
+
* Tool registry mapping tool names to their handlers and schemas
|
|
114
|
+
*/
|
|
115
|
+
const toolRegistry = {
|
|
116
|
+
// Common tools
|
|
117
|
+
'get-my-member-info': { handler: get_my_member_info_js_1.getMyMemberInfoHandler, schema: get_my_member_info_js_1.getMyMemberInfoSchema },
|
|
118
|
+
// Projects tools
|
|
119
|
+
'get-project-list': { handler: get_project_list_js_1.getProjectListHandler, schema: get_project_list_js_1.getProjectListSchema },
|
|
120
|
+
'get-project': { handler: get_project_js_1.getProjectHandler, schema: get_project_js_1.getProjectSchema },
|
|
121
|
+
'get-task-list': { handler: get_task_list_js_1.getTaskListHandler, schema: get_task_list_js_1.getTaskListSchema },
|
|
122
|
+
'get-task': { handler: get_task_js_1.getTaskHandler, schema: get_task_js_1.getTaskSchema },
|
|
123
|
+
'create-task': { handler: create_task_js_1.createTaskHandler, schema: create_task_js_1.createTaskSchema },
|
|
124
|
+
'update-task': { handler: update_task_js_1.updateTaskHandler, schema: update_task_js_1.updateTaskSchema },
|
|
125
|
+
'create-task-comment': { handler: create_task_comment_js_1.createTaskCommentHandler, schema: create_task_comment_js_1.createTaskCommentSchema },
|
|
126
|
+
'get-task-comment-list': { handler: get_task_comment_list_js_1.getTaskCommentListHandler, schema: get_task_comment_list_js_1.getTaskCommentListSchema },
|
|
127
|
+
'update-task-comment': { handler: update_task_comment_js_1.updateTaskCommentHandler, schema: update_task_comment_js_1.updateTaskCommentSchema },
|
|
128
|
+
'get-milestone-list': { handler: get_milestone_list_js_1.getMilestoneListHandler, schema: get_milestone_list_js_1.getMilestoneListSchema },
|
|
129
|
+
'get-tag-list': { handler: get_tag_list_js_1.getTagListHandler, schema: get_tag_list_js_1.getTagListSchema },
|
|
130
|
+
'get-tag': { handler: get_tag_js_1.getTagHandler, schema: get_tag_js_1.getTagSchema },
|
|
131
|
+
'create-tag': { handler: create_tag_js_1.createTagHandler, schema: create_tag_js_1.createTagSchema },
|
|
132
|
+
'update-tag-group': { handler: update_tag_group_js_1.updateTagGroupHandler, schema: update_tag_group_js_1.updateTagGroupSchema },
|
|
133
|
+
'get-project-template-list': { handler: get_project_template_list_js_1.getProjectTemplateListHandler, schema: get_project_template_list_js_1.getProjectTemplateListSchema },
|
|
134
|
+
'get-project-template': { handler: get_project_template_js_1.getProjectTemplateHandler, schema: get_project_template_js_1.getProjectTemplateSchema },
|
|
135
|
+
'create-project-template': { handler: create_project_template_js_1.createProjectTemplateHandler, schema: create_project_template_js_1.createProjectTemplateSchema },
|
|
136
|
+
'update-project-template': { handler: update_project_template_js_1.updateProjectTemplateHandler, schema: update_project_template_js_1.updateProjectTemplateSchema },
|
|
137
|
+
'delete-project-template': { handler: delete_project_template_js_1.deleteProjectTemplateHandler, schema: delete_project_template_js_1.deleteProjectTemplateSchema },
|
|
138
|
+
'get-project-member-list': { handler: get_project_member_list_js_1.getProjectMemberListHandler, schema: get_project_member_list_js_1.getProjectMemberListSchema },
|
|
139
|
+
'get-project-member-group-list': { handler: get_project_member_group_list_js_1.getProjectMemberGroupListHandler, schema: get_project_member_group_list_js_1.getProjectMemberGroupListSchema },
|
|
140
|
+
'get-project-workflow-list': { handler: get_project_workflow_list_js_1.getProjectWorkflowListHandler, schema: get_project_workflow_list_js_1.getProjectWorkflowListSchema },
|
|
141
|
+
'upload-attachment': { handler: upload_attachment_js_1.uploadAttachmentHandler, schema: upload_attachment_js_1.uploadAttachmentSchema },
|
|
142
|
+
'get-attachment-list': { handler: get_attachment_list_js_1.getAttachmentListHandler, schema: get_attachment_list_js_1.getAttachmentListSchema },
|
|
143
|
+
'get-attachment-metadata': { handler: get_attachment_metadata_js_1.getAttachmentMetadataHandler, schema: get_attachment_metadata_js_1.getAttachmentMetadataSchema },
|
|
144
|
+
'download-attachment': { handler: download_attachment_js_1.downloadAttachmentHandler, schema: download_attachment_js_1.downloadAttachmentSchema },
|
|
145
|
+
'delete-attachment': { handler: delete_attachment_js_1.deleteAttachmentHandler, schema: delete_attachment_js_1.deleteAttachmentSchema },
|
|
146
|
+
// Drive tools
|
|
147
|
+
'get-drive-list': { handler: get_drive_list_js_1.getDriveListHandler, schema: get_drive_list_js_1.getDriveListSchema },
|
|
148
|
+
'get-drive-file-list': { handler: get_drive_file_list_js_1.getDriveFileListHandler, schema: get_drive_file_list_js_1.getDriveFileListSchema },
|
|
149
|
+
'get-drive-file-meta': { handler: get_drive_file_meta_js_1.getDriveFileMetaHandler, schema: get_drive_file_meta_js_1.getDriveFileMetaSchema },
|
|
150
|
+
'create-drive-folder': { handler: create_drive_folder_js_1.createDriveFolderHandler, schema: create_drive_folder_js_1.createDriveFolderSchema },
|
|
151
|
+
'rename-drive-file': { handler: rename_drive_file_js_1.renameDriveFileHandler, schema: rename_drive_file_js_1.renameDriveFileSchema },
|
|
152
|
+
'move-drive-file': { handler: move_drive_file_js_1.moveDriveFileHandler, schema: move_drive_file_js_1.moveDriveFileSchema },
|
|
153
|
+
'copy-drive-file': { handler: copy_drive_file_js_1.copyDriveFileHandler, schema: copy_drive_file_js_1.copyDriveFileSchema },
|
|
154
|
+
'delete-drive-file': { handler: delete_drive_file_js_1.deleteDriveFileHandler, schema: delete_drive_file_js_1.deleteDriveFileSchema },
|
|
155
|
+
'upload-drive-file': { handler: upload_drive_file_js_1.uploadDriveFileHandler, schema: upload_drive_file_js_1.uploadDriveFileSchema },
|
|
156
|
+
'download-drive-file': { handler: download_drive_file_js_1.downloadDriveFileHandler, schema: download_drive_file_js_1.downloadDriveFileSchema },
|
|
157
|
+
'update-drive-file': { handler: update_drive_file_js_1.updateDriveFileHandler, schema: update_drive_file_js_1.updateDriveFileSchema },
|
|
158
|
+
// Wiki tools
|
|
159
|
+
'get-wiki-list': { handler: get_wiki_list_js_1.getWikiListHandler, schema: get_wiki_list_js_1.getWikiListSchema },
|
|
160
|
+
'get-wiki-page-list': { handler: get_wiki_page_list_js_1.getWikiPageListHandler, schema: get_wiki_page_list_js_1.getWikiPageListSchema },
|
|
161
|
+
'get-wiki-page': { handler: get_wiki_page_js_1.getWikiPageHandler, schema: get_wiki_page_js_1.getWikiPageSchema },
|
|
162
|
+
'create-wiki-page': { handler: create_wiki_page_js_1.createWikiPageHandler, schema: create_wiki_page_js_1.createWikiPageSchema },
|
|
163
|
+
'update-wiki-page': { handler: update_wiki_page_js_1.updateWikiPageHandler, schema: update_wiki_page_js_1.updateWikiPageSchema },
|
|
164
|
+
'get-wiki-page-comment-list': { handler: get_wiki_comment_list_js_1.getWikiPageCommentListHandler, schema: get_wiki_comment_list_js_1.getWikiPageCommentListSchema },
|
|
165
|
+
'get-wiki-page-comment': { handler: get_wiki_comment_js_1.getWikiPageCommentHandler, schema: get_wiki_comment_js_1.getWikiPageCommentSchema },
|
|
166
|
+
'create-wiki-page-comment': { handler: create_wiki_comment_js_1.createWikiPageCommentHandler, schema: create_wiki_comment_js_1.createWikiPageCommentSchema },
|
|
167
|
+
'update-wiki-page-comment': { handler: update_wiki_comment_js_1.updateWikiPageCommentHandler, schema: update_wiki_comment_js_1.updateWikiPageCommentSchema },
|
|
168
|
+
'delete-wiki-page-comment': { handler: delete_wiki_comment_js_1.deleteWikiPageCommentHandler, schema: delete_wiki_comment_js_1.deleteWikiPageCommentSchema },
|
|
169
|
+
// Wiki file tools
|
|
170
|
+
'upload-wiki-page-file': { handler: upload_wiki_page_file_js_1.uploadWikiPageFileHandler, schema: upload_wiki_page_file_js_1.uploadWikiPageFileSchema },
|
|
171
|
+
'download-wiki-page-file': { handler: download_wiki_page_file_js_1.downloadWikiPageFileHandler, schema: download_wiki_page_file_js_1.downloadWikiPageFileSchema },
|
|
172
|
+
'delete-wiki-page-file': { handler: delete_wiki_page_file_js_1.deleteWikiPageFileHandler, schema: delete_wiki_page_file_js_1.deleteWikiPageFileSchema },
|
|
173
|
+
'upload-wiki-file': { handler: upload_wiki_file_js_1.uploadWikiFileHandler, schema: upload_wiki_file_js_1.uploadWikiFileSchema },
|
|
174
|
+
'download-wiki-attach-file': { handler: download_wiki_attach_file_js_1.downloadWikiAttachFileHandler, schema: download_wiki_attach_file_js_1.downloadWikiAttachFileSchema },
|
|
175
|
+
// Messenger tools
|
|
176
|
+
'get-messenger-channels': { handler: get_channels_js_1.getChannelsHandler, schema: get_channels_js_1.getChannelsSchema },
|
|
177
|
+
'send-messenger-channel-message': { handler: send_channel_message_js_1.sendChannelMessageHandler, schema: send_channel_message_js_1.sendChannelMessageSchema },
|
|
178
|
+
'send-messenger-direct-message': { handler: send_direct_message_js_1.sendDirectMessageHandler, schema: send_direct_message_js_1.sendDirectMessageSchema },
|
|
179
|
+
'get-messenger-channel-messages': { handler: get_channel_messages_js_1.getChannelMessagesHandler, schema: get_channel_messages_js_1.getChannelMessagesSchema },
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* List of all available tools
|
|
183
|
+
*/
|
|
184
|
+
const tools = [
|
|
185
|
+
get_my_member_info_js_1.getMyMemberInfoTool,
|
|
186
|
+
get_project_list_js_1.getProjectListTool,
|
|
187
|
+
get_project_js_1.getProjectTool,
|
|
188
|
+
get_task_list_js_1.getTaskListTool,
|
|
189
|
+
get_task_js_1.getTaskTool,
|
|
190
|
+
create_task_js_1.createTaskTool,
|
|
191
|
+
update_task_js_1.updateTaskTool,
|
|
192
|
+
create_task_comment_js_1.createTaskCommentTool,
|
|
193
|
+
get_task_comment_list_js_1.getTaskCommentListTool,
|
|
194
|
+
update_task_comment_js_1.updateTaskCommentTool,
|
|
195
|
+
get_milestone_list_js_1.getMilestoneListTool,
|
|
196
|
+
get_tag_list_js_1.getTagListTool,
|
|
197
|
+
get_tag_js_1.getTagTool,
|
|
198
|
+
create_tag_js_1.createTagTool,
|
|
199
|
+
update_tag_group_js_1.updateTagGroupTool,
|
|
200
|
+
get_project_template_list_js_1.getProjectTemplateListTool,
|
|
201
|
+
get_project_template_js_1.getProjectTemplateTool,
|
|
202
|
+
create_project_template_js_1.createProjectTemplateTool,
|
|
203
|
+
update_project_template_js_1.updateProjectTemplateTool,
|
|
204
|
+
delete_project_template_js_1.deleteProjectTemplateTool,
|
|
205
|
+
get_project_member_list_js_1.getProjectMemberListTool,
|
|
206
|
+
get_project_member_group_list_js_1.getProjectMemberGroupListTool,
|
|
207
|
+
get_project_workflow_list_js_1.getProjectWorkflowListTool,
|
|
208
|
+
upload_attachment_js_1.uploadAttachmentTool,
|
|
209
|
+
get_attachment_list_js_1.getAttachmentListTool,
|
|
210
|
+
get_attachment_metadata_js_1.getAttachmentMetadataTool,
|
|
211
|
+
download_attachment_js_1.downloadAttachmentTool,
|
|
212
|
+
delete_attachment_js_1.deleteAttachmentTool,
|
|
213
|
+
// Drive tools
|
|
214
|
+
get_drive_list_js_1.getDriveListTool,
|
|
215
|
+
get_drive_file_list_js_1.getDriveFileListTool,
|
|
216
|
+
get_drive_file_meta_js_1.getDriveFileMetaTool,
|
|
217
|
+
create_drive_folder_js_1.createDriveFolderTool,
|
|
218
|
+
rename_drive_file_js_1.renameDriveFileTool,
|
|
219
|
+
move_drive_file_js_1.moveDriveFileTool,
|
|
220
|
+
copy_drive_file_js_1.copyDriveFileTool,
|
|
221
|
+
delete_drive_file_js_1.deleteDriveFileTool,
|
|
222
|
+
upload_drive_file_js_1.uploadDriveFileTool,
|
|
223
|
+
download_drive_file_js_1.downloadDriveFileTool,
|
|
224
|
+
update_drive_file_js_1.updateDriveFileTool,
|
|
225
|
+
// Wiki tools
|
|
226
|
+
get_wiki_list_js_1.getWikiListTool,
|
|
227
|
+
get_wiki_page_list_js_1.getWikiPageListTool,
|
|
228
|
+
get_wiki_page_js_1.getWikiPageTool,
|
|
229
|
+
create_wiki_page_js_1.createWikiPageTool,
|
|
230
|
+
update_wiki_page_js_1.updateWikiPageTool,
|
|
231
|
+
get_wiki_comment_list_js_1.getWikiPageCommentListTool,
|
|
232
|
+
get_wiki_comment_js_1.getWikiPageCommentTool,
|
|
233
|
+
create_wiki_comment_js_1.createWikiPageCommentTool,
|
|
234
|
+
update_wiki_comment_js_1.updateWikiPageCommentTool,
|
|
235
|
+
delete_wiki_comment_js_1.deleteWikiPageCommentTool,
|
|
236
|
+
// Wiki file tools
|
|
237
|
+
upload_wiki_page_file_js_1.uploadWikiPageFileTool,
|
|
238
|
+
download_wiki_page_file_js_1.downloadWikiPageFileTool,
|
|
239
|
+
delete_wiki_page_file_js_1.deleteWikiPageFileTool,
|
|
240
|
+
upload_wiki_file_js_1.uploadWikiFileTool,
|
|
241
|
+
download_wiki_attach_file_js_1.downloadWikiAttachFileTool,
|
|
242
|
+
// Messenger tools
|
|
243
|
+
get_channels_js_1.getChannelsTool,
|
|
244
|
+
send_channel_message_js_1.sendChannelMessageTool,
|
|
245
|
+
send_direct_message_js_1.sendDirectMessageTool,
|
|
246
|
+
get_channel_messages_js_1.getChannelMessagesTool,
|
|
247
|
+
];
|
|
248
|
+
/**
|
|
249
|
+
* Main server initialization
|
|
250
|
+
*/
|
|
251
|
+
async function main() {
|
|
252
|
+
logger_js_1.logger.info('Starting Dooray MCP Server...');
|
|
253
|
+
// Validate API token
|
|
254
|
+
const apiToken = process.env.DOORAY_API_TOKEN;
|
|
255
|
+
if (!apiToken) {
|
|
256
|
+
logger_js_1.logger.error('DOORAY_API_TOKEN environment variable is required');
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
259
|
+
// Initialize Dooray API client
|
|
260
|
+
try {
|
|
261
|
+
(0, client_js_1.initializeClient)({
|
|
262
|
+
apiToken,
|
|
263
|
+
baseUrl: process.env.DOORAY_API_BASE_URL,
|
|
264
|
+
});
|
|
265
|
+
logger_js_1.logger.info('Dooray API client initialized');
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
logger_js_1.logger.error('Failed to initialize Dooray API client:', error);
|
|
269
|
+
process.exit(1);
|
|
270
|
+
}
|
|
271
|
+
// Create MCP server
|
|
272
|
+
const server = new index_js_1.Server({
|
|
273
|
+
name: 'dooray-mcp',
|
|
274
|
+
version: '0.1.0',
|
|
275
|
+
}, {
|
|
276
|
+
capabilities: {
|
|
277
|
+
tools: {},
|
|
278
|
+
prompts: {},
|
|
279
|
+
resources: {},
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
/**
|
|
283
|
+
* Available prompts for common Dooray workflows
|
|
284
|
+
*/
|
|
285
|
+
const prompts = [
|
|
286
|
+
{
|
|
287
|
+
name: 'create-task-with-template',
|
|
288
|
+
description: 'Create a new task using a structured template with all necessary fields',
|
|
289
|
+
arguments: [
|
|
290
|
+
{
|
|
291
|
+
name: 'projectId',
|
|
292
|
+
description: 'The project ID where the task will be created',
|
|
293
|
+
required: true,
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: 'taskType',
|
|
297
|
+
description: 'Type of task: bug, feature, improvement, or general',
|
|
298
|
+
required: false,
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
name: 'weekly-task-summary',
|
|
304
|
+
description: 'Generate a summary of tasks assigned to you for the current week',
|
|
305
|
+
arguments: [
|
|
306
|
+
{
|
|
307
|
+
name: 'projectId',
|
|
308
|
+
description: 'The project ID to summarize tasks from',
|
|
309
|
+
required: true,
|
|
310
|
+
},
|
|
311
|
+
],
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
name: 'project-status-report',
|
|
315
|
+
description: 'Generate a project status report including task counts by workflow status',
|
|
316
|
+
arguments: [
|
|
317
|
+
{
|
|
318
|
+
name: 'projectId',
|
|
319
|
+
description: 'The project ID to generate report for',
|
|
320
|
+
required: true,
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
name: 'task-review-checklist',
|
|
326
|
+
description: 'Create a review checklist for a specific task',
|
|
327
|
+
arguments: [
|
|
328
|
+
{
|
|
329
|
+
name: 'projectId',
|
|
330
|
+
description: 'The project ID',
|
|
331
|
+
required: true,
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: 'taskId',
|
|
335
|
+
description: 'The task ID to create a review checklist for',
|
|
336
|
+
required: true,
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
},
|
|
340
|
+
];
|
|
341
|
+
/**
|
|
342
|
+
* Available resources for Dooray context
|
|
343
|
+
*/
|
|
344
|
+
const resources = [
|
|
345
|
+
{
|
|
346
|
+
uri: 'dooray://api/info',
|
|
347
|
+
name: 'Dooray API Information',
|
|
348
|
+
description: 'Information about the Dooray API and available endpoints',
|
|
349
|
+
mimeType: 'application/json',
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
uri: 'dooray://workflows/reference',
|
|
353
|
+
name: 'Workflow Status Reference',
|
|
354
|
+
description: 'Reference guide for Dooray workflow statuses (backlog, registered, working, closed)',
|
|
355
|
+
mimeType: 'text/markdown',
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
uri: 'dooray://priority/reference',
|
|
359
|
+
name: 'Priority Reference',
|
|
360
|
+
description: 'Reference guide for Dooray task priorities',
|
|
361
|
+
mimeType: 'text/markdown',
|
|
362
|
+
},
|
|
363
|
+
];
|
|
364
|
+
// Handle list tools request
|
|
365
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
366
|
+
logger_js_1.logger.debug('Handling list_tools request');
|
|
367
|
+
return {
|
|
368
|
+
tools,
|
|
369
|
+
};
|
|
370
|
+
});
|
|
371
|
+
// Handle list prompts request
|
|
372
|
+
server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => {
|
|
373
|
+
logger_js_1.logger.debug('Handling list_prompts request');
|
|
374
|
+
return {
|
|
375
|
+
prompts,
|
|
376
|
+
};
|
|
377
|
+
});
|
|
378
|
+
// Handle get prompt request
|
|
379
|
+
server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
|
|
380
|
+
const { name, arguments: args } = request.params;
|
|
381
|
+
logger_js_1.logger.info(`Prompt requested: ${name}`);
|
|
382
|
+
const prompt = prompts.find(p => p.name === name);
|
|
383
|
+
if (!prompt) {
|
|
384
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
385
|
+
}
|
|
386
|
+
let messages = [];
|
|
387
|
+
switch (name) {
|
|
388
|
+
case 'create-task-with-template': {
|
|
389
|
+
const taskType = args?.taskType || 'general';
|
|
390
|
+
const templates = {
|
|
391
|
+
bug: `## Bug Report
|
|
392
|
+
|
|
393
|
+
**Project ID**: ${args?.projectId}
|
|
394
|
+
|
|
395
|
+
### Description
|
|
396
|
+
[Describe the bug clearly]
|
|
397
|
+
|
|
398
|
+
### Steps to Reproduce
|
|
399
|
+
1.
|
|
400
|
+
2.
|
|
401
|
+
3.
|
|
402
|
+
|
|
403
|
+
### Expected Behavior
|
|
404
|
+
[What should happen]
|
|
405
|
+
|
|
406
|
+
### Actual Behavior
|
|
407
|
+
[What actually happens]
|
|
408
|
+
|
|
409
|
+
### Environment
|
|
410
|
+
- Browser/OS:
|
|
411
|
+
- Version:
|
|
412
|
+
|
|
413
|
+
### Priority
|
|
414
|
+
- [ ] High (서비스 중단)
|
|
415
|
+
- [ ] Normal (기능 장애)
|
|
416
|
+
- [ ] Low (개선 필요)`,
|
|
417
|
+
feature: `## Feature Request
|
|
418
|
+
|
|
419
|
+
**Project ID**: ${args?.projectId}
|
|
420
|
+
|
|
421
|
+
### Summary
|
|
422
|
+
[Brief description of the feature]
|
|
423
|
+
|
|
424
|
+
### User Story
|
|
425
|
+
As a [type of user], I want [goal] so that [benefit].
|
|
426
|
+
|
|
427
|
+
### Acceptance Criteria
|
|
428
|
+
- [ ]
|
|
429
|
+
- [ ]
|
|
430
|
+
- [ ]
|
|
431
|
+
|
|
432
|
+
### Technical Notes
|
|
433
|
+
[Any technical considerations]`,
|
|
434
|
+
improvement: `## Improvement
|
|
435
|
+
|
|
436
|
+
**Project ID**: ${args?.projectId}
|
|
437
|
+
|
|
438
|
+
### Current State
|
|
439
|
+
[Describe current behavior]
|
|
440
|
+
|
|
441
|
+
### Proposed Improvement
|
|
442
|
+
[Describe the improvement]
|
|
443
|
+
|
|
444
|
+
### Benefits
|
|
445
|
+
-
|
|
446
|
+
-
|
|
447
|
+
|
|
448
|
+
### Implementation Notes
|
|
449
|
+
[Technical details if any]`,
|
|
450
|
+
general: `## Task
|
|
451
|
+
|
|
452
|
+
**Project ID**: ${args?.projectId}
|
|
453
|
+
|
|
454
|
+
### Subject
|
|
455
|
+
[Task title]
|
|
456
|
+
|
|
457
|
+
### Description
|
|
458
|
+
[Detailed description]
|
|
459
|
+
|
|
460
|
+
### Checklist
|
|
461
|
+
- [ ]
|
|
462
|
+
- [ ]
|
|
463
|
+
|
|
464
|
+
### Due Date
|
|
465
|
+
[If applicable]`,
|
|
466
|
+
};
|
|
467
|
+
messages = [
|
|
468
|
+
{
|
|
469
|
+
role: 'user',
|
|
470
|
+
content: {
|
|
471
|
+
type: 'text',
|
|
472
|
+
text: `Use this template to create a new ${taskType} task in Dooray:\n\n${templates[taskType] || templates.general}`,
|
|
473
|
+
},
|
|
474
|
+
},
|
|
475
|
+
];
|
|
476
|
+
break;
|
|
477
|
+
}
|
|
478
|
+
case 'weekly-task-summary': {
|
|
479
|
+
messages = [
|
|
480
|
+
{
|
|
481
|
+
role: 'user',
|
|
482
|
+
content: {
|
|
483
|
+
type: 'text',
|
|
484
|
+
text: `Generate a weekly task summary for project ${args?.projectId}.
|
|
485
|
+
|
|
486
|
+
Please:
|
|
487
|
+
1. First call get-my-member-info to get my member ID
|
|
488
|
+
2. Then call get-task-list with:
|
|
489
|
+
- projectId: ${args?.projectId}
|
|
490
|
+
- toMemberIds: [my member ID]
|
|
491
|
+
- postWorkflowClasses: ["working", "registered"]
|
|
492
|
+
3. Summarize the tasks grouped by status
|
|
493
|
+
4. Highlight any overdue tasks`,
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
];
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
case 'project-status-report': {
|
|
500
|
+
messages = [
|
|
501
|
+
{
|
|
502
|
+
role: 'user',
|
|
503
|
+
content: {
|
|
504
|
+
type: 'text',
|
|
505
|
+
text: `Generate a project status report for project ${args?.projectId}.
|
|
506
|
+
|
|
507
|
+
Please:
|
|
508
|
+
1. Call get-project to get project details
|
|
509
|
+
2. Call get-project-workflow-list to get all workflow statuses
|
|
510
|
+
3. For each workflow class (backlog, registered, working, closed), call get-task-list to count tasks
|
|
511
|
+
4. Call get-milestone-list to show milestone progress
|
|
512
|
+
5. Generate a summary report with:
|
|
513
|
+
- Project overview
|
|
514
|
+
- Task counts by status
|
|
515
|
+
- Milestone progress
|
|
516
|
+
- Any blocked or overdue items`,
|
|
517
|
+
},
|
|
518
|
+
},
|
|
519
|
+
];
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
522
|
+
case 'task-review-checklist': {
|
|
523
|
+
messages = [
|
|
524
|
+
{
|
|
525
|
+
role: 'user',
|
|
526
|
+
content: {
|
|
527
|
+
type: 'text',
|
|
528
|
+
text: `Create a review checklist for task ${args?.taskId} in project ${args?.projectId}.
|
|
529
|
+
|
|
530
|
+
Please:
|
|
531
|
+
1. Call get-task to get the task details
|
|
532
|
+
2. Call get-task-comment-list to see existing comments
|
|
533
|
+
3. Generate a review checklist including:
|
|
534
|
+
- [ ] Task description is clear
|
|
535
|
+
- [ ] Acceptance criteria defined
|
|
536
|
+
- [ ] Assignee is set
|
|
537
|
+
- [ ] Due date is appropriate
|
|
538
|
+
- [ ] Tags/labels are correct
|
|
539
|
+
- [ ] Related tasks are linked
|
|
540
|
+
4. Suggest any improvements to the task`,
|
|
541
|
+
},
|
|
542
|
+
},
|
|
543
|
+
];
|
|
544
|
+
break;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
return {
|
|
548
|
+
description: prompt.description,
|
|
549
|
+
messages,
|
|
550
|
+
};
|
|
551
|
+
});
|
|
552
|
+
// Handle list resources request
|
|
553
|
+
server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
|
|
554
|
+
logger_js_1.logger.debug('Handling list_resources request');
|
|
555
|
+
return {
|
|
556
|
+
resources,
|
|
557
|
+
};
|
|
558
|
+
});
|
|
559
|
+
// Handle read resource request
|
|
560
|
+
server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
|
|
561
|
+
const { uri } = request.params;
|
|
562
|
+
logger_js_1.logger.info(`Resource requested: ${uri}`);
|
|
563
|
+
switch (uri) {
|
|
564
|
+
case 'dooray://api/info':
|
|
565
|
+
return {
|
|
566
|
+
contents: [
|
|
567
|
+
{
|
|
568
|
+
uri,
|
|
569
|
+
mimeType: 'application/json',
|
|
570
|
+
text: JSON.stringify({
|
|
571
|
+
name: 'Dooray API',
|
|
572
|
+
version: '1.0',
|
|
573
|
+
baseUrl: process.env.DOORAY_API_BASE_URL || 'https://api.dooray.com',
|
|
574
|
+
documentation: 'https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg',
|
|
575
|
+
availableTools: tools.map(t => ({ name: t.name, description: t.description })),
|
|
576
|
+
}, null, 2),
|
|
577
|
+
},
|
|
578
|
+
],
|
|
579
|
+
};
|
|
580
|
+
case 'dooray://workflows/reference':
|
|
581
|
+
return {
|
|
582
|
+
contents: [
|
|
583
|
+
{
|
|
584
|
+
uri,
|
|
585
|
+
mimeType: 'text/markdown',
|
|
586
|
+
text: `# Dooray Workflow Status Reference
|
|
587
|
+
|
|
588
|
+
## Workflow Classes
|
|
589
|
+
|
|
590
|
+
Dooray tasks follow a workflow with 4 main classes:
|
|
591
|
+
|
|
592
|
+
| Class | Korean | Description |
|
|
593
|
+
|-------|--------|-------------|
|
|
594
|
+
| \`backlog\` | 대기 | Tasks waiting to be started |
|
|
595
|
+
| \`registered\` | 등록 | Newly registered/acknowledged tasks |
|
|
596
|
+
| \`working\` | 진행중 | Tasks currently in progress |
|
|
597
|
+
| \`closed\` | 완료 | Completed tasks |
|
|
598
|
+
|
|
599
|
+
## Using Workflows
|
|
600
|
+
|
|
601
|
+
### Filtering Tasks by Status
|
|
602
|
+
\`\`\`json
|
|
603
|
+
{
|
|
604
|
+
"projectId": "your-project-id",
|
|
605
|
+
"postWorkflowClasses": ["working", "registered"]
|
|
606
|
+
}
|
|
607
|
+
\`\`\`
|
|
608
|
+
|
|
609
|
+
### Getting All Workflow Statuses
|
|
610
|
+
Use \`get-project-workflow-list\` to get all custom workflow statuses for a project.
|
|
611
|
+
|
|
612
|
+
### Updating Task Status
|
|
613
|
+
Use \`update-task\` with \`workflowId\` to change a task's status:
|
|
614
|
+
\`\`\`json
|
|
615
|
+
{
|
|
616
|
+
"projectId": "your-project-id",
|
|
617
|
+
"taskNumber": 123,
|
|
618
|
+
"workflowId": "workflow-status-id"
|
|
619
|
+
}
|
|
620
|
+
\`\`\`
|
|
621
|
+
`,
|
|
622
|
+
},
|
|
623
|
+
],
|
|
624
|
+
};
|
|
625
|
+
case 'dooray://priority/reference':
|
|
626
|
+
return {
|
|
627
|
+
contents: [
|
|
628
|
+
{
|
|
629
|
+
uri,
|
|
630
|
+
mimeType: 'text/markdown',
|
|
631
|
+
text: `# Dooray Task Priority Reference
|
|
632
|
+
|
|
633
|
+
## Priority Levels
|
|
634
|
+
|
|
635
|
+
| Priority | Value | Korean | Use Case |
|
|
636
|
+
|----------|-------|--------|----------|
|
|
637
|
+
| Highest | \`highest\` | 가장 높음 | Critical issues requiring immediate attention |
|
|
638
|
+
| High | \`high\` | 높음 | Important tasks that should be prioritized |
|
|
639
|
+
| Normal | \`normal\` | 보통 | Standard priority (default) |
|
|
640
|
+
| Low | \`low\` | 낮음 | Can be addressed when time permits |
|
|
641
|
+
| Lowest | \`lowest\` | 가장 낮음 | Nice to have, lowest priority |
|
|
642
|
+
|
|
643
|
+
## Setting Priority
|
|
644
|
+
|
|
645
|
+
When creating or updating a task:
|
|
646
|
+
\`\`\`json
|
|
647
|
+
{
|
|
648
|
+
"projectId": "your-project-id",
|
|
649
|
+
"subject": "Task title",
|
|
650
|
+
"priority": "high"
|
|
651
|
+
}
|
|
652
|
+
\`\`\`
|
|
653
|
+
`,
|
|
654
|
+
},
|
|
655
|
+
],
|
|
656
|
+
};
|
|
657
|
+
default:
|
|
658
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
659
|
+
}
|
|
660
|
+
});
|
|
661
|
+
// Handle call tool request
|
|
662
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
663
|
+
const { name, arguments: args } = request.params;
|
|
664
|
+
logger_js_1.logger.info(`Tool called: ${name}`);
|
|
665
|
+
logger_js_1.logger.debug(`Tool arguments:`, args);
|
|
666
|
+
const tool = toolRegistry[name];
|
|
667
|
+
if (!tool) {
|
|
668
|
+
logger_js_1.logger.error(`Unknown tool: ${name}`);
|
|
669
|
+
return {
|
|
670
|
+
content: [
|
|
671
|
+
{
|
|
672
|
+
type: 'text',
|
|
673
|
+
text: `Error: Unknown tool '${name}'`,
|
|
674
|
+
},
|
|
675
|
+
],
|
|
676
|
+
isError: true,
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
try {
|
|
680
|
+
// Validate arguments with Zod schema
|
|
681
|
+
const validatedArgs = tool.schema.parse(args || {});
|
|
682
|
+
// Call the tool handler
|
|
683
|
+
const result = await tool.handler(validatedArgs);
|
|
684
|
+
logger_js_1.logger.debug(`Tool ${name} completed successfully`);
|
|
685
|
+
return result;
|
|
686
|
+
}
|
|
687
|
+
catch (error) {
|
|
688
|
+
logger_js_1.logger.error(`Tool ${name} failed:`, error);
|
|
689
|
+
// Handle Zod validation errors
|
|
690
|
+
if (error && typeof error === 'object' && 'errors' in error) {
|
|
691
|
+
const zodError = error;
|
|
692
|
+
const errorMessages = zodError.errors
|
|
693
|
+
.map(e => `${e.path.join('.')}: ${e.message}`)
|
|
694
|
+
.join(', ');
|
|
695
|
+
return {
|
|
696
|
+
content: [
|
|
697
|
+
{
|
|
698
|
+
type: 'text',
|
|
699
|
+
text: `Validation Error: ${errorMessages}`,
|
|
700
|
+
},
|
|
701
|
+
],
|
|
702
|
+
isError: true,
|
|
703
|
+
};
|
|
704
|
+
}
|
|
705
|
+
return {
|
|
706
|
+
content: [
|
|
707
|
+
{
|
|
708
|
+
type: 'text',
|
|
709
|
+
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
710
|
+
},
|
|
711
|
+
],
|
|
712
|
+
isError: true,
|
|
713
|
+
};
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
// Start the server with stdio transport
|
|
717
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
718
|
+
await server.connect(transport);
|
|
719
|
+
logger_js_1.logger.info(`Dooray MCP Server running with ${tools.length} tools`);
|
|
720
|
+
logger_js_1.logger.info('Tools available: ' + tools.map(t => t.name).join(', '));
|
|
721
|
+
}
|
|
722
|
+
// Error handling
|
|
723
|
+
process.on('uncaughtException', (error) => {
|
|
724
|
+
logger_js_1.logger.error('Uncaught exception:', error);
|
|
725
|
+
process.exit(1);
|
|
726
|
+
});
|
|
727
|
+
process.on('unhandledRejection', (reason, promise) => {
|
|
728
|
+
logger_js_1.logger.error('Unhandled rejection at:', promise, 'reason:', reason);
|
|
729
|
+
process.exit(1);
|
|
730
|
+
});
|
|
731
|
+
// Start the server
|
|
732
|
+
main().catch((error) => {
|
|
733
|
+
logger_js_1.logger.error('Failed to start server:', error);
|
|
734
|
+
process.exit(1);
|
|
735
|
+
});
|
|
736
|
+
//# sourceMappingURL=index.js.map
|