Hacker News new | ask | show | jobs
Show HN: Saga – A Jira-like project tracker MCP server for AI agents (SQLite)
4 points by spranab 122 days ago
I got tired of my AI coding assistant (Claude, Cursor, etc.) losing track of project state across sessions — creating random markdown files, forgetting what was done, repeating work. So I built Saga.

It's an MCP server that gives your AI agent a proper project tracker — Projects > Epics > Tasks > Subtasks — backed by a local SQLite file. One tracker_dashboard call and the agent has full context to resume where it left off.

Key points:

Zero setup — SQLite auto-creates a .tracker.db file per project. No Docker, no Postgres, no API keys. 22 tools — CRUD for the full hierarchy, plus notes (decisions, blockers, meeting notes), cross-entity search, activity log, batch operations. Per-project scoped — Each project gets its own database. Nothing shared, nothing leaked. Activity log — Every mutation is automatically tracked so the agent (or you) can see what changed and when. Install: npx saga-mcp

GitHub: https://github.com/spranab/saga-mcp npm: https://www.npmjs.com/package/saga-mcp

The idea is simple: instead of the LLM trying to remember state in its context window or dumping it into files, give it an actual structured database it can query and update through tool calls. Works with Claude Desktop, Claude Code, Cursor, or any MCP-compatible client.

Would love feedback — especially on the tool design and what's missing.

1 comments

Though the README is probably enough context, would there be value in an agent skill for this?

https://agentskills.io/what-are-skills

SKILL.md format: https://agentskills.io/specification#skill-md-format

The skill creator skill SKILL.md: https://github.com/anthropics/skills/blob/main/skills/skill-...

.

SWE bench involves solving GitHub issues.

Which of the SWE bench agents read from or write to GitHub issues?

.

There could be a local cache of remote issues, and/or an overlayfs-like write cache

From https://github.com/GothenburgBitFactory/bugwarrior :

> bugwarrior - Pull tickets from github, bitbucket, bugzilla, jira, trac, and others into taskwarrior

https://github.com/bergercookie/syncall :

> Bi-directional synchronization between services such as Taskwarrior, Google Calendar, Notion, Asana, and more

.

ditz is on the filesystem

ditz: https://github.com/jashmenn/ditz :

> Ditz is a simple, light-weight distributed issue tracker designed to work with distributed version control systems like git, darcs, Mercurial, and Bazaar

git-ditz: https://github.com/ihrke/git-ditz

.

sqlite-utils does SQLite FTS full text search config. There are additional tables for FTS indexes.

sqlite-utils: https://github.com/simonw/sqlite-utils

sqlite-utils > Configuring full-text search: https://sqlite-utils.datasette.io/en/stable/cli.html#configu... :

  sqlite-utils enable-fts mydb.db documents title summary

  # after subsequent writes
  sqlite-utils populate-fts mydb.db documents title summary

  # rebuild the FTS indexes
  sqlite-utils rebuild-fts mydb.db documents
.

One of these mentions sensitivity analysis and basically cache poisoning;

From "I built a memory system for Claude that solves the context loss issue" https://news.ycombinator.com/item?id=45546276 :

- buildautomata_memory_mcp: https://github.com/brucepro/buildautomata_memory_mcp

Notes from "Show HN: Recall: Give Claude memory with Redis-backed persistent context" a few days ago: https://news.ycombinator.com/context?id=45517613 :

- recall: https://github.com/joseairosa/recall

sediment: https://github.com/rendro/sediment :

> Semantic memory for AI agents. Local-first, MCP-native

sediment-benchmark: https://github.com/rendro/sediment-benchmark :

> Benchmark suite for memory systems (Sediment, ChromaDB, Mem0, Letta)

Thanks for the excellent references! We actually just added a SKILL.md following the agentskills.io spec based on your suggestion — it's live now: https://github.com/spranab/saga-mcp/blob/master/.skills/saga...

Great point about sqlite-utils FTS. Saga already has full-text search via tracker_search across all entities (projects, epics, tasks, notes), but we're using basic LIKE queries — proper SQLite FTS5 indexes would be a meaningful upgrade for larger projects. Adding it to the roadmap.

The bugwarrior/syncall direction is interesting too. A github_sync tool that pulls issues into Saga's local tracker (and optionally pushes status back) would close the loop between local agent planning and team-visible issue trackers. Definitely something worth exploring.

Re: SWE-bench agents and issue tracking — most SWE-bench agents read the issue description as input but don't write back to GitHub. Having a local structured tracker that an agent can read/write freely (without API rate limits or auth concerns) is exactly the gap Saga fills.

Np. Still learning about how to reference agentskills from my coding LLM here. Haven't yet worked with MCP or A2A much. I should port instruction prompts from each project's AGENTS.md to reusable skills in .claude/skills/skillname/SKILL.md ; so that I can reference "/skillname" in a prompt to reuse that prompt text.

Copilot looks for agent skills in .claude/skills/, .github/skills/, or .agents/skills/ .

FWIU there are package managers for agent skills?

PAKS: https://github.com/stakpak/paks

vercel-labs/skills: https://github.com/vercel-labs/skills :

  export DISABLE_TELEMETRY=1
  npx skills add vercel-labs/agent-skills
https://skills.sh/docs/cli

A reproducibility, traceability, and auditability concern:

How to show the text of the exact version of the skill referenced in each input prompt in each chat log? GH copilot's JSON export format is a fairly complete trace compared to e.g. Gemini Chat.

.

ElasticSearch (Java) and Meilisearch (Rust) do at least porter stemming before indexing.

MeiliSearch can be used as a vector database for langchain.

meilisearch/meilisearch: https://github.com/meilisearch/meilisearch :

Meilisearch docs > langchain guide > Performing Similarity Search: https://www.meilisearch.com/docs/guides/langchain#performing...

  from langchain.vectorstores import Meilisearch
  from langchain.embeddings.openai import OpenAIEmbeddings
meilisearch/meilisearch-mcp : https://github.com/meilisearch/meilisearch-mcp

openobserve/openobserve : https://github.com/openobserve/openobserve :

> OpenObserve is an open-source observability platform for logs, metrics, traces, and frontend monitoring. A cost-effective alternative to Datadog, Splunk, and Elasticsearch with 140x lower storage costs and single binary deployment. with SQL in Rust

OpenObserve (AGPL) docs > MCP: https://openobserve.ai/docs/integration/mcp/ :

> This capability is supported in the Enterprise edition of OpenObserve

https://github.com/openobserve/openobserve/issues/6804

openobserve docs > Comparison with Alternatives > How does OpenObserve compare to Elasticsearch: https://openobserve.ai/docs/overview/comparison/

meilisearch blog > "What is GraphRAG: Complete guide [2026]" https://www.meilisearch.com/blog/graph-rag :

> How is GraphRAG different from baseline RAG?

> GraphRAG represents one of the different types of RAG, and its retrieval process differs from baseline RAG.

> Baseline RAG is vector search-based, while GraphRAG uses structured relationships to get the end result. GraphRAG can still use vector and full-text search, but relationships drive what gets retrieved.

/? graphrag sqlite fts : https://www.google.com/search?q=graphrag+sqlite+fts

anthropics/skills/./skills/skill-creator/SKILL.md: https://github.com/anthropics/skills/blob/main/skills/skill-...

  npx skills add anthropics/skills