Skip to main content
Glama

@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

запускает сервер (bunx, без шага сборки)

GitHub-репозиторий с удалённым origin

сервер читает owner/repo из него при каждом вызове

gh выполнен вход, или установлен GITHUB_TOKEN

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.

Инструмент

Что делает

Запись

list_ready

открытые, устоявшиеся, все зависимости выполнены

list_planning

в черновике или возвращённые сборкой (replan)

schedule

весь план слоями зависимостей; ошибка при цикле

get_task

полная запись одной задачи

add_task

создать задачу (кэш + issue + доска)

amend_task

расширить объём открытой задачи или задать её бриф

close_task

отметить выполненной (закрыть issue, переместить карточку)

sync

тянуть статус 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

id

метка outputty:id:<id> (стабильный ключ; переживает изменение заголовка)

title / status

заголовок issue / открыто ↔ закрыто

deps scope brief contract tier qa spec stage attempts

скрытый 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 absent

The MCP transport

Сервер, работающий только с инструментами, не отправляет сообщений, инициированных сервером. По stdio это JSON-RPC с разделителями строк; по HTTP транспорт Streamable HTTP сводится к одному входящему JSON-RPC сообщению и одному исходящему JSON-ответу — без SSE-потока и без идентификатора сессии. Оба обрабатывают initialize, tools/list и tools/call (а также ping и уведомление initialized). Именно поэтому весь сервер — это просто hono + octokit.

Config

Переменная

Описание

По умолчанию

Обязательна

OUTPUTTY_MCP_PORT

HTTP-порт (режим --http)

3917

нет

GITHUB_TOKEN / GH_TOKEN

GitHub-токен для Octokit

возврат к gh auth token

нет

OUTPUTTY_PROJECT_NUMBER

нацелиться на существующую доску Projects

найти/создать "Tasks"

нет

OUTPUTTY_PROJECTS

off отключает синхронизацию доски

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

Каждая цель тестируется против фейка в памяти, поэтому набору тестов не нужны сеть и учётные данные.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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