5 ms·
Show HN: Saga – A Jira-like project tracker MCP server for AI agents (SQLite)
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 https://github.com/spranab/saga-mcp
npm: https://www.npmjs.com/package/saga-mcp 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.
- westurner 7mo agoThough the README is probably enough context, would there be value in an agent skill for this? https://agentskills.io/what-are-skills https://agentskills.io/what-are-skills SKILL.md format: https://agentskills.io/specification#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-creator/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 https://github.com/GothenburgBitFactory/bugwarrior : > bugwarrior - Pull tickets from github, bitbucket, bugzilla, jira, trac, and others into taskwarrior https://github.com/bergercookie/syncall 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 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 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 https://github.com/simonw/sqlite-utils sqlite-utils > Configuring full-text search: https://sqlite-utils.datasette.io/en/stable/cli.html#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 https://news.ycombinator.com/item?id=45546276 : - buildautomata_memory_mcp: https://github.com/brucepro/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 https://news.ycombinator.com/context?id=45517613 : - recall: https://github.com/joseairosa/recall https://github.com/joseairosa/recall sediment: https://github.com/rendro/sediment https://github.com/rendro/sediment : > Semantic memory for AI agents. Local-first, MCP-native sediment-benchmark: https://github.com/rendro/sediment-benchmark https://github.com/rendro/sediment-benchmark : > Benchmark suite for memory systems (Sediment, ChromaDB, Mem0, Letta)
- spranab 7mo agoThanks 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-tracker/SKILL.md 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.
- spranab 7mo ago[dead]
- westurner 7mo agoNp. 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 https://github.com/stakpak/paks vercel-labs/skills: https://github.com/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 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 https://github.com/meilisearch/meilisearch : Meilisearch docs > langchain guide > Performing Similarity Search: https://www.meilisearch.com/docs/guides/langchain#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 https://github.com/meilisearch/meilisearch-mcp openobserve/openobserve : https://github.com/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/ https://openobserve.ai/docs/integration/mcp/ : > This capability is supported in the Enterprise edition of OpenObserve https://github.com/openobserve/openobserve/issues/6804 https://github.com/openobserve/openobserve/issues/6804 openobserve docs > Comparison with Alternatives > How does OpenObserve compare to Elasticsearch: https://openobserve.ai/docs/overview/comparison/ https://openobserve.ai/docs/overview/comparison/ meilisearch blog > "What is GraphRAG: Complete guide [2026]" https://www.meilisearch.com/blog/graph-rag 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 https://www.google.com/search?q=graphrag+sqlite+fts