Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DOORAY_API_TOKENYesYour Dooray API token (can be generated from Dooray personal settings > API > Personal authentication token menu)

Tools

Functions exposed to the LLM to take actions

NameDescription
get-my-member-info

Get information about the authenticated user.

This tool retrieves your Dooray member profile using your API token. Most importantly, it returns your member ID which is needed for other operations like filtering tasks by assignee.

No parameters needed - it automatically uses your authentication token.

Examples:

  • Get my info: {} (empty parameters)

  • "What's my Dooray member ID?"

  • "Show my Dooray profile"

Returns your complete member profile including:

  • id: Your member ID (important for task queries)

  • name, email, organization

  • locale, timezone settings

  • display preferences

This is often the first tool to call to get your member ID for use in other tools like list-tasks.

get-project-list

Get list of active projects that you belong to.

This tool retrieves only active projects where you are a member. Archived projects are excluded.

Note: Returns compact response with essential fields only. For complete project details, use get-project.

IMPORTANT: When the user provides a specific Dooray URL (e.g., "https://nhnent.dooray.com/task/PROJECT_ID"), do NOT use this tool. Instead, extract the PROJECT_ID from the URL and call get-project directly to get information about that specific project.

This tool is for browsing your active projects when no specific project URL or ID is provided.

Examples:

  • Get all your active projects: {} (empty parameters)

  • Get second page with 50 items: {"page": 1, "size": 50}

Returns a paginated list with project id and name (project code) for each project.

get-project

Get detailed information about a specific Dooray project.

This tool retrieves complete details of a single project including its configuration, scope, organization, and category information.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID" or "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

IMPORTANT: When a specific project URL is provided, use this tool directly instead of calling get-project-list first.

Examples:

  • From URL: Extract "1769381697328002548" from "https://nhnent.dooray.com/task/1769381697328002548" → {"projectId": "1769381697328002548"}

  • From URL with task: Extract "1769381697328002548" from "https://nhnent.dooray.com/task/1769381697328002548/4143841687558152504" → {"projectId": "1769381697328002548"}

  • Direct ID: {"projectId": "123456"}

  • "Show me details of project 123456"

Returns project information including:

  • id, code, name: Basic project identifiers

  • description: Project description

  • scope: private or public

  • organizationId: Organization this project belongs to

  • projectCategoryId: Category ID (null if no category)

  • projectType: default, task, or issue

  • state: active or archived

Use this to get full details about a specific project when you have its project ID or URL.

get-task-list

Get list of tasks in a Dooray project with powerful filtering and sorting.

IMPORTANT: projectId is REQUIRED. This tool fetches tasks from a specific project.

Note: Returns compact response with essential fields only. For complete task details, use get-task.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID" or "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter. When a URL is provided, use get-project for project info instead of get-project-list.

Member ID Filters (use organizationMemberId from get-my-member-info):

  • toMemberIds: Tasks assigned to specific members

  • ccMemberIds: Tasks where members are in CC

  • fromMemberIds: Tasks created by specific members

Workflow Filters:

  • postWorkflowClasses: ["backlog", "registered", "working", "closed"]

  • postWorkflowIds: Project-specific workflow IDs

Date Filters (flexible patterns):

  • "today" - Today's tasks

  • "thisweek" - This week's tasks

  • "prev-7d" - Last 7 days

  • "next-7d" - Next 7 days

  • ISO8601 range: "2021-01-01T00:00:00+09:00~2021-01-10T00:00:00+09:00"

Examples:

  1. All tasks in project: {"projectId": "123456"}

  2. Tasks assigned to me: {"projectId": "123456", "toMemberIds": ["my-org-member-id"]}

  3. Tasks in "working" status: {"projectId": "123456", "postWorkflowClasses": ["working"]}

  4. Tasks due today: {"projectId": "123456", "dueAt": "today"}

  5. Recent tasks (sorted by update time): {"projectId": "123456", "updatedAt": "prev-7d", "order": "-postUpdatedAt"}

  6. Tasks with specific milestone and tags: {"projectId": "123456", "milestoneIds": ["milestone123"], "tagIds": ["tag456"]}

Sorting:

  • Default: Tasks are sorted by most recently updated first (-postUpdatedAt)

  • Custom: Use order parameter with: postDueAt, postUpdatedAt, createdAt

  • Prefix with - for descending (e.g., "-createdAt")

Returns paginated task list with id, number, subject, status, priority, dueDate, assignees, tags, and milestone.

get-task

Get detailed information about a specific task.

This tool retrieves complete details of a task including its full body content, attachments, workflow status, assignees, and all metadata.

URL Pattern Recognition - Two formats supported:

  1. Project-scoped URL: "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID"

    • Extract the first numeric ID after "/task/" as projectId (optional)

    • Extract the second numeric ID as taskId (required)

    • Example: "https://nhnent.dooray.com/task/1769381697328002548/4206132384174602537" → {"taskId": "4206132384174602537", "projectId": "1769381697328002548"}

  2. Task-only URL: "https://nhnent.dooray.com/project/tasks/TASK_ID"

    • Extract the numeric ID after "/tasks/" as taskId

    • Example: "https://nhnent.dooray.com/project/tasks/4206132384174602537" → {"taskId": "4206132384174602537"}

IMPORTANT:

  • taskId is REQUIRED, projectId is OPTIONAL

  • The taskId is the unique identifier (ID) from the URL, NOT the sequential task number shown in the UI

  • You can fetch task details with just the taskId without knowing the projectId

  • When a specific task URL is provided, use this tool directly instead of calling get-project-list first

  • To find taskId from task descriptions, use get-task-list to search and get task IDs

Examples:

  • From URL pattern 1: {"taskId": "4206132384174602537", "projectId": "1769381697328002548"}

  • From URL pattern 2: {"taskId": "4206132384174602537"}

  • Just taskId: {"taskId": "789012345"}

  • With both IDs: {"taskId": "789012345", "projectId": "123456"}

Returns complete task information including:

  • Basic info: id, number, subject, taskNumber (PROJECT-CODE/NUMBER format)

  • Project: project object with id and code

  • Status: workflowClass (registered/working/closed), workflow (id and name), closed flag, priority

  • Dates: createdAt, updatedAt, dueDate, dueDateFlag

  • Content: body with mimeType (text/x-markdown or text/html) and content

  • Hierarchy: parent task information (id, number, subject) if this is a subtask

  • People: users object with from (creator), to (assignees), cc (watchers)

  • Organization: milestone (id, name), tags array (id, name)

  • Files: files array with attachments (id, name, size)

create-task

Create a new task (업무) in a Dooray project. Required fields: projectId and subject.

RECOMMENDED INTERACTIVE WORKFLOW (ask user questions step by step):

  1. Templates: Call get-project-template-list, ask user if they want to use a template

    • If yes: Call get-project-template to get full details, use as defaults for subject/body/tags/assignees/cc/priority

    • Extract tag IDs: template.tags.map(t => t.id)

    • Transform members: template.users.to/cc to {id, type} format

  2. Title & Body: Ask for task title (subject) and content (body)

    • If template selected: Elaborate user's content to fit template structure

    • If no template and no body provided: Ask user for body content before creating task

    • Body format: {"mimeType": "text/x-markdown", "content": "..."}

  3. Assignees & CC: Ask for "to" (담당자) and "cc" (참조)

    • Get options: get-my-member-info (current user), get-project-member-list (members), get-project-member-group-list (groups)

    • Member types: {"id": "...", "type": "member|group|email"}

    • "member": organizationMemberId, "group": group id, "email": email address

  4. Tags: Call get-tag-list, ask which tags to register

    • CRITICAL: Check tagGroup.mandatory=true - MUST select from these groups or task creation fails (500 error)

    • tagGroup.selectOne=true: Select exactly ONE tag from group

    • tagGroup.selectOne=false: Select one or MORE tags from group

Key Settings:

  • Priority: Default "none" if not specified

  • Subtasks: Set parentPostId to create 하위업무

  • URL extraction: "https://nhnent.dooray.com/task/PROJECT_ID" → extract PROJECT_ID

Examples:

  • Simple: {"projectId": "123", "subject": "Fix bug", "tagIds": ["tag1"]}

  • With template: {"projectId": "123", "subject": "[SMS] Issue", "body": {...}, "assignees": [{...}], "tagIds": ["tag1", "tag2"]}

  • Full: {"projectId": "123", "subject": "Deploy", "assignees": [{"id": "user1", "type": "member"}], "cc": [{"id": "user2", "type": "member"}], "priority": "high", "tagIds": ["tag1"]}

Returns: Created task with ID and number.

update-task

Update an existing task in a Dooray project.

RECOMMENDED WORKFLOW (guide for AI assistants):

  1. Fetch Current Task: Call get-task to retrieve current values before updating

    • Preserves existing data when only updating specific fields

    • Shows current assignees, tags, milestone, workflow status

    • Use returned data to know what values to preserve

  2. Determine Changes: Identify what needs updating

    • If changing assignees/cc: Get options from get-my-member-info, get-project-member-list, get-project-member-group-list

    • Member types: {"id": "...", "type": "member|group|email"}

    • "member": organizationMemberId, "group": group id, "email": email address

  3. Handle Tags: Call get-tag-list if updating tags

    • CRITICAL: Check tagGroup.mandatory=true - MUST include tags from all mandatory groups or update fails (500 error)

    • tagGroup.selectOne=true: Select exactly ONE tag from group

    • tagGroup.selectOne=false: Select one or MORE tags from group

    • IMPORTANT: tagIds is a COMPLETE replacement, not additive

  4. Handle Workflow: Use get-project-workflow-list to see available statuses

    • Provide workflowId to change task status

    • Workflow classes: backlog (대기), registered (등록/할 일), working (진행 중), closed (완료)

IMPORTANT NOTES:

  • Complete Replacement: assignees, cc, and tagIds completely REPLACE existing values (not merged)

  • Preserve Data: Only provide fields you want to change; unprovided fields remain unchanged

  • Korean Terms: "to" = 담당자 (assignee), "cc" = 참조 (reference)

  • Priority: Use "none" to remove priority

URL Pattern Recognition: When given a Dooray task URL like "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID":

  • Extract the first numeric ID after "/task/" as projectId

  • Extract the second numeric ID as taskNumber

Examples:

  • Change priority: {"projectId": "123", "taskNumber": 42, "priority": "high"}

  • Update assignees: {"projectId": "123", "taskNumber": 42, "assignees": [{"id": "user123", "type": "member"}]}

  • Change status: {"projectId": "123", "taskNumber": 42, "workflowId": "working"}

  • Update tags: {"projectId": "123", "taskNumber": 42, "tagIds": ["tag1", "tag2"]}

  • Clear milestone: {"projectId": "123", "taskNumber": 42, "milestoneId": null}

Returns: Updated task with all current details.

create-task-comment

Add a comment (댓글) to an existing Dooray task.

This tool creates a comment on a task, separate from editing the task body itself. Use this for:

  • Adding progress updates or status notes

  • Responding to questions or discussions

  • Logging information related to the task

  • Attaching files with context

When to Use:

  • create-task-comment: For adding discussion, updates, or notes (댓글)

  • update-task: For modifying the task description, title, or metadata

URL Pattern Recognition: When given a Dooray task URL like "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID":

  • Extract the first numeric ID after "/task/" as projectId

  • Extract the second numeric ID as taskId

File Attachments:

  • To attach files, first upload them using the file upload API

  • Then provide the returned file IDs in the attachFileIds parameter

  • See: https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

Content Format:

  • Use "text/x-markdown" for markdown formatting (recommended)

  • Use "text/html" for rich HTML content

  • Body format: {"mimeType": "text/x-markdown", "content": "..."}

Examples:

  • Simple comment: { "projectId": "123456", "taskId": "789012", "body": {"mimeType": "text/x-markdown", "content": "Progress update: Completed initial implementation"} }

  • With markdown: { "projectId": "123456", "taskId": "789012", "body": { "mimeType": "text/x-markdown", "content": "## Test Results\n\n- ✅ All unit tests passing\n- ✅ Integration tests passed\n- ⏳ Performance testing in progress" } }

  • With file attachments: { "projectId": "123456", "taskId": "789012", "body": {"mimeType": "text/x-markdown", "content": "See attached screenshots"}, "attachFileIds": ["file123", "file456"] }

Returns: Created comment with ID.

get-task-comment-list

Get list of comments (댓글) on a specific Dooray task.

This tool fetches all comments that have been added to a task. Comments are discussions, updates, or notes added by team members.

URL Pattern Recognition: When given a Dooray task URL like "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID" or "https://nhnent.dooray.com/project/tasks/TASK_ID":

  • Extract the first numeric ID after "/task/" as projectId (if present)

  • Extract the second numeric ID (or the ID after "/tasks/") as taskId

IMPORTANT: Both projectId and taskId are REQUIRED.

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Sorting:

  • Default: createdAt (oldest comments first)

  • Use "-createdAt" to get newest comments first

Note: Returns filtered response with essential fields only (id, creator, body).

Examples:

  • Get all comments (first page): {"projectId": "123456", "taskId": "789012"}

  • Get newest comments first: {"projectId": "123456", "taskId": "789012", "order": "-createdAt"}

  • Get second page: {"projectId": "123456", "taskId": "789012", "page": 1, "size": 20}

Returns a paginated response with totalCount and array of comments containing:

  • id: Comment ID

  • creator: Who wrote the comment (member or emailUser)

    • For members: {"type": "member", "member": {"organizationMemberId": "..."}}

    • For email users: {"type": "emailUser", "emailUser": {"emailAddress": "...", "name": "..."}}

  • body: Comment content with mimeType and content

Use this tool to view discussion history, progress updates, or notes on a task.

update-task-comment

Update an existing comment (댓글) on a Dooray task.

This tool modifies the content or attachments of an existing task comment.

IMPORTANT LIMITATION: Comments created from incoming emails CANNOT be modified. Only regular comments can be updated.

URL Pattern Recognition: When given a Dooray task URL like "https://nhnent.dooray.com/task/PROJECT_ID/TASK_ID" or "https://nhnent.dooray.com/project/tasks/TASK_ID":

  • Extract the first numeric ID after "/task/" as projectId (if present)

  • Extract the second numeric ID (or the ID after "/tasks/") as taskId

  • Use get-task-comment-list to find the comment ID you want to update

REQUIRED: projectId, taskId, and commentId are all required.

Optional Parameters: You can provide either body, attachFileIds, or both. If you only want to update the text, just provide body. If you only want to update attachments, just provide attachFileIds.

File Attachments:

  • To attach files, first upload them using the file upload API

  • Then provide the returned file IDs in the attachFileIds parameter

  • See: https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

Workflow:

  1. Use get-task-comment-list to find the comment you want to update and get its ID

  2. Call update-task-comment with the comment ID and new content/attachments

  3. The comment will be modified immediately

Content Format:

  • Use "text/x-markdown" for markdown formatting (recommended)

  • Use "text/html" for rich HTML content

  • Body format: {"mimeType": "text/x-markdown", "content": "..."}

Examples:

  • Update comment text only: { "projectId": "123456", "taskId": "789012", "commentId": "4219415732999317024", "body": { "mimeType": "text/x-markdown", "content": "## Updated Comment\n\nThis comment has been revised" } }

  • Update with new attachments: { "projectId": "123456", "taskId": "789012", "commentId": "4219415732999317024", "body": { "mimeType": "text/x-markdown", "content": "See updated files" }, "attachFileIds": ["file123", "file456"] }

Returns: Success message upon completion.

get-milestone-list

Get list of milestones for a project.

Milestones are used to organize and track tasks by release or sprint. This tool retrieves all milestones in a project.

Note: Returns compact response with essential fields only.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Examples:

  • Get all milestones: {"projectId": "123456"}

  • Get only open milestones: {"projectId": "123456", "status": "open"}

  • Get only closed milestones: {"projectId": "123456", "status": "closed"}

Returns an array of milestones with id, name, description, dates, and status. Use milestone IDs when creating or updating tasks.

get-tag-list

Get list of tags for a project, grouped by tag groups.

Tags are used to categorize and label tasks. This tool retrieves all available tags organized by their tag groups for better clarity.

Response Format: Returns tags grouped by their tagGroup:

{ "tagGroups": [ { "id": "group1", "name": "Type", "mandatory": true, "selectOne": true, "tags": [ { "id": "tag1", "name": "Bug" }, { "id": "tag2", "name": "Feature" } ] } ] }

CRITICAL - Mandatory Tag Groups: When creating/updating tasks, you MUST include tags from all mandatory tag groups:

  • mandatory: true - At least one tag from this group is required

  • selectOne: true - Exactly ONE tag must be selected from this group

  • selectOne: false - One OR MORE tags must be selected from this group

Failing to provide required tags will result in a 500 error.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Pagination:

  • Default page size is 100 (maximum) to retrieve all tags

  • Use page parameter to get additional pages if totalCount > 100

Examples:

  • Get all tags: {"projectId": "123456"}

  • Get second page: {"projectId": "123456", "page": 1, "size": 100}

Use tag IDs when creating or updating tasks with create-task or update-task tools.

get-project-template-list

Get list of project task templates.

Templates are pre-created task structures with predefined title and body content. This tool retrieves all available templates in a project.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Note: Returns compact response with essential fields only (id and templateName).

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

  • Set size parameter to control items per page (max: 100)

Examples:

  • Get all templates (first page): {"projectId": "123456"}

  • Get second page: {"projectId": "123456", "page": 1, "size": 20}

  • Get with custom page size: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and an array of templates containing id and templateName.

Templates help users quickly create tasks with predefined structure and content, useful for common task types like bug reports, feature requests, or documentation tasks.

get-project-template

Get detailed information about a specific project template.

This tool retrieves complete template details including body, guide, subject, users, tags, and milestone. The returned data is intended for creating new tasks from templates.

IMPORTANT - Full Details Returned: This tool returns ALL template fields (not filtered) because:

  • Template data will be used for creating new tasks

  • Need body, guide, subject, users, tags, milestone for task creation

  • This is a detail view, not a list view

Template Macros: Template macros like ${year}, ${month}, etc. are returned as-is (not interpolated). These can be processed when creating tasks if needed.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

How to get template IDs: Use the get-project-template-list tool to list all templates in a project and get their IDs.

Examples:

  • Get template details: {"projectId": "123456", "templateId": "789012"}

  • "Show me details of template 789012 in project 123456"

Returns complete template information including:

  • id: Template ID

  • templateName: Template name

  • project: Project info (id, code)

  • body: Template body with mimeType and content (markdown or HTML)

  • guide: Template guide/instructions with mimeType and content

  • subject: Default task subject

  • users: Default assignees (to) and CC

  • tags: Default tag IDs

  • milestone: Default milestone (id, name)

  • priority: Default priority level

  • dueDate, dueDateFlag: Default due date settings

  • isDefault: Whether this is the default template

Use this tool to get full template details before creating a new task from the template.

get-project-member-list

Get list of members in a project with their details.

This tool fetches project members and enriches each member with detailed information including name and email address.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Role Filtering:

  • Optionally filter by roles: ["admin"], ["member"], or ["admin", "member"]

  • If not specified, returns all members regardless of role

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Note: Returns compact response with essential fields only (id, name, externalEmailAddress).

Examples:

  • Get all members: {"projectId": "123456"}

  • Get only admins: {"projectId": "123456", "roles": ["admin"]}

  • Get with pagination: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and array of members containing:

  • id: Member ID (organizationMemberId)

  • name: Member's display name

  • externalEmailAddress: Member's email address

Use this tool to find project members for assigning tasks or understanding team composition.

get-project-member-group-list

Get list of member groups in a project.

Member groups are collections of members that can be assigned to tasks as a group. This tool retrieves all member groups configured in a project.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Pagination:

  • Default page size is 20 (maximum: 100)

  • Use page parameter to get additional pages if totalCount > size

Note: Returns compact response with essential fields only (id and code).

Examples:

  • Get all member groups: {"projectId": "123456"}

  • Get with pagination: {"projectId": "123456", "page": 0, "size": 50}

Returns a paginated response with totalCount and array of member groups containing:

  • id: Member group ID

  • code: Member group name/code

Use this tool to find member groups for assigning tasks to groups of members.

get-project-workflow-list

Get list of workflow statuses (업무 상태) for a project.

Workflows represent the task statuses available in a project. There are four workflow classes:

  • backlog: 대기 (waiting/backlog)

  • registered: 등록/할 일 (registered/to-do)

  • working: 진행 중 (in progress)

  • closed: 완료 (completed/done)

Each project may have custom workflows within these classes. Use workflow IDs when creating or updating tasks (e.g., in create-task or update-task tools).

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the numeric ID after "/task/") and use it as the projectId parameter.

Examples:

  • Get all workflows: {"projectId": "1769381697328002548"}

Returns: Array of workflows with id, name, order, and class.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhl8041/dooray-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server