First off, thank you for considering contributing to Deep Code Reasoning MCP! It's people like you that make this tool better for everyone.
By participating in this project, you are expected to uphold our principles:
- Be respectful and inclusive
- Welcome newcomers and help them get started
- Focus on what is best for the community
- Show empathy towards other community members
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Your environment (OS, Node.js version, etc.)
- Any relevant logs or error messages
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
- A clear and descriptive title
- A detailed description of the proposed functionality
- Any possible drawbacks or considerations
- If possible, a rough implementation approach
- Fork the repo and create your branch from
main - If you've added code that should be tested, add tests
- Ensure the test suite passes (
npm test) - Make sure your code lints (
npm run lint) - Ensure TypeScript types are correct (
npm run typecheck) - Update documentation as needed
- Issue that pull request!
- Fork and clone the repository:
git clone https://github.com/your-username/deep-code-reasoning-mcp.git
cd deep-code-reasoning-mcp- Install dependencies:
npm install- Set up your environment:
cp .env.example .env
# Add your GEMINI_API_KEY to .env- Run in development mode:
npm run devdeep-code-reasoning-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── analyzers/ # Core analysis implementations
│ ├── models/ # TypeScript types
│ ├── services/ # External service integrations
│ └── utils/ # Utility functions
├── examples/ # Example code for testing
└── tests/ # Test files
- Use TypeScript for all new code
- Provide comprehensive type definitions
- Avoid
anytypes unless absolutely necessary - Use interfaces for object shapes
- Follow the existing code style
- Use meaningful variable and function names
- Comment complex logic
- Keep functions focused and small
- Use clear and meaningful commit messages
- Reference issues and pull requests when relevant
- Keep commits atomic (one feature/fix per commit)
Example commit messages:
feat: add support for analyzing Python codebases
fix: handle edge case in N+1 query detection
docs: update installation instructions for Windows
test: add tests for cross-system impact analysis
- Write tests for new functionality
- Ensure existing tests pass
- Aim for good test coverage
- Test edge cases and error conditions
To add a new analysis tool:
- Create a new analyzer in
src/analyzers/ - Define the tool schema in
src/index.ts - Add the tool handler in the
CallToolRequestSchemahandler - Update the README with documentation
- Add tests for the new functionality
- Create an example in
examples/
- Update README.md for user-facing changes
- Add JSDoc comments to exported functions
- Include examples for new features
- Keep documentation concise but comprehensive
- All submissions require review
- Changes may be requested for clarity or consistency
- Be patient - reviews may take time
- Address feedback constructively
Contributors will be recognized in:
- The project's contributor list
- Release notes for significant contributions
- Special mentions for exceptional contributions
Feel free to open an issue with the question label or reach out to the maintainers.
Thank you for contributing to Deep Code Reasoning MCP!