PagerDuty MCP Server is an open-source project offering community-based support. For assistance, please open an issue on GitHub or ask in the PagerDuty Community Forum.
Ways to Contribute
There are many ways to contribute to the project:- Report bugs: Help us identify and fix issues
- Request features: Suggest new functionality
- Improve documentation: Fix typos, clarify instructions, add examples
- Write code: Implement new features or fix bugs
- Share feedback: Let us know how the server works for you
Reporting Bugs
Security Vulnerabilities
For security issues, please:- Provide detailed description of the vulnerability
- Include steps to reproduce
- Suggest potential fixes if possible
- Allow time for the team to address before public disclosure
Regular Bugs
Before reporting a bug:- Search existing issues: Check if the bug is already reported at github.com/pagerduty/pagerduty-mcp-server/issues
- Verify it’s a bug: Ensure it’s not a configuration issue (see Troubleshooting Guide)
-
Gather information:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Version information (
uvx pagerduty-mcp --version) - Environment (OS, Python version, client application)
- Error messages and logs
- Create a bug report: Use the bug report template
Requesting Features
Before requesting a feature:- Check existing requests: Look for similar feature requests in GitHub issues
- Discuss in the community: Consider posting in the PagerDuty Community Forum to gauge interest and gather feedback
- Create a feature request: Use the feature request template
- Clear description of the proposed feature
- Use cases and benefits
- Potential implementation approach
- Examples of how it would be used
- Alternatives you’ve considered
The core team will review feature requests and may:
- Accept and schedule for development
- Request more information
- Postpone for future consideration
- Decline if it doesn’t align with project goals
Development Setup
Follow these steps to set up a local development environment.Prerequisites
- asdf-vm: Version management tool (asdf-vm.com)
- uv: Python package installer (github.com/astral-sh/uv)
- PagerDuty User API Token: See Installation Guide for instructions
Initial Setup
Create virtual environment and install dependencies
Running Locally
To run the MCP server from your local checkout:Configuring Your MCP Client
Update your MCP client to use the local version: VS Code / Cursor:Replace
/absolute/path/to/pagerduty-mcp-server with the actual path where you cloned the repository.Development Workflow
Step 1: Find Something to Work On
For new contributors:- Look for issues labeled
good first issue - Check for issues labeled
help wanted - Review the backlog
- Check
high priorityissues for impactful work - Review
enhancementissues for new features - Look at active pull requests to avoid duplicate work
- Comment on the issue to let others know you’re working on it
- Ask clarifying questions if needed
- Ensure no one else is already working on it
Step 2: Design and Discussion
For significant changes:- Propose your approach: Comment on the issue with your implementation plan
- Gather feedback: Discuss with maintainers and community
- Iterate on design: Refine based on feedback
- Get approval: Wait for maintainer acknowledgment before starting
Step 3: Code Your Changes
Work on thenext branch: All contributions should target the next branch, not main.
- One feature per PR: Keep pull requests focused on a single feature or bugfix
- Write tests: Add unit tests for new features and bug fixes
- Follow code style: Use the project’s linting and formatting rules
- Document your code: Add docstrings and comments where appropriate
- Keep changes minimal: Avoid unnecessary refactoring or housekeeping changes
Step 4: Testing
Run Unit Tests
Run Evals
Evals test that tool descriptions are suitable for AI assistants:Evals require an LLM API key (OpenAI or AWS Bedrock). See
tests/evals/README.md for configuration.Lint and Format Code
Step 5: Commit Your Changes
Follow Conventional Commits: The project uses conventional commits for commit messages. Format:feat: New featurefix: Bug fixdocs: Documentation changesrefactor: Code refactoringtest: Test changeschore: Maintenance tasks
Step 6: Create a Pull Request
Create pull request
Go to github.com/pagerduty/pagerduty-mcp-server and create a pull request.
Fill out the PR template
Provide:
- Description of changes
- Related issue number
- Testing performed
- Screenshots/examples if applicable
- Title must follow conventional commits format
- Title should be lowercase
- No period at the end of the title
- Description must explain motivation and approach
- All CI checks must pass
- At least one approving review required
feat: add create_status_page_post toolfix: handle null values in schedule overridesdocs: clarify regional endpoint configuration
Step 7: Review and Iteration
- Respond to feedback: Address reviewer comments promptly
- Push new commits: Add commits to the same branch
- Request re-review: After addressing feedback
- Be patient: Maintainers are volunteers and may take time to review
All commits will be squashed when merged, so don’t worry about having many small commits during iteration.
Step 8: Merge
Once approved:- A maintainer will squash-merge your PR to
next - Your changes will be included in the next pre-release
- After testing, changes will be merged to
main - Your name will be added to the release notes
Code Style and Standards
Python Style
- PEP 8: Follow Python style guidelines
- Type hints: Use type annotations for all functions
- Docstrings: Use Google-style docstrings
- Line length: Maximum 120 characters
Tool Design Guidelines
When adding new tools:- Clear descriptions: Write tool descriptions for AI assistants, not humans
- Intuitive parameters: Use parameter names that match PagerDuty terminology
- Error handling: Provide helpful error messages
- Documentation: Update tool reference docs
- Examples: Include usage examples in docstrings
Testing Standards
- Unit tests required: All new functionality must have tests
- Test file naming:
test_<module>.py - Test function naming:
test_<function>_<scenario> - Use fixtures: Leverage pytest fixtures for common setup
- Mock external calls: Don’t make real API calls in tests
Project Structure
Community and Support
Communication Channels
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and discussions
- PagerDuty Community Forum: Community support and best practices
- Pull Request Comments: Technical discussions about specific changes
Code of Conduct
All contributors must follow the Code of Conduct. We are committed to providing a welcoming and inclusive environment.Recognition
Contributors are recognized in:- Release notes
- GitHub contributors page
- Project documentation (for significant contributions)