Thank you for your interest in contributing to the Autogent MCP ecosystem! This guide will help you get started with contributing to our open-source projects.
The Autogent MCP ecosystem is a collaborative open-source project that welcomes contributions from developers, documentation writers, designers, and users. Whether you're fixing a typo, adding a new feature, or helping with project management, your contributions are valuable.
| Interest | Repositories | Skills Needed |
|---|---|---|
| Web Development | Portal | Next.js, TypeScript, React |
| Backend Services | Registry, Autogent Server | Python, FastAPI, PostgreSQL |
| Java Development | Java SDK | Java, Spring Boot, Maven |
| Python Development | Python SDK | Python, FastAPI, Flask, Django |
| Node.js Development | Node.js SDK | TypeScript, Express, Fastify |
| Documentation | Documentation | Markdown, MkDocs |
| Examples & Demos | Demo Apps | Multiple languages |
# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/REPOSITORY_NAME.git
cd REPOSITORY_NAME
# 3. Add upstream remote
git remote add upstream https://github.com/autogentmcp/REPOSITORY_NAME.git
# 4. Install dependencies (varies by project)
# For Node.js projects:
npm install
# For Python projects:
pip install -r requirements.txt
pip install -r requirements-dev.txt
# For Java projects:
mvn clean install# 1. Create a feature branch
git checkout -b feature/your-feature-name
# 2. Make your changes
# 3. Add tests
# 4. Update documentation
# 5. Commit your changes
git commit -m "feat: add your feature description"
# 6. Push to your fork
git push origin feature/your-feature-name
# 7. Create a Pull Request on GitHub- Authentication Methods: Add support for new authentication protocols
- Vault Providers: Integrate new secret management providers
- Framework Support: Add support for new web frameworks
- Monitoring Tools: Enhance observability and monitoring
- Critical Bugs: Security vulnerabilities, data corruption, crashes
- Performance Issues: Memory leaks, slow queries, inefficient algorithms
- Integration Issues: SDK integration problems, API compatibility
- User Experience: UI/UX improvements, error handling
- Caching: Implement or improve caching strategies
- Database Optimization: Query optimization, indexing
- Connection Pooling: Optimize database and external service connections
- Async Processing: Improve asynchronous operations
- Getting Started Guides: Help new users understand the ecosystem
- API Reference: Comprehensive API documentation
- Tutorials: Step-by-step guides for common use cases
- Best Practices: Security, performance, and architecture guidelines
- Architecture Documentation: System design and architecture decisions
- Development Setup: Local development environment setup
- Testing Guidelines: How to write and run tests
- Release Process: Documentation for maintainers
- Component Testing: Test individual components in isolation
- Service Testing: Test service-level functionality
- Integration Testing: Test component interactions
- Edge Case Testing: Test boundary conditions and error scenarios
- User Journey Testing: Test complete user workflows
- API Testing: Test API endpoints and responses
- Security Testing: Test authentication and authorization
- Performance Testing: Test system performance under load
- Portal Interface: Improve the management portal interface
- Documentation Design: Enhance documentation layout and usability
- Error Messages: Improve error message clarity and helpfulness
- Mobile Responsiveness: Ensure good mobile experience
- Icons and Graphics: Create icons, diagrams, and illustrations
- Branding: Consistent visual identity across projects
- Screenshots: Keep documentation screenshots up to date
- Architecture Diagrams: Visual representations of system architecture
# Use Black for formatting
black .
# Use flake8 for linting
flake8 .
# Use mypy for type checking
mypy .
# Follow PEP 8 conventions
# Use type hints
def process_request(request: Request) -> Response:
"""Process an incoming request."""
pass// Use ESLint and Prettier
npm run lint
npm run format
// Use strict TypeScript
// Add JSDoc comments for public APIs
/**
* Process an incoming request
* @param request - The request to process
* @returns The processed response
*/
async function processRequest(request: Request): Promise<Response> {
// Implementation
}// Use Checkstyle for style checking
mvn checkstyle:check
// Use SpotBugs for bug detection
mvn spotbugs:check
// Follow Google Java Style Guide
// Add JavaDoc for public APIs
/**
* Process an incoming request.
* @param request The request to process
* @return The processed response
*/
public Response processRequest(Request request) {
// Implementation
}# Python test structure
def test_feature_success():
# Arrange
setup_test_data()
# Act
result = feature_under_test()
# Assert
assert result.is_success()
assert result.data == expected_data- Minimum Coverage: 80% code coverage for new features
- Critical Paths: 100% coverage for security-critical code
- Edge Cases: Test error conditions and boundary values
- Integration Tests: Test component interactions
def authenticate_user(credentials: Credentials) -> AuthResult:
"""
Authenticate a user with the provided credentials.
Args:
credentials: User credentials containing username and password
Returns:
AuthResult containing success status and user information
Raises:
AuthenticationError: If credentials are invalid
RateLimitError: If too many attempts have been made
"""# OpenAPI specification example
/api/users:
post:
summary: Create a new user
description: |
Creates a new user account with the provided information.
Requires admin privileges.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: User created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'- Search existing issues and PRs
- Check the project roadmap
- Discuss major changes in GitHub Discussions
- Ensure tests pass locally
- Update documentation
- Check code style and linting
- Verify backwards compatibility
type(scope): description
Examples:
feat(auth): add OAuth2 authentication support
fix(registry): resolve database connection timeout
docs(api): update authentication endpoint documentation
test(sdk): add integration tests for Java SDK
## Description
Brief description of the changes made.
## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## Testing
- [ ] Tests pass locally
- [ ] Added tests for new functionality
- [ ] Manual testing completed
## Checklist
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes- Functionality: Does the code work as intended?
- Code Quality: Is the code clean, readable, and maintainable?
- Testing: Are there adequate tests for the changes?
- Documentation: Is the documentation updated appropriately?
- Security: Are there any security implications?
- Performance: Are there any performance impacts?
- Be Responsive: Address feedback promptly
- Be Open: Welcome suggestions and improvements
- Explain Decisions: Justify your implementation choices
- Ask Questions: Clarify unclear feedback
**Bug Description**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected Behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment**
- OS: [e.g. Windows 10, Ubuntu 20.04]
- Browser: [e.g. Chrome, Firefox]
- Version: [e.g. 1.0.0]
**Additional Context**
Add any other context about the problem here.**Is your feature request related to a problem?**
A clear and concise description of what the problem is.
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.| Label | Description |
|---|---|
bug |
Something isn't working |
enhancement |
New feature or request |
documentation |
Improvements or additions to documentation |
good first issue |
Good for newcomers |
help wanted |
Extra attention is needed |
priority: high |
High priority issue |
priority: medium |
Medium priority issue |
priority: low |
Low priority issue |
- All Contributors: Listed in project README and release notes
- Regular Contributors: Invited to maintainer team
- Significant Contributions: Featured in community spotlights
- Special Recognition: Mentioned in project announcements
Active contributors may be invited to become maintainers:
- Code Review: Review and approve pull requests
- Issue Management: Triage and manage issues
- Release Management: Help with release planning and execution
- Community Support: Help new contributors get started
- Consistent Contributions: Regular, quality contributions over time
- Technical Knowledge: Deep understanding of the codebase
- Communication Skills: Good communication with community members
- Commitment: Ability to dedicate time to maintainer duties
If you discover a security vulnerability:
- DO NOT create a public issue
- Email security@autogentmcp.org with details
- Include detailed description and reproduction steps
- Wait for acknowledgment before public disclosure
- Input Validation: Validate all inputs thoroughly
- Authentication: Implement proper authentication and authorization
- Encryption: Use encryption for sensitive data
- Dependencies: Keep dependencies updated
- Code Review: Security-focused code review for sensitive changes
All components of the Autogent MCP ecosystem are released under the MIT License. This means:
- Use the software for any purpose, including commercial use
- Modify the source code to fit your needs
- Distribute copies of the software
- Sublicense and sell copies of the software
- Use the software in proprietary applications
- Include the copyright notice and license text in any copies
- Preserve the license and copyright notices
- No Warranty: The software is provided "as is" without warranty
- No Liability: Authors are not liable for any damages
- No Trademark: License doesn't grant trademark rights
MIT License
Copyright (c) 2025 Autogent MCP
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- GitHub Discussions: For general questions and discussions
- Discord: Real-time chat with the community
- Office Hours: Regular community video calls
- Mentorship Program: Pair with experienced contributors
- Documentation: Comprehensive guides and API references
- Examples: Working code examples and demos
- Troubleshooting: Common issues and solutions
- FAQ: Frequently asked questions
Thank you for contributing to the Autogent MCP ecosystem! Your contributions help make the project better for everyone. Whether you're fixing a bug, adding a feature, improving documentation, or helping other users, your efforts are appreciated.
- GitHub: Follow our repositories for updates
- Twitter: Follow @autogentmcp for announcements
- LinkedIn: Connect with the team and other contributors
- Newsletter: Subscribe for monthly updates
Happy Contributing! π
This guide is living documentation. If you have suggestions for improvements, please contribute to this guide as well!