Contributing
Thanks for your interest in contributing to calc-mcp!
Development Setup
bash
git clone https://github.com/coo-quack/calc-mcp.git
cd calc-mcp
bun installCommands
bash
bun run dev # Start dev server
bun test # Run tests
bun run lint # Check with Biome
bun run format # Format with Biome
bun run build # Build for productionBranching Strategy
main
├── develop ← integration branch
│ └── feature/* ← new features and non-urgent fixes
└── hotfix/* ← urgent production fixesNormal development
feature/your-feature → develop → main (release)- Branch from
develop:git checkout -b feature/your-feature develop - Open a PR targeting
develop - After review and approval, merge into
develop - When ready to release, open a PR from
develop→main
Hotfix
For urgent fixes that must go directly to production:
- Branch from
main:git checkout -b hotfix/fix-description main - Apply the fix and open a PR targeting
main - After review and approval, merge into
main - A backport PR to
developis created automatically by CI
If the backport PR has conflicts, resolve them manually before merging.
Adding a New Tool
- Create
src/tools/your_tool.ts— exportexecute()andtool - Create
tests/tools/your_tool.test.ts— cover all branches - Register in
src/index.ts— import and add to thetoolsarray - Update
README.md— add to examples and tool table
Release Checklist
When bumping a version, open a PR from develop → main with:
- Update
versioninpackage.json - Update
CHANGELOG.mdwith a new## vX.Y.Z (YYYY-MM-DD)sectiondocs/changelog.mdis a symlink toCHANGELOG.md— do not edit it separately- This content is automatically used as the GitHub Release notes by
release.yml
- Review
docs/tools.md— add/update any changed tool parameters or examples - Review
docs/examples.md— add examples for new features - Review
README.md— update tool table and examples if needed
After merging into main, release.yml automatically:
- Publishes to npm with provenance
- Creates a git tag
vX.Y.Z - Creates a GitHub Release with notes extracted from
CHANGELOG.md - Publishes to MCP Registry
The documentation site is also redeployed automatically on merge to main.
Pull Requests
- Feature PRs target
develop, release/hotfix PRs targetmain - Follow Conventional Commits (
feat:,fix:,docs:, etc.) - All tests must pass (
bun test) - Lint must pass (
bun run lint) - One approval required to merge
Code Style
Enforced by Biome. Run bun run format before committing.