Development Guide
August 27, 2025 · View on GitHub
This guide covers how to set up, develop, and contribute to the pref-editor-mcp-server project.
Prerequisites
- Node.js: Version 20.0.0 or higher (see
enginesin package.json) - npm: Comes with Node.js
- Git: For version control
Getting Started
1. Clone the Repository
git clone https://github.com/charlesmuchene/pref-editor-mcp-server.git
cd pref-editor-mcp-server
2. Install Dependencies
npm install
3. Verify Setup
Run the full verification suite to ensure everything works:
npm run verify
This runs: clean → lint → build → test → coverage
Development Workflow
Available Scripts
# Development
npm run dev # Run in development mode with ts-node
npm run watch # Watch mode for TypeScript compilation
# Building
npm run build # Compile TypeScript to dist/
npm run clean # Remove dist/ directory
# Testing
npm test # Run tests once
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
# Quality Checks
npm run lint # Run ESLint
npm run verify # Run all checks (recommended before commits)
# Production
npm start # Run the compiled server
Project Structure
├── src/
│ ├── index.ts # Main entry point
│ ├── schema.ts # Zod validation schemas
│ ├── utils.ts # Utility functions
│ └── tools/
│ ├── common.ts # Common MCP tools
│ └── prefs.ts # Preference management tools
├── tests/ # Test files
├── .github/
│ ├── workflows/ # CI/CD workflows
│ ├── CODEOWNERS # Code ownership
│ └── pull_request_template.md
└── dist/ # Compiled output (generated)
Before Opening a Pull Request
1. Code Quality Checks
Run the verification suite locally:
npm run verify
This ensures:
- ✅ No lint errors
- ✅ TypeScript compiles successfully
- ✅ All tests pass
- ✅ Test coverage ≥ 80%
2. PR Title Format
Your PR title must follow this format (case-insensitive):
BREAKING: Description of breaking changes (or breaking:)
feat: Description of new features (or FEAT:)
fix: Description of bug fixes (or FIX:)
Examples:
BREAKING: Remove deprecated tools(→ major version bump)feat: Add new preference validation feature(→ minor version bump)fix: Fix memory leak in connection handling(→ patch version bump)
❌ Invalid titles will fail CI:
Add new feature(missing prefix)Feat: Breaking change(wrong case)major: Remove API(wrong prefix)
3. Test Coverage
- All new code must have tests
- Maintain ≥ 80% coverage across lines, functions, branches, and statements
- Run
npm run test:coverageto check coverage locally
4. Code Standards
- Follow existing code patterns
- Use TypeScript strict mode
- Add JSDoc comments for public APIs
- Follow the existing import/export patterns
After Opening a Pull Request
1. CI Checks Must Pass
The following automated checks will run:
- PR Title Validation - Ensures proper format
- Linting - Code style and quality checks
- Build - TypeScript compilation
- Tests - All test suites must pass
- Coverage - Must maintain ≥ 80% threshold
2. Ready for Review Process
- Wait for CI - All checks must be green ✅
- Add "READY-FOR-REVIEW" label - This notifies code owners
- Address feedback - Respond to review comments
- Update as needed - Push additional commits if required
3. Automatic Processes
When your PR is approved and merged:
- Auto-versioning - Version bumped based on your PR title prefix
- Auto-tagging - Git tag created (e.g.,
v0.8.0) - Auto-release - GitHub release created with changelog
- Branch cleanup - Feature branch automatically deleted
Troubleshooting
Common Issues
CI failing on PR title:
# Fix your PR title format (case-insensitive)
BREAKING: Your description here # or breaking:
feat: Your description here # or FEAT:
fix: Your description here # or FIX:
Lint errors:
npm run lint # See errors
npm run lint -- --fix # Auto-fix some issues
Test failures:
npm test # Run tests
npm run test:watch # Debug in watch mode
Coverage too low:
npm run test:coverage # See coverage report
# Add tests for uncovered code
Build errors:
npm run build # See TypeScript errors
# Fix type issues and imports
Getting Help
- Check CI logs - Click on failed checks for details
- Run locally - Use
npm run verifyto reproduce issues - Review existing code - Follow established patterns
- Ask questions - Comment on your PR if stuck
Code Review Guidelines
For Contributors
- Keep PRs focused and small when possible
- Write clear commit messages
- Add tests for new functionality
- Update documentation if needed
- Respond promptly to review feedback
For Reviewers
- Check the automated PR comment for CI status
- Verify test coverage for new code
- Ensure code follows project conventions
- Test functionality if significant changes
- Provide constructive feedback
Release Process
Releases are fully automated:
- Merge PR with proper title prefix
- Auto-version bumps version in package.json
- Auto-tag creates git tag
- Auto-release creates GitHub release
- Changelog generated from commit history
No manual intervention required! 🚀
Quick Reference
# Setup
git clone https://github.com/charlesmuchene/pref-editor-mcp-server.git && cd pref-editor-mcp-server && npm install
# Before PR
npm run verify
# PR title format (case-insensitive)
BREAKING|feat|fix: Description
# After PR merged
# → Automatic versioning and release