tasks-mcp
Provides task management capabilities backed by GitHub Issues, allowing creation, amendment, closure, and querying of tasks as issues, with two-way sync between task fields and issue metadata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tasks-mcpWhat tasks are ready to start?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@outputty/tasks-mcp
A local MCP server that exposes outputty's task tracker as typed tools. The dependency graph lives in
a committed cache in your repo; each task is synced two-way to a GitHub Issue and onto a GitHub
Projects board. A coding agent calls add_task / list_ready / schedule instead of shelling out to
a CLI.
The cache owns the graph. Deps can't live in a GitHub Issue, so the authoritative task graph is a committed file (
.claude/tasks.cache.yaml). It travels with the repo and survives a fresh clone.Backends are sync targets. GitHub Issues carry the human-facing record (title, open/closed, a body mirror); GitHub Projects gives a kanban view. Reads come from the cache, so they never wait on GitHub.
Your existing credentials.
GITHUB_TOKEN, or whatevergh auth loginalready stored. No new login.
Requirements
Needs | For |
bun ≥ 1.1 | runs the server ( |
a GitHub repo with an | the server reads owner/repo from it per call |
| Octokit authenticates from these (REST + GraphQL) |
Related MCP server: mcp-server-tasktracker
Install
No clone. Add the server to your project's .mcp.json and Claude Code launches it on demand with bunx:
{
"mcpServers": {
"tasks": { "command": "bunx", "args": ["-y", "@outputty/tasks-mcp"] }
}
}That runs the stdio transport. For a long-running shared instance, run the HTTP server instead:
bunx -y @outputty/tasks-mcp --http # http://localhost:3917/mcp (health: /health){
"mcpServers": {
"tasks": { "type": "http", "url": "http://localhost:3917/mcp" }
}
}What the tools do
Every tool takes project — the absolute path to the repo it acts on — because the server has no working
directory of its own. The first write to a repo it hasn't seen provisions the outputty label and (if
enabled) the Projects board automatically.
// 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",
}That records the task in the committed cache, opens a GitHub issue labelled outputty:id:api, and adds a
card to the board.
// 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 is ready and api is not, because api waits on schema. Close schema (close_task) and
api is ready on the very next call — reads are cache-local, with no GitHub indexing lag.
Tool | Does | Writes |
| open, settled, all deps done | — |
| drafting or sent back by a build (replan) | — |
| the whole plan as dependency layers; errors on a cycle | — |
| one task's full record | — |
| create a task (cache + issue + board) | ✎ |
| widen an open task's scope, or set its brief | ✎ |
| mark done (close the issue, move the card) | ✎ |
| pull issue status into the cache; re-push the graph to targets | ✎ |
How it works
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]Authority split. The cache owns the dependency graph — nothing else can hold it. GitHub owns the
fields it can represent: an issue closed in the UI wins on the next sync. Issues are primary (a write
must land there); Projects is best-effort (a board hiccup is a warning, never a lost task).
The task ↔ issue mapping:
Task field | Issue home |
| label |
| issue title / open ↔ closed |
| a hidden YAML block in the issue body (deps mirrored for readers) |
Prose a human writes below that block is preserved across updates.
Kanban board (GitHub Projects v2)
Each task-issue is added to a Projects v2 board and its Status column tracks the task
(open → Todo, done → Done). By default the server finds or creates a board named Tasks linked to
the repo; point it at an existing board with projectNumber, or turn it off entirely.
Projects v2 needs the token's project scope, which gh does not grant by default — add it once
with gh auth refresh -s project. Without it, the board sync is skipped with a warning and the task
still lands as an issue (Projects is best-effort).
# .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 absentThe MCP transport
A tools-only server sends no server-initiated messages. Over stdio it is newline-delimited JSON-RPC; over
HTTP the Streamable HTTP transport collapses to one JSON-RPC message in, one JSON reply out — no SSE
stream, no session id. Both handle initialize, tools/list, and tools/call (plus ping and the
initialized notification). This is why the whole server is just hono + octokit.
Config
Variable | Description | Default | Required |
| HTTP port ( |
| no |
| GitHub token for Octokit | falls back to | no |
| target an existing Projects board | find/create "Tasks" | no |
|
| on | no |
Limitations
Projects sync is best-effort and one-way for now. A card moved on the board is not yet read back into the cache; issue state is the canonical status. Board-to-cache pull is a follow-up.
The REST issues endpoint is on a deprecation clock (GitHub retires the current version by 2028). Octokit prints a notice; nothing breaks today.
Development
bun test # graph engine · GitHub Issues + Projects targets (mocked) · service · MCP protocol
bun run dev # hot-reloading HTTP serverEvery target is tested against an in-memory fake, so the suite needs no network and no credentials.
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