├── .claude └── agents │ ├── mcp-bridge-expert.md │ ├── provider-tester.md │ └── tool-reviewer.md ├── .dockerignore ├── .env.desktop.example ├── .env.example ├── .env.pi.example ├── .env.template ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── pull_request_template.md └── workflows │ ├── security.yml │ └── semantic-release.yml ├── .gitignore ├── .prettierrc ├── .releaserc.json ├── .trivyignore ├── CHANGELOG.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── assets └── mcp-rubber-duck.png ├── audit-ci.json ├── config ├── claude_desktop.json └── config.example.json ├── docker-compose.yml ├── glama.json ├── jest.config.js ├── package.json ├── scripts ├── build-multiarch.sh ├── deploy-raspbian.sh ├── deploy.sh ├── gh-deploy.sh └── setup-docker-raspbian.sh ├── server.json ├── src ├── config │ ├── config.ts │ └── types.ts ├── index.ts ├── providers │ ├── duck-provider-enhanced.ts │ ├── enhanced-manager.ts │ ├── manager.ts │ ├── provider.ts │ └── types.ts ├── server.ts ├── services │ ├── approval.ts │ ├── cache.ts │ ├── consensus.ts │ ├── conversation.ts │ ├── function-bridge.ts │ ├── health.ts │ └── mcp-client-manager.ts ├── tools │ ├── approve-mcp-request.ts │ ├── ask-duck.ts │ ├── chat-duck.ts │ ├── clear-conversations.ts │ ├── compare-ducks.ts │ ├── duck-council.ts │ ├── duck-debate.ts │ ├── duck-iterate.ts │ ├── duck-judge.ts │ ├── duck-vote.ts │ ├── get-pending-approvals.ts │ ├── list-ducks.ts │ ├── list-models.ts │ └── mcp-status.ts └── utils │ ├── ascii-art.ts │ ├── logger.ts │ └── safe-logger.ts ├── systemd ├── mcp-rubber-duck-with-ollama.service └── mcp-rubber-duck.service ├── test-functionality.js ├── test-mcp-interface.js ├── tests ├── ascii-art.test.ts ├── config.test.ts ├── consensus.test.ts ├── conversation.test.ts ├── duck-debate.test.ts ├── duck-iterate.test.ts ├── duck-judge.test.ts ├── duck-vote.test.ts ├── mcp-bridge.test.ts ├── providers.test.ts └── tools │ └── clear-conversations.test.ts └── tsconfig.json /.claude/agents/mcp-bridge-expert.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.claude/agents/mcp-bridge-expert.md -------------------------------------------------------------------------------- /.claude/agents/provider-tester.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.claude/agents/provider-tester.md -------------------------------------------------------------------------------- /.claude/agents/tool-reviewer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.claude/agents/tool-reviewer.md -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.dockerignore -------------------------------------------------------------------------------- /.env.desktop.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.env.desktop.example -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.env.example -------------------------------------------------------------------------------- /.env.pi.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.env.pi.example -------------------------------------------------------------------------------- /.env.template: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.env.template -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.eslintrc.json -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/ISSUE_TEMPLATE/question.md -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/pull_request_template.md -------------------------------------------------------------------------------- /.github/workflows/security.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/workflows/security.yml -------------------------------------------------------------------------------- /.github/workflows/semantic-release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.github/workflows/semantic-release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.gitignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.prettierrc -------------------------------------------------------------------------------- /.releaserc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.releaserc.json -------------------------------------------------------------------------------- /.trivyignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/.trivyignore -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/README.md -------------------------------------------------------------------------------- /assets/mcp-rubber-duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/assets/mcp-rubber-duck.png -------------------------------------------------------------------------------- /audit-ci.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/audit-ci.json -------------------------------------------------------------------------------- /config/claude_desktop.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/config/claude_desktop.json -------------------------------------------------------------------------------- /config/config.example.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/config/config.example.json -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /glama.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/glama.json -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/jest.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/package.json -------------------------------------------------------------------------------- /scripts/build-multiarch.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/scripts/build-multiarch.sh -------------------------------------------------------------------------------- /scripts/deploy-raspbian.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/scripts/deploy-raspbian.sh -------------------------------------------------------------------------------- /scripts/deploy.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/scripts/deploy.sh -------------------------------------------------------------------------------- /scripts/gh-deploy.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/scripts/gh-deploy.sh -------------------------------------------------------------------------------- /scripts/setup-docker-raspbian.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/scripts/setup-docker-raspbian.sh -------------------------------------------------------------------------------- /server.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/server.json -------------------------------------------------------------------------------- /src/config/config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/config/config.ts -------------------------------------------------------------------------------- /src/config/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/config/types.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/providers/duck-provider-enhanced.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/providers/duck-provider-enhanced.ts -------------------------------------------------------------------------------- /src/providers/enhanced-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/providers/enhanced-manager.ts -------------------------------------------------------------------------------- /src/providers/manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/providers/manager.ts -------------------------------------------------------------------------------- /src/providers/provider.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/providers/provider.ts -------------------------------------------------------------------------------- /src/providers/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/providers/types.ts -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/server.ts -------------------------------------------------------------------------------- /src/services/approval.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/approval.ts -------------------------------------------------------------------------------- /src/services/cache.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/cache.ts -------------------------------------------------------------------------------- /src/services/consensus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/consensus.ts -------------------------------------------------------------------------------- /src/services/conversation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/conversation.ts -------------------------------------------------------------------------------- /src/services/function-bridge.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/function-bridge.ts -------------------------------------------------------------------------------- /src/services/health.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/health.ts -------------------------------------------------------------------------------- /src/services/mcp-client-manager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/services/mcp-client-manager.ts -------------------------------------------------------------------------------- /src/tools/approve-mcp-request.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/approve-mcp-request.ts -------------------------------------------------------------------------------- /src/tools/ask-duck.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/ask-duck.ts -------------------------------------------------------------------------------- /src/tools/chat-duck.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/chat-duck.ts -------------------------------------------------------------------------------- /src/tools/clear-conversations.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/clear-conversations.ts -------------------------------------------------------------------------------- /src/tools/compare-ducks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/compare-ducks.ts -------------------------------------------------------------------------------- /src/tools/duck-council.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/duck-council.ts -------------------------------------------------------------------------------- /src/tools/duck-debate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/duck-debate.ts -------------------------------------------------------------------------------- /src/tools/duck-iterate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/duck-iterate.ts -------------------------------------------------------------------------------- /src/tools/duck-judge.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/duck-judge.ts -------------------------------------------------------------------------------- /src/tools/duck-vote.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/duck-vote.ts -------------------------------------------------------------------------------- /src/tools/get-pending-approvals.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/get-pending-approvals.ts -------------------------------------------------------------------------------- /src/tools/list-ducks.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/list-ducks.ts -------------------------------------------------------------------------------- /src/tools/list-models.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/list-models.ts -------------------------------------------------------------------------------- /src/tools/mcp-status.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/tools/mcp-status.ts -------------------------------------------------------------------------------- /src/utils/ascii-art.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/utils/ascii-art.ts -------------------------------------------------------------------------------- /src/utils/logger.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/utils/logger.ts -------------------------------------------------------------------------------- /src/utils/safe-logger.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/src/utils/safe-logger.ts -------------------------------------------------------------------------------- /systemd/mcp-rubber-duck-with-ollama.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/systemd/mcp-rubber-duck-with-ollama.service -------------------------------------------------------------------------------- /systemd/mcp-rubber-duck.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/systemd/mcp-rubber-duck.service -------------------------------------------------------------------------------- /test-functionality.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/test-functionality.js -------------------------------------------------------------------------------- /test-mcp-interface.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/test-mcp-interface.js -------------------------------------------------------------------------------- /tests/ascii-art.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/ascii-art.test.ts -------------------------------------------------------------------------------- /tests/config.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/config.test.ts -------------------------------------------------------------------------------- /tests/consensus.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/consensus.test.ts -------------------------------------------------------------------------------- /tests/conversation.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/conversation.test.ts -------------------------------------------------------------------------------- /tests/duck-debate.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/duck-debate.test.ts -------------------------------------------------------------------------------- /tests/duck-iterate.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/duck-iterate.test.ts -------------------------------------------------------------------------------- /tests/duck-judge.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/duck-judge.test.ts -------------------------------------------------------------------------------- /tests/duck-vote.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/duck-vote.test.ts -------------------------------------------------------------------------------- /tests/mcp-bridge.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/mcp-bridge.test.ts -------------------------------------------------------------------------------- /tests/providers.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/providers.test.ts -------------------------------------------------------------------------------- /tests/tools/clear-conversations.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tests/tools/clear-conversations.test.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nesquikm/mcp-rubber-duck/HEAD/tsconfig.json --------------------------------------------------------------------------------