Notion MCP Server
by v-3
Verified
# Contributing to Notion MCP Server
First off, thank you for considering contributing to the Notion MCP Server! This is an open-source project that helps integrate Notion with Large Language Models through the Model Context Protocol.
## Code of Conduct
By participating in this project, you are expected to uphold our Code of Conduct of treating all contributors with respect and maintaining a harassment-free experience for everyone.
## How Can I Contribute?
### Reporting Bugs
Before submitting a bug report:
- Check the existing issues to avoid duplicates
- Collect relevant information about the bug
- Use the bug report template below
**Bug Report Template:**
```markdown
**Description**
A clear description of the bug.
**To Reproduce**
Steps to reproduce the behavior:
1. Configure server with '...'
2. Call tool '...'
3. See error
**Expected behavior**
What you expected to happen.
**Actual behavior**
What actually happened.
**Environment**
- Node.js version:
- Operating System:
- Notion MCP Server version:
```
### Suggesting Enhancements
When suggesting enhancements:
- Use a clear and descriptive title
- Provide a detailed description of the proposed functionality
- Include examples of how the enhancement would be used
### Pull Requests
1. Fork the repository
2. Create a new branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests if available
5. Commit your changes (`git commit -m 'Add amazing feature'`)
6. Push to your branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request
#### Pull Request Guidelines
- Follow the existing code style
- Update documentation as needed
- Add tests if applicable
- Keep pull requests focused on a single feature or fix
## Development Setup
1. Clone your fork:
```bash
git clone https://github.com/your-username/notion-server.git
cd notion-server
```
2. Install dependencies:
```bash
npm install
```
3. Create a `.env` file:
```env
NOTION_API_KEY=your_notion_api_key_here
```
4. Build the project:
```bash
npm run build
```
## Style Guidelines
### TypeScript Style Guide
- Use TypeScript for all new code
- Follow existing code formatting
- Use meaningful variable and function names
- Add appropriate type annotations
- Document complex logic with comments
### Commit Messages
- Use clear and meaningful commit messages
- Start with a verb in the present tense
- Keep the first line under 50 characters
- Add detailed description if needed
Examples:
```
Add page deletion tool
Fix error handling in search_pages
Update documentation for create_page
```
## Adding New Tools
When adding new tools:
1. Define the tool in `TOOL_DEFINITIONS`:
```typescript
{
name: "tool_name",
description: "Clear description of what the tool does",
inputSchema: {
type: "object",
properties: {
// Define input parameters
},
required: []
}
}
```
2. Implement the handler in `toolHandlers`
3. Add appropriate error handling
4. Update documentation
5. Add examples in README.md
## Testing
- Test your changes with different inputs
- Verify error handling
- Test integration with Claude Desktop or other MCP clients
- Document any new test cases added
## Documentation
- Update README.md for new features
- Add JSDoc comments for new functions
- Update type definitions as needed
- Include examples for new functionality
## Questions?
Feel free to open an issue for:
- Help with development
- Questions about contributing
- Clarification on project direction
## License
By contributing, you agree that your contributions will be licensed under the MIT License.