I am your persistent, project-aware coding assistant. It helps developers remember, automate, and orchestrate project tasks. (eventually, ha)
think of it as a smart rubber duck for your code — it listens, remembers, and helps you get things done efficiently.
- Install and set up nvm - optional
- Install node version v24.13.1.
nvm install v24.13.1 - you will need python2 to compile
better-sqlite3package. if you have pyenv, you can set both python2 and python3 version
- clone repo
git@github.com:kencanak/rubber-duck-mcp.git - boot up the server by running
./run.shin terminal, this tool is running on node 24 and using nvm to set the node version.
- rename
.mcp.json.sample>.mcp.json, then copy it to your respective project folder. which ever project that you want to use this mcp server with - copy
claude.mdfrom.claudefolder to the respective project folder. - for some reason, claude doesn't always read the
claude.mdfile. so, we might need to nudge it. - video ref
A project-specific, persistent developer memory system. It allows developers and AI assistants like Claude to store, recall, and manage important project knowledge across sessions. Think of it as a “Rubber Duck” that remembers key decisions, conventions, debugging discoveries, and tooling preferences for your project — so you don’t have to repeat yourself.
- Captures institutional knowledge: Store decisions about architecture, tooling, or coding conventions.
- Speeds up onboarding: New team members or assistants can recall previous decisions instantly. (THOUGH, it's still stored in local db - to be evolved)
- Reduces repetition: Avoid re-explaining recurring problems or solutions.
- Supports AI-assisted development: AI agents can recall relevant memories to provide smarter suggestions and context-aware guidance.
- store memory: You or an AI can store a memory with a summary, category, confidence, and optionally files to reference.
- Recall Memory: Memories can be retrieved for the current project, sorted by confidence and recent usage.
- Search Memory: Memories can be search by query. this way, we avoid using all search result as token
- Reinforce or Contradict: Update confidence based on confirmations or corrections, keeping the memory relevant.
- Archive: Retire outdated or irrelevant memories.
- Everything is scoped per project, so memories are automatically relevant to the current working directory without needing global identifiers. This allows AI assistants to provide context-aware responses and maintain a persistent understanding of project-specific knowledge.
we set a base prompt. available in .claude/claude.md
- instead of writing memory into a markdown file, i find it cleaner if we store it into DB
- which then can be evolved to vectorised db, a vectorized DB stores embedding vectors of memory content and allows semantic similarity search rather than literal text match. but of course, this comes with complexity
- hoping that we can use less token? ha
add a couple more tools:
- parallel development orchestration hub - where each “agent” is a lightweight process acting on a separate workspace (Git worktree) to perform parallel tasks.
- Each agent gets its own Git worktree (or branch) to avoid conflicts.
- MCP orchestrates agents with a task queue:
- lint & fix
- feature development
- bug investigation
- test & deploy
- Agents can read project memory from Duck-Recall and update it if needed.
- Results are PRs
- create a workflow runner?
- task scheduler?
- daily code analysis: run linters, tests, and code complexity reports every night.
- memory cleanup: archive or reinforce old duck-recall memories periodically.
- auto-deploy branches: on commit to a staging branch, trigger workflow that builds and deploys.