Thank you for your interest in contributing to MCP CLI Server! This guide will help you get started with development and contributing to the project.
- Node.js 22+
- npm or pnpm
- TypeScript 5.8+
# Clone the repository
git clone <your-repo-url>
cd mcp-cli
# Install dependencies
npm install
# or
pnpm install
# Build the project
npm run build# Clean build
npm run build
# Development server with debug output
npm run serve
# Development server with MCPO proxy
npm run serve:mcpomcp-cli/
├── bin/ # Executable scripts
│ ├── mcp-cli # Unix executable
│ └── mcp-cli.cmd # Windows batch file
├── config/ # Build configuration
│ ├── heft.json # Heft build configuration
│ └── typescript.json # TypeScript configuration
├── examples/ # Example configurations
│ └── config.json # Sample configuration file
├── src/ # Source code
│ ├── config-schema.json # JSON schema for validation
│ ├── configuration.ts # Configuration management
│ ├── executor.ts # Command execution logic
│ ├── index.ts # Main entry point
│ └── schema.ts # Type definitions and validation
├── package.json # Project configuration
├── README.md # Project documentation
└── CONTRIBUTING.md # This file
| Variable | Description | Example |
|---|---|---|
MCP_CLI_CONFIG_PATH |
Path to configuration file | ./config.json |
MCP_CLI_CONFIG_JSON |
Inline JSON configuration | {"version":"1.0",...} |
DEBUG |
Enable debug logging | 1 |
VERBOSE |
Enable verbose logging | 1 |
- Build the project:
npm run build - Test locally with debug output:
npm run serve - Test with a sample configuration from
examples/config.json
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test your changes thoroughly
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use meaningful variable and function names
- Add comments for complex logic
- Ensure all types are properly defined
- Run the linter before submitting:
npm run lint(if available)
Use clear and descriptive commit messages:
feat: add new command validation featurefix: resolve issue with argument parsingdocs: update README with new examplesrefactor: improve error handling in executor
- Ensure your code builds successfully (
npm run build) - Update documentation if you've changed functionality
- Add examples if you've added new features
- Describe your changes clearly in the PR description
- Link any related issues
- Create test configuration files in the
examples/directory - Test different command types and argument combinations
- Verify error handling for invalid configurations
- Test environment variable configurations
When adding new features:
- Update the JSON schema in
src/config-schema.json - Update TypeScript interfaces in
src/schema.ts - Add validation logic if needed
- Update documentation and examples
- Test thoroughly with various configurations
- Update README.md for user-facing changes
- Update this CONTRIBUTING.md for development changes
- Add inline code documentation for complex functions
- Update examples in the
examples/directory
When reporting issues:
- Use a clear and descriptive title
- Provide steps to reproduce the issue
- Include your configuration file (if applicable)
- Include error messages and logs
- Specify your Node.js version and operating system
We welcome feature requests! Please:
- Check if the feature already exists or is planned
- Describe the use case clearly
- Provide examples of how it would be used
- Consider backwards compatibility
All contributions go through code review:
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
- Your contribution will be included in the next release
Releases are handled by maintainers:
- Version bump in package.json
- Update CHANGELOG.md
- Create release tag
- Publish to npm
Contributors will be recognized in:
- GitHub contributors list
- Release notes for significant contributions
- README acknowledgments (for major features)
Thank you for contributing to MCP CLI Server! 🚀