### Basic Wiki Page Creation Example Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-create-api.md Example of a basic POST request to create a wiki page without referrers. Ensure the Content-Type header is set to application/json. ```bash POST /wiki/v1/wikis/wiki-123/pages Content-Type: application/json { "parentPageId": "parent-page-123", "subject": "새로운 위키 페이지", "body": { "mimeType": "text/x-markdown", "content": "# 새로운 위키 페이지\n\n이것은 새로운 위키 페이지입니다." } } ``` -------------------------------- ### Create Project Post Comment Example Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of making a POST request to create a new comment on a project post. Ensure the Content-Type is set to application/json. ```http POST /project/v1/projects/123/posts/456/logs Content-Type: application/json { "body": { "content": "검토 완료했습니다.", "mimeType": "text/x-markdown" } } ``` -------------------------------- ### List Project Post Comments (Latest First) Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of a GET request to retrieve a list of comments for a project post, ordered by creation date in descending order. ```http GET /project/v1/projects/123/posts/456/logs?page=0&size=20&order=-createdAt ``` -------------------------------- ### Wiki Page Creation with Referrers Example Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-create-api.md Example of creating a wiki page that includes referrer information. The 'referrers' field specifies members who are associated with the wiki page. ```bash POST /wiki/v1/wikis/wiki-123/pages Content-Type: application/json { "parentPageId": "parent-page-123", "subject": "팀 회의 위키", "body": { "mimeType": "text/x-markdown", "content": "# 팀 회의 위키\n\n## 참석자\n- 홍길동\n- 김철수" }, "referrers": [ { "type": "member", "member": { "organizationMemberId": "member-123" } } ] } ``` -------------------------------- ### Update Project Post Comment Example Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of a PUT request to update an existing comment on a project post. Provide the updated content and MIME type. ```http PUT /project/v1/projects/123/posts/456/logs/789 Content-Type: application/json { "body": { "content": "수정된 내용입니다.", "mimeType": "text/x-markdown" } } ``` -------------------------------- ### Retrieve Specific Project Post Comment Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of a GET request to retrieve a single, specific comment by its log ID. ```http GET /project/v1/projects/123/posts/456/logs/789 ``` -------------------------------- ### Get Post Details Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Fetches the complete details of a specific task, including its title, body, assignees, status, and priority. ```json { "name": "dooray_project_get_post", "arguments": { "project_id": "backend-team", "post_id": "6666666666666666666" } } ``` -------------------------------- ### ProjectResolver Internal Example (Kotlin) Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Demonstrates how ProjectResolver maps project codes to IDs using a cache. It handles cache misses by updating the project list from the Dooray API. ```kotlin // 내부 동작 예시 (Kotlin) val resolver = ProjectResolver(doorayHttpClient) // 프로젝트 코드로 ID 조회 (대소문자 무관) val projectId = resolver.resolveProjectId("backend-team") // → "4444444444444444444" (실제 Dooray 프로젝트 ID) // 이미 ID를 알고 있는 경우도 그대로 통과 val sameId = resolver.resolveProjectId("4444444444444444444") // → "4444444444444444444" // 존재하지 않는 코드는 가용 코드 목록과 함께 에러 // ToolException: 프로젝트를 찾을 수 없습니다: 'unknown'. // 사용 가능한 프로젝트 코드: [backend-team, frontend-team, ...] ``` -------------------------------- ### Successful Project List Response (200) Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-api.md Example of a successful response when querying for accessible projects. Includes project details and pagination information. ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "Success" }, "result": [ { "id": "1", "code": "techcenter", "description": "기술센터 업무용 프로젝트 입니다.", "state": "active", "scope": "public", "type": "project", "organization": { "id": "1" }, "drive": { "id": "1" }, "wiki": { "id": "1" } } ], "totalCount": 1 } ``` -------------------------------- ### GET /project/v1/projects - Default Query Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-api.md Retrieves a list of active, public projects that the current member has access to. Defaults to page 0, size 100. ```http GET /project/v1/projects?member=me&page=0&size=100&type=public&scope=private&state=active ``` -------------------------------- ### Delete Project Post Comment Example Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of a DELETE request to remove a specific comment from a project post. ```http DELETE /project/v1/projects/123/posts/456/logs/789 ``` -------------------------------- ### Successful Wiki Page Update Response Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-api.md Example of a successful response (200 OK) after updating a wiki page. It indicates success and returns null for the result. ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "Success" }, "result": null } ``` -------------------------------- ### Get Project Post Comments Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieve a list of comments for a project post with pagination and sorting options. ```json { "name": "dooray_project_get_post_comments", "arguments": { "project_id": "backend-team", "post_id": "7777777777777777777", "page": 0, "size": 20, "order": "-createdAt" } } ``` -------------------------------- ### GET /project/v1/projects Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-api.md Retrieves a list of accessible projects. Supports filtering by member, page, size, type, scope, and state. ```APIDOC ## GET /project/v1/projects ### Description Retrieves a list of accessible projects. Supports filtering by member, page, size, type, scope, and state. ### Method GET ### Endpoint /project/v1/projects ### Parameters #### Query Parameters - **member** (string) - Optional - `me` to filter projects the current user is a member of. - **page** (integer) - Optional - Page number, starting from 0. Defaults to 0. - **size** (integer) - Optional - Number of projects per page, maximum 100. Defaults to 20. - **type** (string) - Optional - Project type: `private`, `public`. Defaults to `public`. - **scope** (string) - Optional - Access scope: `private`, `public`. Defaults to `private`. - **state** (string) - Optional - Project state: `active`, `archived`, `deleted`. ### Response #### Success Response (200) - **header** (object) - Contains information about the request success. - **isSuccessful** (boolean) - Indicates if the request was successful. - **resultCode** (integer) - The result code of the operation. - **resultMessage** (string) - A message describing the result. - **result** (array) - An array of project objects. - **id** (string) - Project ID. - **code** (string) - Project code. - **description** (string) - Project description. - **state** (string) - Project state. - **scope** (string) - Access scope. - **type** (string) - Project type. - **organization.id** (string) - Organization ID. - **drive.id** (string) - Drive ID. - **wiki.id** (string) - Wiki ID. - **totalCount** (integer) - The total number of projects available. #### Response Example { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "Success" }, "result": [ { "id": "1", "code": "techcenter", "description": "기술센터 업무용 프로젝트 입니다.", "state": "active", "scope": "public", "type": "project", "organization": { "id": "1" }, "drive": { "id": "1" }, "wiki": { "id": "1" } } ], "totalCount": 1 } ### HTTP 응답 코드 - 200: Success - 400: Bad Request - 401: Unauthorized - 403: Forbidden - 404: Not Found - 500: Internal Server Error ### 사용 예시 #### 기본 조회 (활성화된 프로젝트, 최대 100개) ``` GET /project/v1/projects?member=me&page=0&size=100&type=public&scope=private&state=active ``` #### 보관된 프로젝트 조회 ``` GET /project/v1/projects?member=me&state=archived ``` #### 개인 프로젝트 포함 조회 ``` GET /project/v1/projects?member=me&type=private,public ``` ``` -------------------------------- ### GET /project/v1/projects - Include Private Projects Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-api.md Retrieves a list of projects, including both private and public types, that the current member has access to. Defaults to page 0, size 20. ```http GET /project/v1/projects?member=me&type=private,public ``` -------------------------------- ### Update Wiki Page: Subject and Body Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-api.md Example of updating both the subject and body of a wiki page using a PUT request. Ensure the Content-Type is set to application/json. ```bash PUT /wiki/v1/wikis/1/pages/123 Content-Type: application/json { "subject": "업데이트된 위키 제목", "body": { "mimeType": "text/x-markdown", "content": "# 업데이트된 본문\n\n새로운 내용입니다." } } ``` -------------------------------- ### Creator Type: Internal Member Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of the creator object when the comment is made by an internal member. ```json { "creator": { "type": "member", "member": { "organizationMemberId": "1" } } } ``` -------------------------------- ### Creator Type: Email User Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Example of the creator object when the comment is made by an email user. ```json { "creator": { "type": "emailUser", "emailUser": { "emailAddress": "user@example.com", "name": "사용자명" } } } ``` -------------------------------- ### Get Specific Project Post Comment Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Retrieves the detailed content of a specific project post comment. ```APIDOC ## GET /project/v1/projects/{project-id}/posts/{post-id}/logs/{log-id} ### Description Retrieves the detailed content of a specific project post comment. ### Method GET ### Endpoint /project/v1/projects/{project-id}/posts/{post-id}/logs/{log-id} ### Response #### Success Response (200) - **result** (object) - The comment details. - **id** (string) - Comment ID. - **post.id** (string) - Post ID. - **type** (string) - Log type: `comment`, `event`. - **subtype** (string) - Subtype: `general`, `from_email`, `sent_email`. - **createdAt** (string) - Creation time (ISO 8601). - **creator** (object) - Creator information. - **mailUsers** (object) - Email user information. - **body** (object) - Comment body. - **mimeType** (string) - MIME type of the body content. - **content** (string) - The content of the comment. - **files** (array) - Array of file objects associated with the comment. - **id** (string) - File ID. - **name** (string) - File name. - **size** (integer) - File size in bytes. #### Response Example ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "" }, "result": { "id": "댓글ID", "post": { "id": "업무ID" }, "type": "comment", "subtype": "general", "createdAt": "2014-10-08T19:23:32+09:00", "creator": { "type": "member", "member": { "organizationMemberId": "1" } }, "mailUsers": { "from": { "name": "", "emailAddress": "" }, "to": [ { "name": "", "emailAddress": "" } ], "cc": [ { "name": "", "emailAddress": "" } ] }, "body": { "mimeType": "text/html", "content": "댓글 내용" }, "files": [ { "id": "파일ID", "name": "파일명", "size": 1024 } ] } } ``` ``` -------------------------------- ### Get Project Post Comments Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Retrieves a list of comments for a specific project post, with options for pagination and sorting. ```APIDOC ## GET /project/v1/projects/{project-id}/posts/{post-id}/logs ### Description Retrieves a list of comments for a specific project post. ### Method GET ### Endpoint /project/v1/projects/{project-id}/posts/{post-id}/logs ### Query Parameters - **page** (integer) - Optional - Page number (0-indexed). Default: 0. - **size** (integer) - Optional - Page size (max 100). Default: 20. - **order** (string) - Optional - Sorting condition: `createdAt` (oldest first), `-createdAt` (newest first). Default: `createdAt`. ### Response #### Success Response (200) - **totalCount** (integer) - The total number of comments. - **result** (array) - An array of comment objects. - **id** (string) - Comment ID. - **post.id** (string) - Post ID. - **type** (string) - Log type: `comment`, `event`. - **subtype** (string) - Subtype: `general`, `from_email`, `sent_email`. - **createdAt** (string) - Creation time (ISO 8601). - **modifiedAt** (string) - Modification time (ISO 8601). - **creator** (object) - Creator information. - **mailUsers** (object) - Email user information. - **body** (object) - Comment body. - **mimeType** (string) - MIME type of the body content. - **content** (string) - The content of the comment. #### Response Example ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "" }, "totalCount": 1, "result": [ { "id": "1", "post": { "id": "업무ID" }, "type": "comment", "subtype": "general", "createdAt": "2014-10-08T19:23:32+09:00", "modifiedAt": "2014-10-08T19:23:32+09:00", "creator": { "type": "member", "member": { "organizationMemberId": "1" } }, "mailUsers": { "from": { "name": "", "emailAddress": "" }, "to": [ { "name": "", "emailAddress": "" } ], "cc": [ { "name": "", "emailAddress": "" } ] }, "body": { "mimeType": "text/x-markdown", "content": "최종 기획 확인 바랍니다." } } ] } ``` ``` -------------------------------- ### List Dooray Projects Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieves a list of accessible projects. Use this to get project IDs or codes for subsequent API calls. ```json { "name": "dooray_project_list_projects", "arguments": { "page": 0, "size": 50 } } ``` ```json // 응답 예시 { "data": [ { "id": "4444444444444444444", "code": "backend-team", "name": "백엔드 팀" }, { "id": "5555555555555555555", "code": "frontend-team", "name": "프론트엔드 팀" } ] } ``` -------------------------------- ### Update Wiki Page: Body Only Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-api.md Example of updating only the body of a wiki page. The request body should contain the 'body' field with mimeType and content. ```bash PUT /wiki/v1/wikis/1/pages/123 Content-Type: application/json { "body": { "mimeType": "text/x-markdown", "content": "# 업데이트된 본문\n\n새로운 내용입니다." } } ``` -------------------------------- ### GET /project/v1/projects - Archived Projects Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-api.md Retrieves a list of archived projects that the current member has access to. Defaults to page 0, size 20. ```http GET /project/v1/projects?member=me&state=archived ``` -------------------------------- ### Update Wiki Page: Subject Only Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-api.md Example of updating only the subject of a wiki page. The request body should contain the 'subject' field. ```bash PUT /wiki/v1/wikis/1/pages/123 Content-Type: application/json { "subject": "업데이트된 위키 제목" } ``` -------------------------------- ### Get Project Post Comments Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Retrieves a list of comments for a specific post within a project, sorted by creation date in descending order. ```APIDOC ## GET /project/v1/projects/{project-id}/posts/{post-id}/logs ### Description Retrieves a list of comments for a specific post within a project, sorted by creation date in descending order. ### Method GET ### Endpoint /project/v1/projects/{project-id}/posts/{post-id}/logs ### Query Parameters - **page** (integer) - Optional - The page number for pagination. - **size** (integer) - Optional - The number of items per page. - **order** (string) - Optional - The sorting order. Use '-createdAt' for descending order by creation date. ``` -------------------------------- ### Get Specific Project Post Comment Success Response Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md This JSON structure represents a successful response when retrieving a single comment. It includes details like attachments if any. ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "" }, "result": { "id": "댓글ID", "post": { "id": "업무ID" }, "type": "comment", "subtype": "general", "createdAt": "2014-10-08T19:23:32+09:00", "creator": { "type": "member", "member": { "organizationMemberId": "1" } }, "mailUsers": { "from": { "name": "", "emailAddress": "" }, "to": [ { "name": "", "emailAddress": "" } ], "cc": [ { "name": "", "emailAddress": "" } ] }, "body": { "mimeType": "text/html", "content": "댓글 내용" }, "files": [ { "id": "파일ID", "name": "파일명", "size": 1024 } ] } } ``` -------------------------------- ### Build and Run Dooray MCP Server Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Instructions for building the JAR, running the server locally with .env file support, direct execution, and Docker image creation/execution. ```bash # Build JAR ./gradlew clean shadowJar # Run locally (auto-loads .env file) ./gradlew runLocal # Direct execution java -jar build/libs/dooray-mcp-server-0.4.1-all.jar # Build Docker image docker build -t dooray-mcp:local --build-arg VERSION=0.4.1 . # Run with Docker Hub image docker run \ -e DOORAY_API_KEY="your_api_key" \ -e DOORAY_BASE_URL="https://api.dooray.com" \ bifos/dooray-mcp:latest # Run tests ./gradlew test CI=true ./gradlew test # Exclude integration tests ``` -------------------------------- ### Set Up Environment Variables for Dooray MCP Server Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Configure essential environment variables for API key and base URL, along with optional settings for logging and cache TTL. ```bash export DOORAY_API_KEY="your_dooray_api_key" export DOORAY_BASE_URL="https://api.dooray.com" # Optional environment variables export DOORAY_LOG_LEVEL="WARN" # DEBUG | INFO | WARN | ERROR (Default: WARN) export DOORAY_HTTP_LOG_LEVEL="WARN" # ALL | HEADERS | BODY | INFO | WARN (Default: NONE) export DOORAY_PROJECT_CACHE_TTL_MINUTES=5 # Project cache TTL (minutes, Default: 5) ``` -------------------------------- ### Call dooray_wiki_create_page Tool Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Create a new wiki page using Markdown content. Requires `wiki_id` and `parent_page_id`, which should be obtained beforehand using `dooray_wiki_list_pages`. ```json { "name": "dooray_wiki_create_page", "arguments": { "wiki_id": "1234567890123456789", "parent_page_id": "1111111111111111111", "subject": "New Feature Guide", "body": "## Overview\n\nThis document is a guide for the new feature.\n\n### Usage\n\n```bash\nnpm install new-feature\n```" } } ``` ```json // Success response { "data": { "id": "3333333333333333333" }, "message": "✅ Successfully created wiki page (Page ID: 3333333333333333333, Parent Page ID: 1111111111111111111)" } ``` -------------------------------- ### Add New MCP Tool Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Define a new tool with its schema and handler function. Ensure the tool is registered in DoorayMcpServer.kt. The input schema requires 'project_id' and a custom parameter, with 'project_id' being a common property. ```kotlin // 1. tools/ 디렉토리에 새 파일 생성: MyNewTool.kt fun myNewTool(): Tool { return Tool( name = "dooray_my_new_action", description = "새 도구 설명", inputSchema = ToolSchema( properties = buildJsonObject { projectIdProperty() // 공통 project_id 속성 postIdProperty("업무 ID") // 공통 post_id 속성 putJsonObject("custom_param") { put("type", "string") put("description", "커스텀 파라미터 설명") } }, required = listOf("project_id", "custom_param") ) ) } fun myNewToolHandler( doorayClient: DoorayClient, projectResolver: ProjectResolver ): suspend (ClientConnection, CallToolRequest) -> CallToolResult { return { _, request -> toolHandler { val projectId = projectResolver.resolveProjectId( request.requireParam("project_id", "MISSING_PROJECT_ID", "에러 메시지") ) val param = request.requireParam("custom_param", "MISSING_PARAM", "에러 메시지") // doorayClient 호출... successResult(data = mapOf("result" to "ok"), message = "✅ 성공") } } } // 2. DoorayMcpServer.kt의 registerTool() 에 등록 addTool(myNewTool(), myNewToolHandler(doorayHttpClient, projectResolver)) ``` -------------------------------- ### Configure MCP Client for Dooray Server Source: https://context7.com/jon890/dooray-mcp-server/llms.txt JSON configuration for integrating the Dooray MCP Server with clients like Claude Desktop, specifying command, arguments, and environment variables. ```json { "mcpServers": { "dooray": { "command": "java", "args": ["-jar", "/path/to/dooray-mcp-server-0.4.1-all.jar"], "env": { "DOORAY_API_KEY": "your_api_key", "DOORAY_BASE_URL": "https://api.dooray.com" } } } } ``` -------------------------------- ### Create Wiki Page Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-create-api.md Creates a new wiki page within a specified wiki. Supports Markdown format for content and allows attaching files and setting referrers. ```APIDOC ## POST /wiki/v1/wikis/{wiki-id}/pages ### Description Creates a new wiki page. ### Method POST ### Endpoint /wiki/v1/wikis/{wiki-id}/pages ### Parameters #### Path Parameters - **wiki-id** (string) - Required - The ID of the wiki. #### Request Headers - **Content-Type** (string) - Required - application/json #### Request Body - **parentPageId** (string) - Required - The ID of the parent wiki page. - **subject** (string) - Required - The title of the wiki page. - **body** (object) - Required - Information about the wiki page body. - **mimeType** (string) - Required - MIME type (e.g., text/x-markdown). - **content** (string) - Required - The content of the wiki page. - **attachFileIds** (string[]) - Optional - A list of attachment file IDs. - **referrers** (object[]) - Optional - A list of referrers to set. - **type** (string) - Required - Referrer type (fixed value: "member"). - **member** (object) - Required - Member information for the referrer. - **organizationMemberId** (string) - Required - The organization member ID. ### Request Example ```json { "parentPageId": "{parentPageId}", "subject": "두레이 사용법", "body": { "mimeType": "text/x-markdown", "content": "위키 본문 내용" }, "attachFileIds": ["{attachFileId}"], "referrers": [ { "type": "member", "member": { "organizationMemberId": "" } } ] } ``` ### Response #### Success Response (201) - **header.isSuccessful** (boolean) - Indicates if the operation was successful. - **header.resultCode** (number) - Result code (0 for success). - **header.resultMessage** (string) - Message indicating the result of the operation. - **result.id** (string) - The ID of the created wiki page. - **result.wikiId** (string) - The ID of the wiki. - **result.parentPageId** (string) - The ID of the parent page. - **result.version** (number) - The version of the wiki page. #### Response Example ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "Success" }, "result": { "id": "123456", "wikiId": "wiki-id", "parentPageId": "parent-page-id", "version": 1 } } ``` ### HTTP 응답 코드 - **201**: 생성 성공 - **400**: 잘못된 요청 - **401**: 인증 실패 - **403**: 권한 없음 - **404**: 리소스를 찾을 수 없음 - **500**: 서버 내부 오류 ``` -------------------------------- ### dooray_wiki_create_page Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Creates a new wiki page using Markdown format. The `parent_page_id` is mandatory and must be previously retrieved using `dooray_wiki_list_pages`. ```APIDOC ## dooray_wiki_create_page ### Description Creates a new wiki page using Markdown format. The `parent_page_id` is mandatory and must be previously retrieved using `dooray_wiki_list_pages`. ### Arguments - **wiki_id** (string) - Required - The ID of the wiki project. - **parent_page_id** (string) - Required - The ID of the parent page where the new page will be created. - **subject** (string) - Required - The title of the new wiki page. - **body** (string) - Required - The content of the new wiki page in Markdown format. ``` -------------------------------- ### Get Specific Project Post Comment Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Retrieves a single comment by its ID for a specific post within a project. ```APIDOC ## GET /project/v1/projects/{project-id}/posts/{post-id}/logs/{log-id} ### Description Retrieves a single comment by its ID for a specific post within a project. ### Method GET ### Endpoint /project/v1/projects/{project-id}/posts/{post-id}/logs/{log-id} ### Parameters #### Path Parameters - **log-id** (string) - Required - The ID of the comment to retrieve. ``` -------------------------------- ### Call dooray_wiki_list_projects Tool Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Use this tool to retrieve a list of accessible wiki projects. It's useful for finding wiki IDs needed for other wiki-related tools. Pagination parameters can be adjusted. ```json { "name": "dooray_wiki_list_projects", "arguments": { "page": 0, "size": 200 } } ``` ```json // Response example { "content": [ { "type": "text", "text": "📚 Successfully retrieved Dooray wiki project list (first page, total 3 pages)\n\n💡 Next step: Use dooray_wiki_list_pages to view wiki pages for a specific project.", "data": [ { "id": "1234567890123456789", "code": "my-team", "name": "My Team Wiki" }, { "id": "9876543210987654321", "code": "dev-docs", "name": "Dev Documentation" } ] } ] } ``` -------------------------------- ### List Project Workflows Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieves the list of available workflows (task statuses) for a project. Use the returned `id` for `dooray_project_set_post_workflow`. ```json { "name": "dooray_project_list_workflows", "arguments": { "project_id": "backend-team" } } ``` ```json // 응답 예시 { "data": [ { "id": "wf-001", "name": "등록됨", "class": "registered" }, { "id": "wf-002", "name": "진행중", "class": "working" }, { "id": "wf-003", "name": "완료됨", "class": "closed" } ], "message": "🔄 프로젝트 워크플로우 목록을 성공적으로 조회했습니다 (총 3개)" } ``` -------------------------------- ### dooray_project_create_post Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Creates a new post (task) within a project. Requires at least one assignee or CC recipient. Priority can be set to `highest`, `high`, `normal`, `low`, `lowest`, or `none`. The `project_id` can be the project's code or ID. ```APIDOC ## dooray_project_create_post — 업무 생성 ### Description Creates a new post (task). Requires at least one of `to_member_ids` or `to_group_ids`. Priority can be set to `highest`, `high`, `normal`, `low`, `lowest`, or `none`. The `project_id` can accept either the project code (name) or ID. ### Arguments - **project_id** (string) - Required - The ID or code of the project. - **subject** (string) - Required - The title of the post. - **body** (string) - Optional - The content of the post. - **to_member_ids** (array of strings) - Optional - IDs of members to assign the task to. - **cc_member_ids** (array of strings) - Optional - IDs of members to CC on the task. - **priority** (string) - Optional - The priority of the task (`highest`, `high`, `normal`, `low`, `lowest`, `none`). - **due_date** (string) - Optional - The due date for the task in ISO 8601 format. - **parent_post_id** (string) - Optional - The ID of the parent post for creating a hierarchical task. ``` -------------------------------- ### dooray_project_list_workflows Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieves a list of workflows (task statuses) defined for a project. Returns the `id` and `class` of each workflow, which is needed for `dooray_project_set_post_workflow`. ```APIDOC ## dooray_project_list_workflows — 워크플로우 목록 조회 ### Description Retrieves a list of workflows (task statuses) defined for a project. Returns the `id` and `class` of each workflow, which is needed for `dooray_project_set_post_workflow`. ### Arguments - **project_id** (string) - Required - The ID or code of the project. ``` -------------------------------- ### dooray_project_list_posts Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieves a list of posts (tasks) within a project, with various filtering and sorting options. Filtering is possible by workflow class, assignee, due date, and subject. ```APIDOC ## dooray_project_list_posts — 업무 목록 조회 ### Description Retrieves a list of posts (tasks) within a project with various filter and sort conditions. Filtering is possible by workflow class (`backlog`, `registered`, `working`, `closed`), assignee, due date, and subject search term. ### Arguments - **project_id** (string) - Required - The ID or code of the project. - **page** (integer) - Optional - The page number to retrieve. - **size** (integer) - Optional - The number of posts to return per page. - **post_workflow_classes** (array of strings) - Optional - Filters posts by their workflow class (e.g., `"working"`). - **to_member_ids** (array of strings) - Optional - Filters posts assigned to specific members. - **subjects** (string) - Optional - Filters posts by a search term in their subject. - **order** (string) - Optional - Specifies the sorting order (e.g., `-postDueAt` for due date descending). - **due_at** (string) - Optional - Filters posts by their due date. ``` -------------------------------- ### Create Project Post Comment Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Use this to create a comment on a project post. You can specify the content type as text/x-markdown or text/html. ```json { "name": "dooray_project_create_post_comment", "arguments": { "project_id": "backend-team", "post_id": "7777777777777777777", "content": "## 수정 완료\n\n원인을 파악하고 수정했습니다.\n\n- 원인: 세션 만료 처리 누락\n- 수정: 만료 시 401 반환 및 재로그인 유도", "mime_type": "text/x-markdown" } } ``` -------------------------------- ### dooray_project_create_post_comment Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Creates a comment for a post within a project. Supports markdown or HTML content. ```APIDOC ## POST /project/v1/projects/{projectId}/posts/{postId}/logs ### Description Creates a comment for a post within a project. Supports markdown or HTML content. ### Method POST ### Endpoint /project/v1/projects/{projectId}/posts/{postId}/logs ### Parameters #### Path Parameters - **projectId** (string) - Required - The ID of the project. - **postId** (string) - Required - The ID of the post. #### Request Body - **content** (string) - Required - The content of the comment. - **mime_type** (string) - Optional - The MIME type of the content (e.g., `text/x-markdown`, `text/html`). Defaults to `text/x-markdown`. ### Request Example ```json { "content": "## 수정 완료\n\n원인을 파악하고 수정했습니다.\n\n- 원인: 세션 만료 처리 누락\n- 수정: 만료 시 401 반환 및 재로그인 유도", "mime_type": "text/x-markdown" } ``` ### Response #### Success Response (200) - **data.id** (string) - The ID of the created comment. - **message** (string) - A confirmation message. #### Response Example ```json { "data": { "id": "log-id-001" }, "message": "업무 댓글이 성공적으로 생성되었습니다. (댓글 ID: log-id-001)" } ``` ``` -------------------------------- ### Dooray REST API Endpoints - Project Source: https://context7.com/jon890/dooray-mcp-server/llms.txt List of Project API endpoints available through the internal HTTP client. ```text # 프로젝트 API GET /project/v1/projects # 프로젝트 목록 GET /project/v1/projects/{projectId}/members # 프로젝트 멤버 GET /project/v1/projects/{projectId}/workflows # 워크플로우 목록 ``` -------------------------------- ### Call dooray_wiki_list_pages Tool Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieve a list of pages within a specific wiki project or under a parent page. Specify `parent_page_id` to filter for sub-pages. ```json { "name": "dooray_wiki_list_pages", "arguments": { "wiki_id": "1234567890123456789" } } ``` ```json // Retrieve only specific sub-pages using parent_page_id { "name": "dooray_wiki_list_pages", "arguments": { "wiki_id": "1234567890123456789", "parent_page_id": "1111111111111111111" } } ``` -------------------------------- ### Project Post Comment Creation Success Response Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md This is the expected JSON response upon successful creation of a project post comment. ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "" }, "result": { "id": "댓글ID" } } ``` -------------------------------- ### Create New Post Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Creates a new task within a project. Requires at least one assignee (`to_member_ids` or `to_group_ids`) and supports setting priority, due date, and parent task. ```json { "name": "dooray_project_create_post", "arguments": { "project_id": "backend-team", "subject": "로그인 API 버그 수정", "body": "## 문제\n\n로그인 시 500 에러가 간헐적으로 발생합니다.\n\n## 재현 방법\n1. /api/login 엔드포인트 호출\n2. 응답 확인", "to_member_ids": ["member-id-001"], "cc_member_ids": ["member-id-002"], "priority": "high", "due_date": "2024-12-31T18:00:00+09:00", "parent_post_id": "5555555555555555555" } } ``` ```json // 성공 응답 { "data": { "id": "7777777777777777777" }, "message": "✅ 업무를 성공적으로 생성했습니다 (업무 ID: 7777777777777777777)\n\n💡 다음 가능한 작업:\n- dooray_project_get_post: 생성된 업무 상세 조회\n- dooray_project_list_posts: 프로젝트 업무 목록 조회" } ``` -------------------------------- ### Dooray REST API Endpoints - Wiki Source: https://context7.com/jon890/dooray-mcp-server/llms.txt List of Wiki API endpoints available through the internal HTTP client. ```text # 위키 API GET /wiki/v1/wikis # 위키 목록 GET /wiki/v1/wikis/{wikiId}/pages # 위키 페이지 목록 GET /wiki/v1/wikis/{wikiId}/pages?parentPageId={id} # 하위 페이지 목록 GET /wiki/v1/wikis/{wikiId}/pages/{pageId} # 위키 페이지 상세 POST /wiki/v1/wikis/{wikiId}/pages # 위키 페이지 생성 (201) PUT /wiki/v1/wikis/{wikiId}/pages/{pageId} # 위키 페이지 수정 ``` -------------------------------- ### Successful Wiki Page Creation Response (201) Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/wiki-create-api.md The JSON response indicating successful creation of a wiki page, including header and result details like the new page ID. ```json { "header": { "isSuccessful": true, "resultCode": 0, "resultMessage": "Success" }, "result": { "id": "123456", "wikiId": "wiki-id", "parentPageId": "parent-page-id", "version": 1 } } ``` -------------------------------- ### dooray_wiki_list_projects Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Retrieves a list of all accessible wiki projects. This is useful for finding a specific wiki's ID, which can then be used as `wiki_id` in `dooray_wiki_list_pages`. ```APIDOC ## dooray_wiki_list_projects ### Description Retrieves a list of all accessible wiki projects. This is useful for finding a specific wiki's ID, which can then be used as `wiki_id` in `dooray_wiki_list_pages`. ### Arguments - **page** (integer) - Optional - The page number to retrieve. - **size** (integer) - Optional - The number of items per page. ``` -------------------------------- ### List Project Post Comments Request Parameters Source: https://github.com/jon890/dooray-mcp-server/blob/main/docs/project-post-comment.md Parameters for querying a list of comments for a project post. You can control pagination and sorting. ```json { "page": 0, "size": 20, "order": "createdAt" } ``` -------------------------------- ### dooray_wiki_get_page Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Fetches the detailed information of a specific wiki page, including its title, body (in Markdown format), author, and last updated date. ```APIDOC ## dooray_wiki_get_page ### Description Fetches the detailed information of a specific wiki page, including its title, body (in Markdown format), author, and last updated date. ### Arguments - **wiki_id** (string) - Required - The ID of the wiki project. - **page_id** (string) - Required - The ID of the wiki page. ``` -------------------------------- ### List Project Members Source: https://context7.com/jon890/dooray-mcp-server/llms.txt Fetches the list of members within a specific project. This is useful for finding `organizationMemberId` values needed for assigning tasks. ```json { "name": "dooray_project_list_members", "arguments": { "project_id": "backend-team", "page": 0, "size": 100 } } ``` ```json // 응답 예시 { "data": [ { "organizationMemberId": "member-id-001", "name": "김개발", "emailAddress": "dev.kim@company.com" }, { "organizationMemberId": "member-id-002", "name": "이디자인", "emailAddress": "design.lee@company.com" } ], "message": "👥 프로젝트 멤버 목록을 성공적으로 조회했습니다 (총 2명)" } ```