# Contributing to OneSignal MCP Server
Thank you for your interest in contributing! This document provides guidelines for contributing to the OneSignal MCP Server.
## How to Contribute
### Reporting Issues
If you find a bug or have a feature request:
1. Check if the issue already exists in [GitHub Issues](https://github.com/chansearrington/onesignal-mcp/issues)
2. If not, create a new issue with:
- Clear title describing the problem
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Your environment (Python version, OS, MCP client)
### Submitting Changes
1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/your-feature-name`
3. **Make your changes**
4. **Test your changes** with your MCP client
5. **Commit with clear messages**: `git commit -m "Add: description of change"`
6. **Push to your fork**: `git push origin feature/your-feature-name`
7. **Open a Pull Request**
### Code Style
- Follow PEP 8 Python style guidelines
- Use type hints for function parameters and return values
- Add docstrings for new tools following the existing format:
```python
@mcp.tool()
async def your_new_tool(param1: str, param2: int = None) -> Dict[str, Any]:
"""Short description of what the tool does.
Args:
param1: Description of param1
param2: Description of param2 (optional)
Returns:
Description of return value
"""
# Implementation
```
### Adding New Tools
When adding a new OneSignal API endpoint:
1. Check the [OneSignal API documentation](https://documentation.onesignal.com/reference)
2. Determine if it needs App API Key or Org API Key
3. Use the `make_onesignal_request` helper function
4. Add the tool to the appropriate section in the code
5. Update the README with the new tool
### Testing
Before submitting:
1. Test with at least one MCP client (Claude Desktop, Claude Code, etc.)
2. Verify the tool works with valid OneSignal credentials
3. Test error handling (invalid inputs, missing credentials)
## Code of Conduct
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
## Questions?
Open an issue or reach out if you have questions about contributing.
## License
By contributing, you agree that your contributions will be licensed under the MIT License.