Mmcp.market

Saga MCP server

by spranab·io.github.spranab/saga-mcp·v1.17.1

Jira-like project tracker for AI agents with SQLite, full task hierarchy, and dashboard

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

37 stars494 downloads/wk

Reviews

Write one

Nobody has reviewed Saga yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Saga tools (41, 17 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • activity_log

    View the activity log showing what changed and when. Useful for understanding recent progress or reviewing what happened since the last session.

  • comment_add

    Add a comment to a task. Comments create a chronological discussion thread — useful for leaving breadcrumbs across sessions.

  • comment_deletewrite action

    Remove a comment (soft delete). The row is kept for the audit trail but hidden from comment_list and task_get. Use this to retract a comment that turned out to be wrong or stale. Reversible with comment_restore.

  • comment_list

    List comments on a task in chronological order. Comments removed with comment_delete are hidden by default; pass include_deleted to see them with their removal reason.

  • comment_restore

    Restore a comment previously removed with comment_delete.

  • 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.

  • epic_createwrite action

    Create an epic within a project. Epics group related tasks into a feature or workstream.

  • 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.

  • epic_updatewrite action

    Update an epic. Pass only the fields you want to change. Set status to "cancelled" to soft-delete. Pass branch="current" to pin to the active branch, or empty string to clear.

  • note_deletewrite action

    Delete a note by ID.

  • note_list

    List notes with optional filters. Returns notes sorted by most recent first.

  • note_savewrite action

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

  • note_search

    Search across note titles and content by keyword.

  • project_createwrite action

    Create a new project. Projects are the top-level container for all work.

  • project_list

    List all projects with epic/task counts and completion percentages. Optionally filter by status.

  • project_updatewrite action

    Update a project. Pass only the fields you want to change. Set status to "archived" to soft-delete.

  • subtask_createwrite action

    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.

  • subtask_deletewrite action

    Delete one or more subtasks. Accepts a single ID or array of IDs.

  • subtask_reorder

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

  • subtask_updatewrite action

    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.

  • task_batch_updatewrite action

    Update multiple tasks at once. Useful for changing status of several tasks (e.g., mark 3 tasks as done) or reassigning tasks.

  • task_createwrite action

    Create a task within an epic. Tasks are the primary unit of work.

  • task_deletewrite action

    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.

  • task_get

    Get a single task with full details including all subtasks, related notes, comments, and dependencies.

  • task_list

    List tasks; without epic_id, across all epics. Includes subtask and dependency counts.

  • 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.

  • 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.

  • task_restore

    Restore a task removed with task_delete.

  • task_updatewrite action

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

  • template_apply

    Apply a template to create tasks in an epic. Replaces {variable} placeholders with provided values.

  • template_createwrite action

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

  • template_deletewrite action

    Delete a task template.

  • template_list

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

  • template_updatewrite action

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

  • 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.

  • tracker_export

    Export a full project as nested JSON. Includes all epics, tasks, subtasks, comments, dependencies, and related notes. Useful for backup, migration, or sharing.

  • tracker_import

    Import a project from JSON (matching tracker_export format). Creates all entities with new IDs and remaps references. Uses a transaction for atomicity.

  • tracker_init

    Initialize the tracker for a project. If the database is empty, creates a project with the given name. If a project already exists, returns its info.

  • 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.

  • tracker_search

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

  • 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.

Public scan report

scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it

no findings
  • Code scan63 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

What the publisher says

From the Saga repository's README, as published. We do not edit it. Read it on GitHub

saga-mcp

Your coding agent loses the plan between sessions. You come back tomorrow and it has no idea which of the five things you agreed on are done, which one is blocked on which, or why you rejected the second approach — because the plan lived in the context window, or in a TODO.md nobody updates.

saga-mcp gives the agent a real tracker instead: a SQLite file in your project holding projects, epics, tasks, subtasks, dependencies, comments, notes and decisions, exposed as 41 MCP tools. The agent writes to it as it works and reads it back when it returns. No accounts, no external service, no network calls — the database is a file you own.

Install

Add saga-mcp to your MCP client. The same block works for Claude Code (.mcp.json in your project), Claude Desktop (claudedesktopconfig.json), and any other MCP client:

{
  "mcpServers": {
    "saga": {
      "command": "npx",
      "args": ["-y", "saga-mcp"],
      "env": { "DB_PATH": "/absolute/path/to/your/project/.tracker.db" }
    }
  }
}

Restart the client. DB_PATH is the only required setting; the file and its schema are created on first use. Prefer a global install? npm install -g saga-mcp, then use saga-mcp as the command instead of npx.

Tested on Node 20, 22 and 24, on Linux, macOS and Windows.

Settings

No API keys, no accounts, no external services.

Your first session

You: "Set up tracking for the e-commerce API and plan out auth."

tracker_init({ project_name: "E-Commerce API" })
epic_create({ project_id: 1, name: "Authentication", priority: "high" })
task_create({ epic_id: 1, title: "Design auth schema", priority: "critical" })
task_create({ epic_id: 1, title: "Implement JWT auth", depends_on: [1] })
task_create({ epic_id: 1, title: "Add OAuth2 Google login", depends_on: [2] })

Tasks 2 and 3 come back blocked — their dependencies aren't done. Finish task 1 and task 2 unblocks itself.

Next session, you: "Where were we?"

tracker_next({})
  -> Work on #1 'Design auth schema' — critical priority, in the active epic
     'Authentication'. 2 other task(s) are blocked.

One recommendation with the reason. For the whole picture instead, tracker_dashboard({}) returns stats, epics, blocked and overdue tasks, recent activity and notes, with a summary on top.

And when you would rather look than ask, saga-web puts the same database in a browser:

What you get

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Install directly

Runs npx -y saga-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add saga-mcp -- npx -y saga-mcp
Add to Cursor

Saga: common questions

Is Saga MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Saga safety report
How do I install Saga?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Saga need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Saga maintained?
The last commit was 2 days ago (2026-09-25). The latest release is v1.17.1.
What can I use instead of Saga?
Servers from other publishers that do the same job: Lific MCP server, gadak MCP server and DBHub MCP server. Compare all Saga alternatives.

Alternatives to Saga

Same job from other publishers: the closest match first, then the best rated.

All Saga alternatives →
  • Lific
    Local-first, lightweight issue tracker. Single binary, SQLite-backed, MCP-native.
    A
  • gadak
    Ask a local SQLite mirror of your Jira and Confluence: SQL, full-text search, issue detail.
    A
  • DBHub
    Token-efficient database MCP server for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite
    A
  • Neon
    Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.
    A
  • Remem
    Local-first automatic memory for Claude Code and Codex: capture, distill, recall from SQLite.
    B

More from spranab →