tasks-mcp
@outputty/tasks-mcp
一个本地 MCP 服务器,将 outputty 的任务追踪器暴露为类型化工具。依赖图存放在你仓库中的已提交缓存里;每个任务都双向同步到一个 GitHub Issue,并同步到 GitHub Projects 看板。编码代理调用 add_task / list_ready / schedule,而不是通过命令行调用 CLI。
缓存拥有依赖图。 依赖关系无法存在于 GitHub Issue 中,因此权威任务图是一个已提交的文件(
.claude/tasks.cache.yaml)。它随仓库一起分发,并在全新克隆后依然存在。后端是同步目标。 GitHub Issues 承载面向人类的记录(标题、开启/关闭、正文镜像);GitHub Projects 提供看板视图。读取来自缓存,因此永远不会等待 GitHub。
你现有的凭据。
GITHUB_TOKEN,或gh auth login已存储的任何内容。无需重新登录。
要求
需求 | 用途 |
bun ≥ 1.1 | 运行服务器( |
带有 | 服务器每次调用时从中读取 owner/repo |
已登录 | Octokit 使用这些进行认证(REST + GraphQL) |
Related MCP server: mcp-server-tasktracker
安装
无需克隆。将服务器添加到项目的 .mcp.json 中,Claude Code 会按需使用 bunx 启动它:
{
"mcpServers": {
"tasks": { "command": "bunx", "args": ["-y", "@outputty/tasks-mcp"] }
}
}这会运行 stdio 传输。对于长期运行的共享实例,请改为运行 HTTP 服务器:
bunx -y @outputty/tasks-mcp --http # http://localhost:3917/mcp (health: /health){
"mcpServers": {
"tasks": { "type": "http", "url": "http://localhost:3917/mcp" }
}
}工具的作用
每个工具都接受 project —— 它操作的仓库的绝对路径 —— 因为服务器没有自己的工作目录。对尚未见过的仓库的首次写入会自动配置 outputty 标签,并在启用时自动配置 Projects 看板。
// add_task — a typed call, so a multi-line brief needs no shell quoting
{
"project": "/abs/path/to/repo",
"id": "api",
"title": "Build the API",
"deps": ["schema"],
"scope": ["src/api"],
"tier": 2,
"qa": "inline",
"brief": "turn the contract into a failing test,\nthen the laziest diff",
}这会将任务记录到已提交缓存中,打开一个标签为 outputty:id:api 的 GitHub issue,并将卡片添加到看板。
// list_ready — the graph engine over the cache
{ "project": "/abs/path/to/repo" }
// -> { "ids": ["schema"], "tasks": [ { "id": "schema", "status": "open", "tier": 3, "qa": "subagent" } ] }schema 已就绪,而 api 尚未就绪,因为 api 等待 schema。关闭 schema(close_task)后,api 在下一次调用时就会就绪 —— 读取是缓存本地的,没有 GitHub 索引延迟。
工具 | 作用 | 写入 |
| 开启、已确定、所有依赖已完成 | — |
| 草稿中或被构建退回(重新规划) | — |
| 将整个计划按依赖层级排列;遇到循环时报错 | — |
| 单个任务的完整记录 | — |
| 创建任务(缓存 + issue + 看板) | ✎ |
| 扩大开启任务的范围,或设置其简介 | ✎ |
| 标记完成(关闭 issue,移动卡片) | ✎ |
| 将 issue 状态拉取到缓存;将依赖图重新推送到目标 | ✎ |
工作原理
MCP tools ── stdio (bunx, for Claude Code) · http (hono, standalone)
│ each call carries { project, branch? }
▼
CACHE .claude/tasks.cache.yaml ── the authoritative task model + DEPENDENCY GRAPH (committed)
│ the pure graph engine (ready / schedule / planning) runs over this
▼
Sync targets (two-way, per representable field)
├── GitHub Issues (REST) title · status(open/closed) · id(label) · body-mirror [primary]
└── GitHub Projects v2 (GraphQL) each task-issue → a board card; status → a column [best-effort]权威分离。 缓存拥有依赖图 —— 其他任何东西都无法持有它。GitHub 拥有它能表示的字段:在 UI 中关闭的 issue 会在下一次 sync 时胜出。Issues 是主存储(写入必须落到那里);Projects 是尽力而为(看板小故障只是警告,绝不会丢失任务)。
任务 ↔ issue 映射:
任务字段 | Issue 所在位置 |
| 标签 |
| issue 标题 / 开启 ↔ 关闭 |
| issue 正文中的隐藏 YAML 块(依赖项会镜像显示给读者) |
人类在该块下方编写的文本会跨更新保留。
看板(GitHub Projects v2)
每个任务 issue 都会被添加到一个 Projects v2 看板,其 Status 列会跟踪任务(open → Todo,done → Done)。默认情况下,服务器会查找或创建一个链接到该仓库的名为 Tasks 的看板;你可以通过 projectNumber 指向现有看板,或完全关闭它。
Projects v2 需要令牌的 project 范围,而 gh 默认不授予该范围 —— 使用 gh auth refresh -s project 添加一次。没有该范围时,看板同步会被跳过并发出警告,任务仍会作为 issue 落地(Projects 是尽力而为)。
# .claude/tasks-mcp.config.yaml (all optional)
projects: true # set false to disable the board
projectNumber: 7 # target an existing board instead of find/create "Tasks"
board: Tasks # the title to find/create when projectNumber is absentMCP 传输
仅包含工具的服务器不会发送服务器主动发起的消息。在 stdio 上,它是换行分隔的 JSON-RPC;在 HTTP 上,Streamable HTTP 传输会收敛为一个 JSON-RPC 消息进、一个 JSON 回复出 —— 没有 SSE 流,没有会话 ID。两者都处理 initialize、tools/list 和 tools/call(以及 ping 和 initialized 通知)。这就是为什么整个服务器只是 hono + octokit。
配置
变量 | 描述 | 默认值 | 必需 |
| HTTP 端口( |
| 否 |
| 用于 Octokit 的 GitHub 令牌 | 回退到 | 否 |
| 指向现有的 Projects 看板 | 查找/创建 "Tasks" | 否 |
|
| on | 否 |
限制
Projects 同步目前是尽力而为且单向的。 在看板上移动的卡片尚未被读回缓存;issue 状态才是规范状态。看板到缓存的拉取是后续工作。
REST issues 端点已进入弃用倒计时(GitHub 将在 2028 年前停用当前版本)。Octokit 会打印一条通知;目前一切正常。
开发
bun test # graph engine · GitHub Issues + Projects targets (mocked) · service · MCP protocol
bun run dev # hot-reloading HTTP server每个目标都针对内存中的假实现进行测试,因此测试套件不需要网络,也不需要凭据。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityCmaintenanceMCP server for managing a project backlog as Markdown files in Git, enabling AI agents to read, create, and update tasks programmatically.2
- Alicense-qualityAmaintenanceAn MCP server that exposes the full Task-Tracker REST API as MCP tools, enabling AI agents to manage trackers, tasks, notes, checklists, and projects conversationally.MIT
- AlicenseAqualityBmaintenanceA reusable MCP server providing shared, versioned context across AI agents and devices via a private GitHub workspace, with tools to discover projects, bootstrap, query, and close out task state.42MIT
- Alicense-qualityBmaintenanceA production-grade MCP server that provides LLMs with safe, structured, tool-based access to GitHub repositories, including issue management, semantic search, and guarded write operations.MIT
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/outputty/tasks-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server