Thank you for your interest in contributing to the Unsplash Smart MCP Server! This document provides guidelines and instructions for contributing.
-
Fork and clone the repository
git clone https://github.com/yourusername/unsplash-smart-mcp-server.git cd unsplash-smart-mcp-server -
Install dependencies
npm install
-
Set up environment variables
- Copy
.env.exampleto.env - Add your Unsplash API key to the
.envfile
- Copy
-
Run the development server
npm run dev
-
Run tests
npm test
We follow functional programming principles:
- DRY: Avoid code duplication
- KISS: Keep code simple and focused
- YAGNI: Implement only essential features
- Single Responsibility: One task per function
- Open/Closed: Extend through composition
- Liskov Substitution: Handle valid inputs consistently
- Interface Segregation: Minimal input requirements
- Dependency Inversion: Use higher-order functions
- Pure, testable functions
- Function composition
- Separate side effects
- Immutable data handling
- Descriptive naming
- Logical organization
- Prefer functional methods
- Minimize dependencies
- Self-documenting code
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the code standards above
- Add or update tests as necessary
- Update documentation to reflect your changes
-
Run tests and linting
npm test npm run lint -
Commit your changes
- Use conventional commit messages (e.g., "feat: add new feature", "fix: resolve Windows issue")
- Reference issue numbers in commit messages when applicable
-
Push and create a pull request
git push origin feature/your-feature-name
- Create a pull request from your fork to the main repository
- Describe your changes in detail
- Reference any related issues
When reporting bugs, please include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Screenshots or error logs if applicable
- Environment details (OS, Node.js version, etc.)
Feature requests are welcome! Please provide:
- A clear description of the feature
- The motivation behind the feature
- How the feature would be used
- Any alternatives you've considered
When contributing code that affects how the server is launched or interacts with the operating system:
- Test on multiple platforms when possible (Windows, macOS, Linux)
- Document platform-specific behaviors or requirements
- Implement platform detection for features that require different handling
All submissions require review before being merged:
- A maintainer will review your pull request
- Automated tests must pass
- Feedback may be provided for necessary changes
- Once approved, a maintainer will merge your changes
By contributing to this project, you agree that your contributions will be licensed under the project's MIT License.
Thank you for your contributions!