Show HN: Saga – A Jira-like project tracker MCP server for AI agents (SQLite)
7 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... :
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)
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.
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 :
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...
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
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/cliA 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-mcpopenobserve/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/skillsspranab(1)
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.