Skip to main content
Glama

DevTaskMcp

Agent 原生的 dev 任务看板 — 把需求调研成规格清晰的任务,端到端执行并验证验收条件。基于 Pocock 的 frontier 模式,含 spec/slug/dependency 字段和 scope 分类。

技能列表

技能

用途

触发

devtask-setup

初始化项目:检查环境、写 CLAUDE.md 引导、可选落库

首次引入 devtask / "初始化 devtask" / "setup devtask"

devtask

需求 → 落库任务,全规模路由:单点修复 / 批量分类 / Keep-Kill-Pivot / spec+subtasks

用户说"我想做个…" / "加个功能" / "修个 bug" / "plan this out"

devtask-doit

端到端执行任务,自检验收条件,verify 通过后标记完成

用户说"做 task-N" / "执行任务" / "work on the next task"

devtask-review

验收条件 + 四视角清理审查 + 正确性审查,能修就修

用户说"review task-N" / "verify task-N" / "验收 task-N"

Related MCP server: Task Manager MCP Server

安装

Claude Code Plugin(推荐)

单 plugin 包含 MCP server + 3 个技能,一次安装即可:

# 添加市场
claude plugins marketplace add KanoCifer/DevTaskMcp

# 安装插件
claude plugins install devtask@devtask

安装后 3 个技能均自动可用。MCP server 走 .mcp.json 定义的远程 URL —— 部署后把 .mcp.json 里的域名和 token 换成真实值,本地即通过远程实例提供服务。

或在 Claude 对话框中交互完成:

/plugin marketplace add KanoCifer/DevTaskMcp
/plugin install devtask@devtask

本地开发加载:

claude --plugin-dir /path/to/DevTaskMcp

默认通过 uv run 启动 server,自动解析依赖。如果机器上没有 uv,参考下方「无 uv」章节。

手动安装(不用 plugin)

把技能目录链接到 Claude Code 的技能路径,并手动配置 MCP server:

# 1. 配置 MCP server(添加到 ~/.claude.json 或项目 .mcp.json,指向已部署的远程实例)
#    "type": "http",
#    "url": "https://你的域名/mcp/",
#    "headers": { "Authorization": "Bearer 你的MCP_AUTH_TOKEN" }

# 2. 链接技能目录
# 作为 user-level 技能(全局可用)
ln -s /path/to/DevTaskMcp/skills/devtask-setup ~/.claude/skills/devtask-setup
ln -s /path/to/DevTaskMcp/skills/devtask ~/.claude/skills/devtask
ln -s /path/to/DevTaskMcp/skills/devtask-doit ~/.claude/skills/devtask-doit
ln -s /path/to/DevTaskMcp/skills/devtask-review ~/.claude/skills/devtask-review

# 或作为 project-level 技能(放在项目 .claude/skills/ 下)
mkdir -p .claude/skills
ln -s /path/to/DevTaskMcp/skills/devtask-setup .claude/skills/devtask-setup
ln -s /path/to/DevTaskMcp/skills/devtask .claude/skills/devtask
ln -s /path/to/DevTaskMcp/skills/devtask-doit .claude/skills/devtask-doit
ln -s /path/to/DevTaskMcp/skills/devtask-review .claude/skills/devtask-review

注意:手动安装时技能不带有 devtask: 命名空间前缀。

无 uv

如果机器上没有 uv,两种方式准备 Python 环境:

方式 A — 初始化脚本(推荐):

scripts/setup.sh              # 创建 .venv 并安装依赖
# 或指定解释器:
PYTHON=python3.11 scripts/setup.sh

方式 B — 手动 pip install:

python3 -m venv .venv
.venv/bin/pip install -e .

然后在 .mcp.json 中指向远程实例(同「手动安装」第 1 步的 URL 配置)。

远程部署(streamable-http)

devtask_mcp.server 以 streamable-http transport 运行:一个长驻进程服务所有调用方,供外部 agent(Claude Code remote、Cursor 等)通过 URL 调用。

1. 构建并启动(本机验证)

cp .env.example .env       # 填 DEVTASK_API_KEY、MCP_AUTH_TOKEN
docker compose up --build

compose 只把端口绑到 127.0.0.1:8003 —— 服务不直接暴露公网。

2. 反向代理 + TLS(Nginx/Caddy 等,自行部署)

把 127.0.0.1:8003 转发到 https://你的域名/mcp/(streamable-http 的标准端点路径是 /mcp/)。请求头必须原样透传,尤其是 Authorization 和 streamable-http 需要的 Mcp-Session-Id。

3. 客户端连接

{
  "mcpServers": {
    "devtask": {
      "type": "http",
      "url": "https://你的域名/mcp/",
      "headers": { "Authorization": "Bearer 你的MCP_AUTH_TOKEN" }
    }
  }
}

MCP_AUTH_TOKEN 留空时服务不启用应用层鉴权 —— 生产务必设置,并在反代层额外加 IP 白名单/限流。

配置

cp .env.example .env
# 填写 DEVTASK_API_KEY(必填)和 DEVTASK_API_BASE(可选)

DEVTASK_API_KEY 是 kanocifer-chat API 的 Bearer 为空时 server 启动会报错。

远程部署时还需配置:

  • MCP_AUTH_TOKEN — 外部 MCP 客户端调用时携带的 Bearer token。留空则关闭应用层鉴权(仅本地/内网)。

  • MCP_HOST / MCP_PORT — HTTP 监听地址与端口,默认 0.0.0.0:8003。

使用

技能以 plugin 名命名空间:

/devtask:devtask-setup                   # 初始化:检查环境 + 写 CLAUDE.md 引导
/devtask:devtask                         # 需求 → 落库任务(自动按规模路由)
/devtask:devtask-doit                    # 领取 frontier 最前排任务执行
/devtask:devtask-doit task-42            # 执行指定 slug 的任务
/devtask:devtask-review task-42          # 验收条件 + 四视角代码审查

工作流程

/devtask:devtask-setup                      ← 首次:初始化 + 写引导
    │
    ▼
需求描述
    │
    ▼
/devtask:devtask
    │  按规模路由:单点修复 / 批量分类 / spec+subtasks → 创建任务
    ▼
/devtask:devtask-doit [task-N]
    │  端到端执行 → 自检验收条件 → /devtask:devtask-review
    ▼
/devtask:devtask-review [task-N]
    │  验收条件 + 四视角清理审查 + 正确性审查
    ▼
标记已完成

任务模型(v3 — Task Document)

v3 把所有长文本统一到一个 Task Document。detail 是唯一长文本字段, 正文必须使用固定章节:Goal / Plan / Acceptance Criteria / Constraints / Context Pointers(外加 Decisions / Out of Scope)。其它结构化字段保持不变。

MCP 工具

工具

用途

create_task

内联参数创建任务,长文放 detail(取代旧的两个工具)

update_task

修改状态字段 + 可选 detail 正文;slugs=[] 批量完成

get_task(slug, view=...)

summary / full

list_children

永远返回 summary 记录

视图

view

返回内容

summary

结构化字段,不包含 detail

full

原始任务对象(含完整 detail)

默认 view=summary,防止 agent 误把长文拉进上下文。

字段表

字段

必填

含义

形式

slug

自动

task-ID,人类可读,单调递增

—

title

是

一行摘要,动词开头

plain

type

是

问题 / 功能需求 / 优化 / 技术债

—

priority

是

P0 紧急 / P1 高 / P2 中 / P3 低

—

scope

是

<层>-<技术> 自由格式

—

kind

否

spec / subtask

—

parent_slug

否

子任务归属的 spec slug

—

due_date

否

ISO-8601 截止日期

—

blocked_by

否

同层前置依赖

—

for_agent

是

Agent 可认领标志

—

detail

否

Task Document 渲染后的 Markdown

Markdown

枚举值使用 Go 后端期望的中文字面量——不要使用英文键。详细 Task Document 规范见 docs/task-document-v1.md。

目录结构

DevTaskMcp/
├── .claude-plugin/
│   ├── plugin.json              # Plugin 清单(元数据 + MCP server 引用)
│   └── marketplace.json         # 市场发布配置(3 个技能)
├── .mcp.json                    # MCP server 定义(plugin 自动加载)
├── skills/
│   ├── devtask-setup/SKILL.md   # 初始化:检查环境 + 写 CLAUDE.md 引导
│   ├── devtask/references/grill.md  # frontier 访谈协议(渐进披露)
│   ├── devtask/SKILL.md         # 需求 → 落库任务(全规模路由)
│   ├── devtask-doit/SKILL.md    # 端到端执行 + verify 门控
│   └── devtask-review/SKILL.md  # 验收条件 + 四视角清理审查 + 正确性审查
├── src/devtask_mcp/             # MCP server Python 包
│   ├── __init__.py
│   ├── client.py                # HTTP client,信封剥离
│   ├── models.py                # Pydantic 模型 + 中文枚举
│   └── server.py                # FastMCP,6 个工具注册(已 slug 化)
├── Dockerfile                 # 容器镜像(uv slim + 锁文件)
├── docker-compose.yml         # 单服务编排,端口回环绑定 8003
├── pyproject.toml
├── CLAUDE.md
└── README.md

架构备注

  • 边界剥离信封: Go 后端用 {code, message, data} 包裹响应;client._unwrap 在边界剥离,MCP 工具不会浪费 token 在包装字段上。

  • 错误原样传播: 非 2xx 或 code != 0 抛出 DevTaskAPIError,错误信息原样呈现给 agent。

  • per_page 上限 20,无论调用方传入多大值。

  • HTTP 超时: 15.0 秒。

  • 单例长连接 client 在模块级别——streamable-http 下单个长驻进程服务所有调用方,client 无会话状态,共享安全。

  • Slug 是规范的人类 ID——在所有 UI、对话和 MCP 工具引用中使用 task-N。后端已全面 slug 化,不再接受 ObjectID 输入。

  • kind / parent_slug 语义分离: parent_slug 承载子→父的结构归属(devtask_list_children 走此索引),blocked_by 只承载同层前置依赖(执行顺序)。

License

MIT

Available Tools

6 tools
create_dev_taskA

Create a new dev-task. New tasks start at status '待评估'.

返回体里包含 slug (如 "task-1"),后续对话 / 看板 UI / MCP tool 引用 该任务时直接用 slug,比 ObjectID 可读得多。

Args: title: Task title (required). task_type: One of '问题', '功能需求', '优化', '技术债'. priority: One of 'P0 紧急', 'P1 高', 'P2 中', 'P3 低'. scope: Task scope in "<层>-<技术>" format (required). Examples: '前端-React', '后端-Go', 'AI-LangChain', 'Docs-用户手册', '通用'. Free-form string — not a closed enum. description: Short description (optional). detail: Long-form detail (optional). due_date: ISO-8601 datetime string, e.g. '2026-09-01T00:00:00'. Pass whatever your JSON client gives; the backend parses RFC-3339. acceptance_criteria: Conditions that must be met for this task to be considered done. Agent uses these as a self-check before resolve. constraints: Hard boundaries — files not to touch, tech stack requirements, etc. Agent treats these as non-negotiable. context_pointers: Paths to relevant code / docs / ADRs, e.g. 'internal/auth/, docs/adr/0003'. Saves agent a file-discovery pass. for_agent: When True, mark this task as ready for agent execution. Default False (human task). blocked_by: List of task IDs that must be done before this one. Pass [] when no dependencies.

Inputs: scope (required), title (required), priority (required), task_type (required), +8 more. Returns: result

get_dev_taskA

Fetch a single dev-task by its ObjectID.

The response includes spec fields (acceptance_criteria, constraints, context_pointers), dependency info (for_agent, blocked_by), and slug. Read them before starting work. context_pointers short-circuits file discovery by telling you exactly which paths are relevant. Use the slug for all human-facing references (e.g. "work on task-42").

Args: task_id: The task's ObjectId hex string (24 hex chars). Use get_dev_task_by_slug if you have a slug like "task-42".

Inputs: task_id (required). Returns: result

get_dev_task_by_slugA

Fetch a single dev-task by its slug (task-1, task-2...).

Slug 是任务的人类可读短标识,比 ObjectID 更适合口头引用、看板 UI 和 MCP 对话。其余字段同 get_dev_task。

Args: slug: The task slug, e.g. "task-42".

Inputs: slug (required). Returns: result

get_frontier_tasksA

Return tasks the agent can claim next — Pocock's frontier.

Frontier = tasks that are:

  • marked for_agent=true

  • in status '待排期' (backlog)

  • have no unfinished blockers (blocked_by is empty)

  • not soft-deleted

Ordered by sort_order ASC, then created_at DESC. Use this as your first call when the user says "do the next task" — it tells you exactly what's ready to be worked.

Args: limit: Max tasks to return (default 10).

Inputs: limit. Returns: result

list_dev_tasksA

List dev-tasks from your kanocifer-chat board.

Args: status: Filter by lifecycle status. One of: '待评估', '待排期', '进行中', '已搁置', '已完成'. priority: Filter by urgency. One of: 'P0 紧急', 'P1 高', 'P2 中', 'P3 低'. task_type: Filter by kind. One of: '问题', '功能需求', '优化', '技术债'. for_agent: When True, return only tasks ready for agent execution. When False, return only tasks for human. None = no filter. include_deleted: When True, soft-deleted tasks are also returned. page: Page number (1-based). per_page: Items per page, capped at 20.

Inputs: page, status, per_page, priority, +3 more. Returns: result

update_dev_taskA

Partially update a dev-task. Omitted fields are left unchanged.

Args: task_id: The task's ObjectId hex string or slug (task-N). title: New title (optional). description: New description (optional). detail: New detail (optional). task_type: One of '问题', '功能需求', '优化', '技术债'. priority: One of 'P0 紧急', 'P1 高', 'P2 中', 'P3 低'. scope: Free-form "<层>-<技术>" string (see create_dev_task docs). status: One of '待评估', '待排期', '进行中', '已搁置', '已完成'. sort_order: Integer sort key (optional). due_date: ISO-8601 datetime string. acceptance_criteria: Conditions for considering this task done. constraints: Hard boundaries (files / tech stack / etc). context_pointers: Paths to relevant code / docs / ADRs. for_agent: Toggle agent-claimable flag. blocked_by: Replace the dependency list entirely. Pass [] to clear.

Inputs: task_id (required), scope, title, detail, +11 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 6 tools

    Disambiguation5/5

    All six tools have clearly distinct purposes: create, get by ObjectID, get by slug, get frontier tasks, list with filters, and update. No functional overlap.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern (e.g., create_dev_task, get_dev_task_by_slug, list_dev_tasks), making it easy to predict behavior.

    Tool Count5/5

    Six tools strike a good balance, covering core CRUD plus a specialized frontier query without being too many or too few for a task management MCP server.

    Completeness4/5

    The tools cover creation, reading (multiple variants), listing, and updating. The only notable gap is the absence of a dedicated delete tool, though soft-delete is supported via list filtering.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Self-hosted task tracker and MCP server for AI coding agents. Append-only case files preserve decisions, failed attempts, questions, and check results across sessions. A live web board lets people track progress and answer agents. Runs locally in Docker and connects to Claude Code, Codex, Cursor, and other Streamable HTTP MCP clients. MIT licensed.
      30
      6
      MIT