Contributing Guide
Help improve the Arch MCP Server! We welcome contributions of all kinds.For end users: Use the simple uvx installation method. This guide is for developers who want to contribute code.
Before You Start
Set up development environment
Follow the Development Setup guide to clone the repository and install dependencies.
Review code standards
Read the Code Standards to understand our coding practices.
Check existing issues
Browse GitHub Issues to find something to work on or report bugs.
Contribution Guidelines
Core Principles
- Follow the Arch Way - Simplicity, correctness, transparency
- Add tests - Test both Arch and non-Arch scenarios
- Document changes - Update docstrings and user-facing docs
- Keep it minimal - No unnecessary abstractions
- Handle errors gracefully - Never crash the server
What to Contribute
Bug Fixes
Bug Fixes
- Fix crashes or incorrect behavior
- Improve error messages
- Fix documentation typos
New Features
New Features
- Add new MCP tools (search, analysis)
- Add new resources (URI schemes)
- Add new prompts (workflows)
- Enhance security analysis
Performance
Performance
- Optimize slow operations
- Add caching where appropriate
- Reduce network requests
Documentation
Documentation
- Improve user guides
- Add examples
- Fix unclear explanations
Adding Features
New Tools
- Create async function in appropriate module (
wiki.py,aur.py,pacman.py) - Add
@server.tool()decorator inarch_ops_server.py - Add to
list_tools()with schema - Add handler in
call_tool() - Document in examples
New Resources
- Define URI scheme (e.g.,
newtype://identifier) - Add parsing in
read_resource() - Implement fetch logic
- Add to
list_resources() - Document usage
New Prompts
- Design workflow
- Add
@server.prompt()decorator - Implement in
get_prompt() - Add to
list_prompts() - Create example
Pull Request Process
Make Changes
- Follow Code Standards
- Add type hints and docstrings
- Include debug logging
- Handle errors properly
Test Your Changes
Run the full testing checklist:
-
uv run pytest- all unit tests pass -
uv run pytest --cov- coverage maintained or improved - Add tests for new functionality
- Test with MCP Inspector - tools work correctly
- Test on Arch Linux (if available)
- Test on non-Arch system
- Check logs for errors (
stderr) - Verify error handling works
- Update documentation
Open Pull Request
- Go to the original repository
- Click “New Pull Request”
- Select your branch
- Fill in description:
- What does this PR do?
- Why is it needed?
- How was it tested?
- Submit!
Commit Message Format
Follow Conventional Commits specification:feat:- New featurefix:- Bug fixdocs:- Documentation onlystyle:- Code style changes (formatting, no logic change)refactor:- Code change that neither fixes a bug nor adds a featureperf:- Performance improvementtest:- Adding or updating testschore:- Maintenance tasks
Getting Help
Additional Resources
- MCP Specification - Protocol documentation
- Architecture Guide - System design deep dive
- Arch Wiki API - MediaWiki API docs
- AUR RPC Interface - AUR API documentation
Thank you for contributing! 🎉