# Contributing
Thank you for your interest in contributing to this MCP server!
## Development Setup
```bash
# Clone the repository
git clone <repo-url>
cd mcp-server-template
# Install dependencies
npm install
# Start development mode
npm run dev
```
## Development Workflow
1. **Create a branch** for your feature or fix
2. **Make changes** following the code style guidelines
3. **Write tests** for new functionality
4. **Run validation** before committing:
```bash
npm run validate
```
5. **Commit** using conventional commit format
6. **Open a pull request** with a clear description
## Code Style
- **TypeScript** with strict mode enabled
- **ESLint** for linting (run `npm run lint`)
- **Prettier** for formatting (run `npm run format`)
- All code must pass type checking (`npm run check`)
### Naming Conventions
- `camelCase` for variables and functions
- `PascalCase` for types, interfaces, and classes
- `SCREAMING_SNAKE_CASE` for constants
- `kebab-case` for file names
### Documentation
- Add JSDoc comments to public functions
- Update README.md for new features
- Include code examples where helpful
## Testing
```bash
# Run tests in watch mode
npm test
# Run tests once
npm run test:run
# Run with coverage
npm run test:coverage
```
- Write unit tests for utilities and helpers
- Write integration tests for tool handlers
- Aim for meaningful coverage, not just high percentages
## Commit Messages
Use [Conventional Commits](https://www.conventionalcommits.org/):
```
type(scope): description
[optional body]
[optional footer]
```
Types:
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `style`: Formatting, no code change
- `refactor`: Code change that neither fixes nor adds
- `test`: Adding or updating tests
- `chore`: Maintenance tasks
## Pull Request Process
1. Ensure all checks pass
2. Update documentation as needed
3. Add tests for new functionality
4. Request review from maintainers
5. Address feedback promptly
## Reporting Issues
- Check existing issues first
- Use the issue template if available
- Include reproduction steps
- Include environment details (Node version, OS)
## License
By contributing, you agree that your contributions will be licensed under the project's MIT License.