Thank you for your interest in contributing to the Dremio MCP Server project! This document provides guidelines and information for contributors.
This project follows the Contributor Covenant Code of Conduct. Please read CODE_OF_CONDUCT.md before contributing. By participating, you are expected to uphold this code.
-
Install Python 3.11 or later
-
Install the
uvpackage manager:# Follow instructions at https://docs.astral.sh/uv/guides/install-python/ -
Fork the repository:
-
Install dependencies:
cd dremio-mcp-server uv sync -
Verify installation:
uv run dremio-mcp-server --help
dremio-mcp-server/
├── src/
│ └── dremioai/
│ ├── config/ # Configuration management
│ ├── servers/ # MCP server implementation
│ └── tools/ # Dremio tools implementation
└── docs/ # Documentation
-
Fork the repository and create your branch from
main:git checkout -b feature/your-feature-name
-
Make your changes, ensuring you:
- Follow the coding style guidelines
- Add/update tests as needed
- Update documentation as needed
- Keep commits atomic and well-described
-
Push to your fork and submit a pull request
-
Wait for review. The maintainers will review your PR and might request changes
-
Code Style
- Follow PEP 8 guidelines
- Use type hints for function arguments and return values
- Document functions and classes using docstrings
-
Commit Messages
- Use clear, descriptive commit messages
- Start with a verb in imperative mood (e.g., "Add", "Fix", "Update")
- Reference issues if applicable
-
Feature Development
- Create an issue before starting significant work
- Discuss major changes in issues before implementing
- Keep changes focused and scoped
- Update documentation for new features or changes
- Include docstrings for new functions and classes
- Update README.md if adding new features
- Add examples for significant new functionality
- Documentation should be in Markdown format
- Report bugs and request features through GitHub issues
- Join discussions in the issues and pull requests
- Help other contributors and users
- Share improvements and success stories
When adding new tools:
-
Inherit from the
Toolsclass:from dremioai.tools.tools import Tools from dremioai.config.tools import ToolType class MyNewTool(Tools): For: ClassVar[Annotated[ToolType, ToolType.FOR_SELF]] async def invoke(self) -> Dict[str, Any]: """Tool description here""" # Implementation pass
-
Add appropriate tests
-
Update documentation
Feel free to:
- Open an issue for questions
- Ask for clarification on existing issues
- Reach out to maintainers
Thank you for contributing to Dremio MCP Server!