We welcome contributions to ChittyCloude™ MCP! This document provides guidelines for contributing to the project.
- Node.js 18+
- npm or yarn
- Git
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/chittycloud-mcp.git cd chittycloud-mcp - Install dependencies:
npm install
- Test the installation:
npm test
- Create a new branch from main:
git checkout -b feature/your-feature-name
- Make your changes
- Test your changes:
npm run test npm run qa - Commit your changes:
git commit -m "feat: add your feature description" - Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request
- Run the QA suite:
npm run qa - Run security tests:
npm run security-test - Test with real MCP clients:
npm run dev
- All input must be validated with Zod schemas
- Never log sensitive data (API keys, tokens)
- Use rate limiting for public endpoints
- Sanitize all user inputs
- Use TypeScript for new features
- Follow existing naming conventions
- Add JSDoc comments for public functions
- Use meaningful variable names
We use conventional commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changestest:- Test additions/changesrefactor:- Code refactoringsecurity:- Security improvements
To add support for a new cloud platform:
-
Create a new adapter class in
secure-index.js:class NewPlatformAdapter { constructor() { this.platform = 'newplatform'; this.authenticated = false; } async authenticate(credentials) { /* implementation */ } async deploy(config) { /* implementation */ } async getStatus(deploymentId) { /* implementation */ } }
-
Add to platform registry:
platformAdapters.set('newplatform', new NewPlatformAdapter());
-
Update schemas:
const PlatformSchema = z.enum(['cloudflare', 'vercel', 'railway', 'newplatform']);
-
Add documentation to README.md
-
Add tests for the new platform
- Security penetration tests
- Input validation tests
- API integration tests
- Error handling tests
- Performance tests
// Example test
const result = await testMCPCall({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "your-tool",
arguments: { /* test args */ }
}
});
// Assertions
expect(result.response).toBeDefined();
expect(result.response.error).toBeUndefined();When reporting bugs, please include:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Environment details (Node.js version, OS, etc.)
- Error logs (with sensitive data removed)
For new features:
- Check existing issues first
- Provide clear use case description
- Consider backwards compatibility
- Include implementation suggestions if possible
For security vulnerabilities:
- DO NOT create a public issue
- Email security@chitty.cc directly
- Include detailed reproduction steps
- We'll respond within 24 hours
When adding features:
- Update README.md with new tools/capabilities
- Add usage examples
- Update INSTALL.md if setup changes
- Include JSDoc comments for all public functions
- Use official Cloudflare APIs
- Follow Cloudflare Workers best practices
- Test with multiple account types (free/paid)
- Use Vercel API v13 (latest)
- Support both personal and team accounts
- Handle framework detection properly
- Follow Railway API patterns
- Support both apps and databases
- Handle service linking correctly
Before submitting:
- Tests pass (
npm run test) - Security tests pass (
npm run security-test) - QA suite passes (
npm run qa) - Code follows style guidelines
- Documentation updated
- Commit messages follow conventions
- No sensitive data in code/commits
- Changes are backwards compatible
- All PRs require review from maintainers
- Security-related changes require 2+ reviews
- We'll provide constructive feedback
- Address review comments promptly
- Squash commits before merge
Contributors will be:
- Listed in CONTRIBUTORS.md
- Recognized in release notes
- Given appropriate repository permissions
- Create a discussion for questions
- Join our community chat (link coming soon)
- Email support@chitty.cc for urgent issues
Thank you for contributing to ChittyCloude™ MCP! ☁️