Thank you for your interest in contributing to Ansible MCP Installer! This document provides guidelines for contributing to the project.
Please be respectful and constructive in all interactions. We aim to maintain a welcoming environment for all contributors.
- Check existing issues to avoid duplicates
- Use a clear, descriptive title
- Include:
- Ansible version (
ansible --version) - Claude CLI version (
claude --version) - Operating system
- Complete error messages
- Steps to reproduce
- Ansible version (
- Check if the feature has been requested
- Explain the use case
- Provide examples if possible
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test thoroughly
- Commit with clear messages
- Push to your branch
- Open a Pull Request
- Use meaningful task names
- Make tasks idempotent
- Use
changed_whenandfailed_whenappropriately - Document complex logic with comments
- Follow Ansible Best Practices
- YAML files: 2-space indentation
- Line length: 120 characters maximum
- Use
---at the start of YAML files - Quote strings containing special characters
Before submitting:
- Test with minimal configuration
- Test all installation modes (all, group, individual)
- Test both scopes (user, project)
- Verify cleanup functionality
- Check idempotency (run twice, ensure no unexpected changes)
Example test commands:
# Test syntax
ansible-playbook manage-mcp.yml --syntax-check
# Test with check mode
ansible-playbook manage-mcp.yml -e @config.yml --check
# Test different modes
ansible-playbook manage-mcp.yml -e @config.yml -e mcp_mode=all
ansible-playbook manage-mcp.yml -e @config.yml -e mcp_mode=group -e mcp_group=development- Update README.md if adding features
- Document new variables in defaults/main.yml
- Add examples for complex features
- Keep documentation concise and clear
- Update documentation as needed
- Add entries to examples/ if introducing new patterns
- Ensure all tests pass
- Update the README.md with details of changes if applicable
- PR title should clearly describe the change
- Link related issues in the PR description
When adding support for new MCP servers:
- Add server definition to group_vars/all.yml
- Include all required configuration options
- Document any required environment variables in .env.example
- Add to appropriate server groups
- Test the installation process
- Update examples if needed
Example:
new_server:
enabled: false # Default to disabled
type: stdio
command: npx
args:
- -y
- "@org/new-mcp-server"
requires_env:
- NEW_SERVER_API_KEY
env:
NEW_SERVER_API_KEY: "{{ new_server_key | default('') }}"Feel free to open an issue for clarification on any contribution guidelines.