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. Никакого нового входа.
Requirements
Требуется | Для чего |
bun ≥ 1.1 | запускает сервер ( |
GitHub-репозиторий с удалённым | сервер читает owner/repo из него при каждом вызове |
| Octokit аутентифицируется с их помощью (REST + GraphQL) |
Related MCP server: mcp-server-tasktracker
Install
Без клонирования. Добавьте сервер в .mcp.json вашего проекта, и Claude Code запустит его по требованию через bunx:
{
"mcpServers": {
"tasks": { "command": "bunx", "args": ["-y", "@outputty/tasks-mcp"] }
}
}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
Каждый инструмент принимает 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",
}Это записывает задачу в закоммиченный кэш, открывает GitHub issue с меткой outputty:id:api и добавляет карточку на доску.
// 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.
Инструмент | Что делает | Запись |
| открытые, устоявшиеся, все зависимости выполнены | — |
| в черновике или возвращённые сборкой (replan) | — |
| весь план слоями зависимостей; ошибка при цикле | — |
| полная запись одной задачи | — |
| создать задачу (кэш + issue + доска) | ✎ |
| расширить объём открытой задачи или задать её бриф | ✎ |
| отметить выполненной (закрыть issue, переместить карточку) | ✎ |
| тянуть статус issue в кэш; повторно отправить граф в цели | ✎ |
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]Разделение полномочий. Кэш владеет графом зависимостей — никто другой не может его хранить. GitHub владеет полями, которые может представлять: issue, закрытая в интерфейсе, побеждает при следующем sync. Issues первичны (запись должна попасть туда); Projects — best-effort (сбой доски — предупреждение, но не потерянная задача).
Соответствие задачи и issue:
Поле задачи | Место в issue |
| метка |
| заголовок issue / открыто ↔ закрыто |
| скрытый YAML-блок в теле issue (зависимости зеркалируются для читателей) |
Проза, которую человек пишет ниже этого блока, сохраняется при обновлениях.
Kanban board (GitHub Projects v2)
Каждая task-issue добавляется на доску Projects v2, и её колонка Status отслеживает задачу (open → Todo, done → Done). По умолчанию сервер находит или создаёт доску Tasks, связанную с репозиторием; укажите существующую доску через projectNumber или полностью отключите её.
Projects v2 требует область project у токена, которую gh не выдаёт по умолчанию — добавьте её один раз через gh auth refresh -s project. Без неё синхронизация доски пропускается с предупреждением, и задача всё равно попадает как issue (Projects — 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
Сервер, работающий только с инструментами, не отправляет сообщений, инициированных сервером. По stdio это JSON-RPC с разделителями строк; по HTTP транспорт Streamable HTTP сводится к одному входящему JSON-RPC сообщению и одному исходящему JSON-ответу — без SSE-потока и без идентификатора сессии. Оба обрабатывают initialize, tools/list и tools/call (а также ping и уведомление initialized). Именно поэтому весь сервер — это просто hono + octokit.
Config
Переменная | Описание | По умолчанию | Обязательна |
| HTTP-порт (режим |
| нет |
| GitHub-токен для Octokit | возврат к | нет |
| нацелиться на существующую доску Projects | найти/создать "Tasks" | нет |
|
| on | нет |
Limitations
Синхронизация Projects пока best-effort и односторонняя. Карточка, перемещённая на доске, ещё не считывается обратно в кэш; состояние issue — канонический статус. Тянуть доску в кэш — последующая задача.
REST-эндпоинт issues находится на таймере устаревания (GitHub выведет текущую версию из эксплуатации к 2028 году). Octokit печатает уведомление; сегодня ничего не ломается.
Development
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