任务管理API服务

Dooray MCP是一个提供任务创建、查询、修改、评论管理、项目成员及状态查询等12种功能的项目管理协议服务。

  • by sunghyun-k
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sunghyun-k/dooray-mcp

使用说明

门道MCP

用于管理Dooray业务的Model Context Protocol(MCP)服务器。

该MCP服务器提供12种工具,包括创建/查看/修改/列表、管理评论、查看项目列表/成员/状态/标签。

基本要求

这个项目 紫外线使用管理Python依赖性。uv是一个快速可靠的Python包管理器。

uv安装

在MacOS上使用Homebrew安装:

brew install uv

其他操作系统的安装方法 uv官方文件请参阅。

安装

步骤1:发放API令牌

在“个性化设置”>“API”>“个性化身份验证令牌”菜单中创建令牌。

  • 令牌具有与已授权帐户相同的权限
  • 使用API所做的工作与用户登录并直接使用Dooray没有区别。

步骤2:设置环境变量

有两种方法可以设置令牌:

方法A:全局设置(推荐)

在用户主目录中设置,以供所有项目使用:

// ~/.claude/settings.json
{
  "env": {
    "DOORAY_API_TOKEN": "your-api-token-here",
    "DOORAY_API_BASE_URL": "https://api.dooray.com" // 선택사항 (기본값: https://api.dooray.com)
  }
}

方法B:按项目设置

在项目目录中设置为仅在特定项目中使用:

// <프로젝트 디렉토리>/.claude/settings.local.json
{
  "env": {
    "DOORAY_API_TOKEN": "your-api-token-here",
    "DOORAY_API_BASE_URL": "https://api.dooray.com" // 선택사항 (기본값: https://api.dooray.com)
  }
}

支持的API服务器

DOORAY_API_BASE_URL 通过环境变量支持多种Dooray环境:

  • 私有云 (默认值): https://api.dooray.com
  • 公共云: https://api.gov-dooray.com
  • 公共业务网云: https://api.gov-dooray.co.kr
  • 金融云: https://api.dooray.co.kr

步骤3:在Claude Code中安装MCP服务器

在Claude Code中运行以下命令安装Dooray MCP服务器:

claude mcp add dooray -- uvx --from git+https://github.com/sunghyun-k/dooray-mcp dooray-mcp

功能

此MCP服务器提供以下12种工具:

1. create_task -创建业务

创建新任务。

必需参数:

  • subject:业务标题

支持的输入方式:

  • 项目ID: project_id="1234567890123456789"
  • 项目代码: project_code="개발팀-업무"

其他参数(全部可选):

  • body_content:业务正文内容
  • body_mime_type:正文MIME类型(默认: text/x-markdown,或 text/html)
  • users_to:联系人列表(例如: [{"type": "member", "member": {"organizationMemberId": "123"}}])
  • users_cc:引用列表
  • parent_post_id:父业务ID(如果创建为子业务)
  • priority:优先级(highest, high, normal, low, lowest, none)
  • due_date:截止日期(ISO 8601格式,例如: 2025-12-31T23:59:59+09:00)
  • milestone_id:里程碑ID
  • tag_ids:标记ID列表(例如: ["tag1", "tag2"])

返回信息:

  • 成功与否
  • 生成的业务ID
  • 消息

使用示例:

# 기본 업무 생성
create_task(
    project_code="개발팀-업무",
    subject="새로운 기능 구현"
)

# 상세 정보가 포함된 업무 생성
create_task(
    project_code="개발팀-업무",
    subject="버그 수정 필요",
    body_content="로그인 버튼이 작동하지 않는 문제",
    priority="high",
    due_date="2025-11-30T23:59:59+09:00",
    users_to=[{"type": "member", "member": {"organizationMemberId": "123"}}]
)

2. get_task -业务查询

查询业务的详细信息。

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

返回信息:

  • 业务标题、正文、状态
  • 联系人,创建者信息
  • 创建日期、修改日期、截止日期
  • 工作流、里程碑、标签
  • 父业务信息
  • 子任务列表(最多100个)

3. list_task_comments -查看评论

查询业务的评论列表。

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

其他参数:

  • page:页码(默认值:0,每页20个)

返回信息:

  • 总评论数(totalCount)
  • 当前页码(page)
  • 返回的评论数(returnedCount)
  • 是否存在下一页(hasMore)
  • 评论列表(ID、类型、作者、内容、创建时间、修改时间)

4. create_task_comment -写评论

在工作中写新的评论。

必需参数:

  • content:评论内容

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

其他参数:

  • mime_type:内容类型(默认: text/x-markdown,或 text/html)

返回信息:

  • 成功与否
  • 生成的评论ID

5. update_task_comment -修改评论

修改业务评论。

必需参数:

  • comment_id:评论ID(可通过list_task_comments查询)
  • content:要修改的评论内容

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

其他参数:

  • mime_type:内容类型(默认: text/x-markdown,或 text/html)

返回信息:

  • 成功与否
  • 错误消息(失败时)

使用示例:

  1. 首先查看评论列表:

    comments = list_task_comments(project_code="개발팀-업무", task_number=123)
    # 결과에서 수정할 댓글의 ID 확인
    
  2. 修改评论:

    update_task_comment(
        comment_id="1234567890123456789",
        content="수정된 댓글 내용입니다.",
        project_code="개발팀-업무",
        task_number=123
    )
    

注意: 通过电子邮件发送的邮件无法修改。

6. update_task -修改业务

修改业务信息。只需提供想要修改的字段(支持部分更新)。

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

可修改的参数(全部可选):

  • subject:业务标题
  • body_content:业务正文内容
  • body_mime_type:正文MIME类型(默认: text/x-markdown,或 text/html)
  • users_to:联系人列表(例如: [{"type": "member", "member": {"organizationMemberId": "123"}}])
  • users_cc:引用列表
  • priority:优先级(highest, high, normal, low, lowest, none)
  • due_date:截止日期(ISO 8601格式,例如: 2025-12-31T23:59:59+09:00)
  • milestone_id:里程碑ID
  • tag_ids:标记ID列表(例如: ["tag1", "tag2"])
  • version:版本号(用于防止并发修改,如果为None,则使用最新版本)

返回信息:

  • 成功与否
  • 错误消息(失败时)

7. list_projects -查看项目列表

查看我所属项目的列表。

过滤器参数(全部可选):

  • state:项目状态筛选器(active, archived)
  • scope:项目访问范围筛选器(private, public)
  • page:页码(默认值:0,每页20个)

返回信息:

  • 项目总数(totalCount)
  • 当前页码(page)
  • 返回的项目数(returnedCount)
  • 是否存在下一页(hasMore)
  • 项目列表(ID、代码、说明、状态、访问范围等)

使用示例:

# 모든 프로젝트 조회
list_projects()

# 활성 프로젝트만 조회
list_projects(state="active")

# 다음 페이지 조회
list_projects(page=1)

8. get_project_members -查看项目成员和组

查看项目的成员和成员组。每个成员组还包括所属成员的列表。

支持的输入方式:

  • 项目ID: project_id="4062369282783966548"
  • 项目代码: project_code="개발팀-업무"

返回信息:

  • 成员列表:
    • 组织成员ID
    • 项目中的角色(admin/member)
  • 成员组列表:
    • 组ID
    • 组代码
    • 组的成员列表(ID、名称)

使用示例:

您可以在指定联系人时找到所需的ID:

  • 个人联系人: {"type": "member", "member": {"organizationMemberId": "123"}}
  • 组联系人: {"type": "group", "group": {"projectMemberGroupId": "456"}}

9. get_available_workflows -查看项目状态列表

查看项目中的所有可用状态。

支持的输入方式:

  • 项目ID: project_id="4062369282783966548"
  • 项目代码: project_code="개발팀-업무"

返回信息:

  • 状态ID(用于将业务状态更改为workflow_id)
  • 状态名称(支持多种语言)
  • 状态类(backlog、registered、working、closed)
  • 排序顺序

状态类:

  • backlog:等待
  • registered:注册(待办事宜)
  • working:正在进行
  • closed:完成

10. list_project_tasks -查看项目任务列表

查看项目的业务列表。

支持的输入方式:

  • 项目ID: project_id="4062369282783966548"
  • 项目代码: project_code="개발팀-업무"

过滤器参数(全部可选):

  • from_member_ids:作者ID列表(organizationMemberId)
  • to_member_ids:联系人ID列表(organizationMemberId)
  • cc_member_ids:引用ID列表(organizationMemberId)
  • workflow_classes:状态类列表(状态的大分类, get_available_workflows可通过查询)
  • subject:标题筛选器(部分匹配)
  • created_at:创建日期筛选器(默认: prev-30d). today, thisweek, prev-{N}d, next-{N}d,ISO 8601范围支持
  • page:页码(默认值:0,每页20个)

返回信息:

  • 项目ID
  • 总业务数(totalCount)
  • 当前页码(page)
  • 返回的计数(returnedCount)
  • 是否存在下一页(hasMore)
  • 工作列表(ID、标题、状态、联系人等)

使用示例:

# 프로젝트의 모든 업무 조회
list_project_tasks(project_code="개발팀-업무")

# 특정 상태 클래스의 업무만 조회 (클래스는 get_available_workflows로 확인)
list_project_tasks(
    project_code="개발팀-업무",
    workflow_classes=["working"]
)

# 특정 담당자의 업무 조회
list_project_tasks(
    project_code="개발팀-업무",
    to_member_ids=["1234567890"]
)

11. set_task_workflow -更改业务状态

更改业务的状态。

必需参数:

  • workflow_id:要更改的状态ID(可通过get_available_workflows查询)

支持的输入方式:

  • 仅提供业务ID: task_id="9876543210987654321"
  • 项目代码+业务编号: project_code="개발팀-업무", task_number=123
  • Dooray Web URL: url="https://company.dooray.com/task/..."

返回信息:

  • 成功与否
  • 错误消息(失败时)

使用示例:

  1. 首先查看项目的可用状态列表:

    workflows = get_available_workflows(project_code="개발팀-업무")
    # 결과에서 원하는 상태의 ID 확인
    
  2. 将业务状态更改为相应的状态ID:

    set_task_workflow(
        workflow_id="3629707640373969653",
        project_code="개발팀-업무",
        task_number=123
    )
    

12. list_project_tags -查看项目标签列表

查看项目中所有可用的标记。

支持的输入方式:

  • 项目ID: project_id="4062369282783966548"
  • 项目代码: project_code="개발팀-업무"

其他参数:

  • page:页码(默认值:0,每页20个)

返回信息:

  • 标签总数(totalCount)
  • 当前页码(page)
  • 返回的标记数(returnedCount)
  • 是否存在下一页(hasMore)
  • 标签列表(ID、名称、颜色、标签组信息)

标签组属性:

  • mandatory:如果为true,则注册业务时需要为该组指派一个或多个标签
  • selectOne:如果为true,则只能从组中选择一个标签,如果为false,则可以选择多个标签

使用示例:

  1. 查看项目的标签列表:

    tags = list_project_tags(project_code="개발팀-업무")
    # 결과에서 원하는 태그의 ID 확인
    
  2. 使用查询的标记ID在创建业务时标记:

    create_task(
        project_code="개발팀-업무",
        subject="새로운 기능",
        tag_ids=["4062401244884975089", "4062400865106463592"]
    )
    

许可证

MIT许可证