{"name":"io.github.spranab/saga-mcp","slug":"spranab-saga-mcp","title":null,"description":"Jira-like project tracker for AI agents with SQLite, full task hierarchy, and dashboard","url":"https://mcp.market/server/spranab-saga-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"data","tags":["data","devtools","productivity"],"presence":{"score":44,"stars":37,"forks":9,"downloads_week":494,"last_push_at":"2026-09-25T19:20:34.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/spranab/saga-mcp","website":null,"version":"1.17.1","remotes":[],"packages":[{"registryType":"npm","identifier":"saga-mcp","version":"1.17.1","transport":{"type":"stdio"}}],"tools":[{"name":"activity_log","description":"View the activity log showing what changed and when. Useful for understanding recent progress or reviewing what happened since the last session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"comment_add","description":"Add a comment to a task. Comments create a chronological discussion thread — useful for leaving breadcrumbs across sessions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"comment_delete","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"comment_list","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"comment_restore","description":"Restore a comment previously removed with comment_delete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"epic_archive","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"epic_create","description":"Create an epic within a project. Epics group related tasks into a feature or workstream.","write_action":true,"price_micros":0,"input_schema":null},{"name":"epic_list","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"epic_update","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"note_delete","description":"Delete a note by ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"note_list","description":"List notes with optional filters. Returns notes sorted by most recent first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"note_save","description":"Create or update a note: decisions, context, progress, meetings, blockers, technical detail, releases. With id, updates; without, creates.","write_action":true,"price_micros":0,"input_schema":null},{"name":"note_search","description":"Search across note titles and content by keyword.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_create","description":"Create a new project. Projects are the top-level container for all work.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_list","description":"List all projects with epic/task counts and completion percentages. Optionally filter by status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_update","description":"Update a project. Pass only the fields you want to change. Set status to \"archived\" to soft-delete.","write_action":true,"price_micros":0,"input_schema":null},{"name":"subtask_create","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"subtask_delete","description":"Delete one or more subtasks. Accepts a single ID or array of IDs.","write_action":true,"price_micros":0,"input_schema":null},{"name":"subtask_reorder","description":"Reorder a task subtask list. Pass IDs in the order you want; any omitted keep their relative order at the end.","write_action":false,"price_micros":0,"input_schema":null},{"name":"subtask_update","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"task_batch_update","description":"Update multiple tasks at once. Useful for changing status of several tasks (e.g., mark 3 tasks as done) or reassigning tasks.","write_action":true,"price_micros":0,"input_schema":null},{"name":"task_create","description":"Create a task within an epic. Tasks are the primary unit of work.","write_action":true,"price_micros":0,"input_schema":null},{"name":"task_delete","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"task_get","description":"Get a single task with full details including all subtasks, related notes, comments, and dependencies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"task_list","description":"List tasks; without epic_id, across all epics. Includes subtask and dependency counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"task_lock_description","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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"task_reorder","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"task_restore","description":"Restore a task removed with task_delete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"task_update","description":"Update a task; pass only fields to change. Completing it while subtasks are unfinished is refused unless force is set.","write_action":true,"price_micros":0,"input_schema":null},{"name":"template_apply","description":"Apply a template to create tasks in an epic. Replaces {variable} placeholders with provided values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"template_create","description":"Create a reusable set of tasks that can be instantiated into any epic. {variable} placeholders are filled in on apply.","write_action":true,"price_micros":0,"input_schema":null},{"name":"template_delete","description":"Delete a task template.","write_action":true,"price_micros":0,"input_schema":null},{"name":"template_list","description":"List task templates. Pass include_tasks to see what each one actually creates.","write_action":false,"price_micros":0,"input_schema":null},{"name":"template_update","description":"Edit a template in place. Only the fields you pass change; tasks replace the whole list.","write_action":true,"price_micros":0,"input_schema":null},{"name":"tracker_dashboard","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_export","description":"Export a full project as nested JSON. Includes all epics, tasks, subtasks, comments, dependencies, and related notes. Useful for backup, migration, or sharing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_import","description":"Import a project from JSON (matching tracker_export format). Creates all entities with new IDs and remaps references. Uses a transaction for atomicity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_init","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_next","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_search","description":"Search projects, epics, tasks and notes by keyword. Returns categorized previews — use task_get or note_list for full text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tracker_session_diff","description":"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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-25T21:41:47.758Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T21:41:47.804Z","components":{"code":{"score":25,"max":25,"notes":["63 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"saga-mcp","version":"1.17.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-21T17:25:30.423Z","repositoryUrl":"git+https://github.com/spranab/saga-mcp.git","weeklyDownloads":494}],"repo":{"found":true,"owner":"spranab","repo":"saga-mcp","archived":false,"pushedAt":"2026-09-25T19:20:34Z","stars":37,"forks":9,"openIssues":3,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/8328281?v=4","ownerCreatedAt":"2014-08-01T08:51:51Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/8328281?v=4&s=128","source":"github"},"presence":{"stars":37,"forks":9,"downloadsWeek":494,"license":"MIT","lastPushAt":"2026-09-25T19:20:34.000Z","score":44}}}},"grade_history":[],"reviews":[]}