spranab/saga-mcp

spranab/saga-mcp

от spranab
MCP-сервер saga-mcp - Jira-подобный трекер для AI-агентов с иерархией, зависимостями и заметками с журналом изменений. Всё локально в SQLite. Для разработчиков с ИИ-ассистентами.

saga-mcp

IdeaCred

A Jira-like project tracker MCP server for AI agents. SQLite-backed, per-project scoped, with full hierarchy and activity logging — so LLMs never lose track.

No more scattered markdown files. saga-mcp gives your AI assistant a structured database to track projects, epics, tasks, subtasks, notes, and decisions across sessions.

Features

  • Full hierarchy: Projects > Epics > Tasks > Subtasks
  • Task dependencies: Express sequencing with auto-block/unblock when deps are met
  • Comments: Threaded discussions on tasks — leave breadcrumbs across sessions
  • Templates: Reusable task sets with {variable} substitution
  • Dashboard: One tool call gives full overview with natural language summary
  • SQLite: Self-contained .tracker.db file per project — zero setup, no external database
  • Activity log: Every mutation is automatically tracked with old/new values
  • Notes system: Decisions, context, meeting notes, blockers — all searchable
  • Batch operations: Create multiple subtasks or update multiple tasks in one call
  • 31 focused tools: With MCP safety annotations on every tool
  • Import/export: Full project backup and migration as JSON (with dependencies and comments)
  • Source references: Link tasks to specific code locations
  • Auto time tracking: Hours computed automatically from activity log
  • Cross-platform: Works on macOS, Windows, and Linux
Инструменты были проиндексированы:
activity_logтолько чтениеидемпотентный

Просматривает журнал активности, показывающий, что изменилось и когда. Полезен для понимания недавнего прогресса или просмотра того, что произошло с прошлого сеанса.

Параметры
  • actionenum

    Filter by action type

  • entity_idinteger

    Filter by specific entity

  • entity_typeenum

    Filter by entity type

  • limitinteger
  • project_idinteger

    Scope to one project. Defaults to SAGA_PROJECT if set, else the whole database.

  • sincestring

    ISO 8601 datetime - show only activity after this time

comment_add

Добавляет комментарий к задаче. Комментарии создают хронологическую ветку обсуждения - полезно для оставления подсказок между сессиями.

Параметры
  • authorstring

    Author name (optional)

  • contentstringобязательный

    Comment text

  • task_idintegerобязательный

    Task ID to comment on

comment_deleteидемпотентный

Удаляет комментарий (мягкое удаление). Строка сохраняется для аудита, но скрывается из comment_list и task_get. Используйте для отзыва комментария, который оказался ошибочным или устаревшим. Обратимая операция с помощью comment_restore.

Параметры
  • deleted_bystring

    Who removed it (optional)

  • idintegerобязательный

    Comment ID to remove

  • reasonstring

    Why the comment is being removed (recommended — it stays in the audit trail)

comment_listтолько чтениеидемпотентный

Перечисляет комментарии к задаче в хронологическом порядке. Комментарии, удалённые через comment_delete, по умолчанию скрыты; передайте include_deleted, чтобы увидеть их вместе с причиной удаления.

Параметры
  • include_deletedboolean

    Include comments that were removed (soft-deleted). Off by default.

  • task_idintegerобязательный

    Task ID

comment_restoreидемпотентный

Восстановите комментарий, ранее удалённый с помощью comment_delete.

Параметры
  • idintegerобязательный

    Comment ID to restore

epic_archiveидемпотентный

Archive or unarchive an epic. Archived epics and their tasks drop out of listings, the dashboard and search unless include_archived is set. For putting finished work out of sight without cancelling it; nothing is deleted.

Параметры
  • archivedboolean

    true to archive, false to bring it back

  • idintegerобязательный
epic_create

Создает эпик в проекте. Эпики группируют связанные задачи в функциональность или рабочий поток.

Параметры
  • branchstring

    Branch to scope this epic to: "current" = active branch, omit/"" = branch-agnostic.

  • descriptionstring

    Epic description

  • namestringобязательный

    Epic name

  • priorityenum
  • project_idintegerобязательный

    Parent project ID

  • statusenum
  • tagsstring[]
epic_listтолько чтениеидемпотентный

List epics for a project with task counts and completion stats. Filter by status, priority or branch. Archived epics are hidden unless include_archived is set.

Параметры
  • branchstring

    Git branch filter: "current" = active branch, "" = branch-agnostic only, omit = all.

  • include_archivedboolean

    Include archived epics and their tasks.

  • priorityenum
  • project_idintegerобязательный

    Project ID

  • statusenum
epic_updateидемпотентный

Обновляет эпик. Передавайте только те поля, которые хотите изменить. Установите статус "cancelled" для мягкого удаления. Передавайте branch="current", чтобы привязать к активной ветке, или пустую строку, чтобы сбросить.

Параметры
  • branchstring

    Branch to scope this epic to: "current" = active branch, "" = clear.

  • descriptionstring
  • idintegerобязательный

    Epic ID

  • namestring
  • priorityenum
  • sort_orderinteger
  • statusenum
  • tagsstring[]
note_deleteидемпотентный

Удаляет заметку по ID.

Параметры
  • idintegerобязательный

    Note ID

note_listтолько чтениеидемпотентный

Перечисляет заметки с необязательными фильтрами. Возвращает заметки, отсортированные сначала самые новые.

Параметры
  • limitinteger
  • note_typeenum
  • project_idinteger

    Scope to one project. Defaults to SAGA_PROJECT if set, else the whole database.

  • related_entity_idinteger
  • related_entity_typeenum
  • tagstring

    Filter by a single tag

note_save

Create or update a note: decisions, context, progress, meetings, blockers, technical detail, releases. With id, updates; without, creates.

Параметры
  • contentstringобязательный

    Full note content (markdown supported)

  • idinteger

    Note ID (omit to create new)

  • note_typeenum
  • related_entity_idinteger

    ID of the related entity

  • related_entity_typeenum

    Link note to an entity

  • tagsstring[]
  • titlestringобязательный

    Note title

note_searchтолько чтениеидемпотентный

Ищет по ключевому слову в заголовках и содержимом заметок.

Параметры
  • limitinteger
  • note_typeenum
  • querystringобязательный

    Search keywords

project_create

Создаёт новый проект. Проекты - контейнер верхнего уровня для всей работы.

Параметры
  • descriptionstring

    Project description

  • namestringобязательный

    Project name

  • statusenum

    Project status

  • tagsstring[]

    Tags for categorization

project_listтолько чтениеидемпотентный

Перечисляет все проекты с количеством эпиков/задач и процентами завершения. Опционально фильтрует по статусу.

Параметры
  • statusenum

    Filter by status

project_updateидемпотентный

Обновляет проект. Передавайте только те поля, которые хотите изменить. Установите статус "archived" для мягкого удаления.

Параметры
  • descriptionstring
  • idintegerобязательный

    Project ID

  • namestring
  • statusenum
  • tagsstring[]
subtask_create

Create subtasks (checklist items) for a task. Pass titles as an array — one string per subtask — and each becomes its own record. New subtasks are appended after any that exist.

Параметры
  • depends_oninteger[]

    Siblings each new subtask waits on

  • task_idintegerобязательный

    Parent task

  • titlesstring[]обязательный

    Subtask titles, one per array item — e.g. ["Write it", "Test it"]. Always an array, even for a single subtask.

subtask_deleteидемпотентный

Удаляет одну или несколько подзадач. Принимает один ID или массив ID.

Параметры
  • idsinteger[]обязательный

    Subtask IDs to delete — e.g. [4, 7]. Always an array, even for one.

subtask_reorderидемпотентный

Reorder a task subtask list. Pass IDs in the order you want; any omitted keep their relative order at the end.

Параметры
  • ordered_idsinteger[]обязательный

    Subtask IDs, in order

  • task_idintegerобязательный

    Parent task

subtask_updateидемпотентный

Update a subtask title, status or position. depends_on sets what it waits on, blocks the inverse; both replace the set, [] clears. Starting or finishing one with unmet prerequisites needs force.

Параметры
  • blocksinteger[]

    Siblings that wait on this one — inverse of depends_on

  • depends_oninteger[]

    Siblings this one waits on (replaces the set)

  • forceboolean

    Proceed despite unmet prerequisites. Only when a human says the blocker no longer applies, never on your own initiative. Logged.

  • idintegerобязательный
  • sort_orderinteger
  • statusenum
  • titlestring
task_batch_updateидемпотентный

Обновляет несколько задач одновременно. Полезно для изменения статуса нескольких задач (например, отметить 3 задачи как выполненные) или переназначения задач.

Параметры
  • assigned_tostring
  • forceboolean

    Proceed despite unmet prerequisites. Only when a human says the blocker no longer applies, never on your own initiative. Logged.

  • idsinteger[]обязательный

    Task IDs to update

  • priorityenum
  • statusenum
task_create

Создаёт задачу в рамках эпика. Задачи — основная единица работы.

Параметры
  • assigned_tostring

    Assignee name

  • depends_oninteger[]

    Task IDs this task depends on

  • descriptionstring

    Task description

  • due_datestring

    Due date (YYYY-MM-DD)

  • epic_idintegerобязательный

    Parent epic ID

  • estimated_hoursnumber

    Estimated hours

  • priorityenum
  • source_refobject

    Link to source code location

  • statusenum
  • tagsstring[]
  • titlestringобязательный

    Task title

task_deleteидемпотентный

Remove a task (soft delete). Only 'todo' tasks — anything further along has history worth keeping. The row is kept and hidden from listings; task_restore brings it back.

Параметры
  • deleted_bystring
  • idintegerобязательный
  • reasonstring

    Why it is being removed (kept in the audit trail)

task_getтолько чтениеидемпотентный

Получает одну задачу с полными сведениями, включая все подзадачи, связанные заметки, комментарии и зависимости.

Параметры
  • idintegerобязательный

    Task ID

task_listтолько чтениеидемпотентный

List tasks; without epic_id, across all epics. Includes subtask and dependency counts. Rows are compact: nulls and metadata dropped, descriptions cut to 120 chars (task_get for full). branch="current" restricts to the active git branch.

Параметры
  • assigned_tostring

    Filter by assignee

  • branchstring

    Git branch filter: "current" = active branch, "" = branch-agnostic only, omit = all.

  • epic_idinteger

    Filter by epic (omit for all tasks)

  • include_archivedboolean

    Include archived epics and their tasks.

  • include_deletedboolean

    Include removed tasks.

  • limitinteger

    Max results

  • priorityenum
  • project_idinteger

    Scope to one project. Defaults to SAGA_PROJECT if set, else the whole database.

  • sort_byenum

    Omit to follow the arrangement set by task_reorder, falling back to priority. priority (critical first), created (newest), due_date (earliest), status (actionable first), manual.

  • statusenum
  • tagstring

    Filter by tag

task_lock_descriptionидемпотентный

Lock or unlock a task's description. While locked, task_update refuses to change it — a guard against rewriting the spec when you meant to add a comment. Every other field still changes freely.

Параметры
  • idintegerобязательный

    Task ID

  • lockedboolean

    true to lock, false to unlock

task_reorderидемпотентный

Set the order of an epic's tasks. Omitted IDs keep their relative order at the end. task_list then follows this arrangement by default.

Параметры
  • epic_idintegerобязательный

    Parent epic

  • ordered_idsinteger[]обязательный

    Task IDs, in order

task_restoreидемпотентный

Restore a task removed with task_delete.

Параметры
  • idintegerобязательный
task_updateидемпотентный

Update a task; pass only fields to change. Completing it while subtasks are unfinished is refused unless force is set.

Параметры
  • actual_hoursnumber
  • assigned_tostring
  • depends_oninteger[]

    Task IDs this task depends on (replaces existing)

  • descriptionstring
  • due_datestring
  • estimated_hoursnumber
  • forceboolean

    Proceed despite unmet prerequisites. Only when a human says the blocker no longer applies, never on your own initiative. Logged.

  • idintegerобязательный

    Task ID

  • priorityenum
  • sort_orderinteger

    Manual position within the epic; lower sorts first. Use task_reorder instead of setting this by hand.

  • source_refobject

    Link to source code location

  • statusenum
  • tagsstring[]
  • titlestring
template_apply

Применяет шаблон для создания задач в эпике. Заменяет заполнители {variable} предоставленными значениями.

Параметры
  • epic_idintegerобязательный

    Epic to create tasks in

  • template_idintegerобязательный

    Template ID to apply

  • variablesobject

    Key-value pairs for {variable} substitution (e.g., {"feature": "auth"})

template_create

Create a reusable set of tasks that can be instantiated into any epic. {variable} placeholders are filled in on apply.

Параметры
  • descriptionstring
  • namestringобязательный

    Template name (must be unique)

  • tasksobject[]обязательный

    The tasks this template creates.

template_deleteидемпотентный

Удаляет шаблон задачи.

Параметры
  • idintegerобязательный

    Template ID

template_listтолько чтениеидемпотентный

List task templates. Pass include_tasks to see what each one actually creates.

Параметры
  • include_tasksboolean

    Return each template's task definitions, not just a count.

template_updateидемпотентный

Edit a template in place. Only the fields you pass change; tasks replace the whole list.

Параметры
  • descriptionstring
  • idintegerобязательный

    Template ID

  • namestring
  • tasksobject[]

    Replaces every task. Omit to leave them alone. {variable} works in title and description.

tracker_dashboardтолько чтениеидемпотентный

Full project overview in one call: project, epics with task counts, stats, blocked and overdue tasks, recent activity and notes. Best first call when starting work. branch="current" scopes to the active git branch.

Параметры
  • branchstring

    Scope to a git branch: "current" = active branch, "" = branch-agnostic only, omit = all.

  • include_archivedboolean

    Include archived epics and their tasks.

  • project_idinteger

    Project ID. Omit for a single-project database or when SAGA_PROJECT is set. Otherwise the first is used and the rest listed under other_projects.

tracker_exportтолько чтениеидемпотентный

Экспортирует полный проект как вложенный JSON. Включает все эпики, задачи, подзадачи, комментарии, зависимости и связанные заметки. Полезно для резервного копирования, миграции или обмена.

Параметры
  • project_idinteger

    Project ID to export (omit if only one project exists)

tracker_import

Импортирует проект из JSON (соответствующего формату tracker_export). Создаёт все сущности с новыми идентификаторами и переназначает ссылки. Использует транзакцию для атомарности.

Параметры
  • dataobjectобязательный

    Full export JSON object from tracker_export

tracker_initидемпотентный

Инициализирует трекер для проекта. Если база данных пуста, создаёт проект с указанным именем. Если проект уже существует, возвращает его информацию.

Параметры
  • project_descriptionstring

    Description for the new project

  • project_namestring

    Name for a new project (only used if DB is empty)

tracker_nextтолько чтениеидемпотентный

What to work on next: one recommended task with the reason, its next unfinished subtask, alternatives, and — when nothing is actionable — what to unblock. Call it when resuming work; cheaper than tracker_dashboard.

Параметры
  • assigned_tostring

    Only consider tasks assigned to this person

  • branchstring

    Git branch filter: "current" = active branch, omit = all.

  • project_idinteger

    Scope to one project. Defaults to SAGA_PROJECT if set, else the whole database.

tracker_searchтолько чтениеидемпотентный

Search projects, epics, tasks and notes by keyword. Returns categorized previews — use task_get or note_list for full text.

Параметры
  • branchstring

    Git branch filter: "current" = active branch, "" = branch-agnostic only, omit = all.

  • entity_typesenum[]

    Limit search to specific entity types (omit for all)

  • include_archivedboolean

    Include archived epics and their tasks.

  • limitinteger

    Max results per entity type

  • project_idinteger

    Scope to one project. Defaults to SAGA_PROJECT if set, else the whole database.

  • querystringобязательный

    Search keywords

tracker_session_diffтолько чтениеидемпотентный

What changed since a timestamp: counts by action and entity, plus the notable changes. Call it at the start of a session to catch up.

Параметры
  • sincestringобязательный

    ISO 8601 datetime — show changes after this time (e.g. "2026-02-21T15:00:00")

Похожие MCP-сервера

starecz/karea-mcp

starecz/karea-mcp

MCP-сервер Karea добавляет 44 инструмента для управления задачами прямо из кода: от создания до закрытия, с заметками, Jira и сводками. Полезен разработчикам, работающим в Claude Code или Cursor.

JavaScript1
akseyh/bear-mcp-server

akseyh/bear-mcp-server

MCP-сервер для работы с заметками Bear Notes. Через SQLite читает все заметки, ищет по тексту и выводит теги. Интегрируется с MCP-клиентами (Claude Desktop) для автоматизации вашей базы знаний на m...

JavaScript45
timmx7/acheron-mcp-server

timmx7/acheron-mcp-server

MCP сервер Acheron даёт постоянную память, общую между Claude Chat, Code и Cowork. Сохраняй решения, ищи заметки и просматривай историю — всё локально, без облака. Полезен всем, кто хочет не терять контекст между сессиями.

TypeScript6
aashari/mcp-server-atlassian-jira

aashari/mcp-server-atlassian-jira

Подключает AI-ассистентов к Jira: запрашивайте проекты, задачи, комментарии на естественном языке. Упрощает управление проектами и отслеживание работы для разработчиков, менеджеров и всех пользоват...

TypeScript74
Skitchy/rekindle

Skitchy/rekindle

MCP-сервер Rekindle решает проблему потери контекста AI-ассистента между сессиями. Он ориентирует в начале, захватывает структурированные записи в конце, сохраняет контекст при сжатии. Всё локально в SQLite, без API-ключей. Полезен разработчикам Claude Code для непрерывной работы.

TypeScript4
louis030195/easy-obsidian-mcp

louis030195/easy-obsidian-mcp

MCP-сервер для подключения AI-ассистентов (Claude, ChatGPT) к Obsidian: поиск, чтение и анализ связей между заметками. Полезен для пользователей Obsidian, которые хотят задействовать ИИ для работы ...

TypeScript18
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин