Skip to main content
Glama
CONTRIBUTING.md5.81 kB
# Contributing Guide Thank you for your interest in contributing to NotebookLM MCP HTTP Server! --- ## How to Contribute ### 1. Report a Bug Before creating an issue: - Check if the bug hasn't already been reported - Consult the [troubleshooting guide](./deployment/docs/05-TROUBLESHOOTING.md) **To create an issue, include:** ```markdown ## Environment - OS: Windows 10/11 (Linux/macOS = experimental support) - Node.js version: (node --version) - npm version: (npm --version) ## Description [Clear description of the problem] ## Steps to Reproduce 1. Start the server with: ... 2. Call the endpoint: ... 3. Observe the error: ... ## Expected Behavior [What should happen] ## Actual Behavior [What actually happens] ## Logs ``` [Relevant server logs] ``` ## Resolution Attempts [What you've already tried] ``` ### 2. Propose an Enhancement **For a new feature:** 1. Open a **Discussion** (not an Issue) to discuss it first 2. Explain the problem it solves 3. Describe your proposed solution 4. Wait for feedback before implementing **Examples of good proposals:** - "Add support for X authentication type" - "Improve performance of Y" - "Add endpoint for Z" ### 3. Submit Code #### Git Workflow ```bash # 1. Fork the project on GitHub # 2. Clone your fork git clone https://github.com/YOUR-USERNAME/notebooklm-mcp.git cd notebooklm-mcp # 3. Create a branch for your feature git checkout -b feature/my-new-feature # 4. Make your changes # ... code ... # 5. Test your changes npm run build npm run start:http # Test manually with curl or n8n # 6. Commit git add . git commit -m "feat: short description of the feature" # 7. Push to your fork git push origin feature/my-new-feature # 8. Open a Pull Request on GitHub ``` #### Commit Format Use [Conventional Commits](https://www.conventionalcommits.org/): ``` feat: add endpoint /notebooks/:id/sources fix: fix timeout on Windows docs: improve n8n guide refactor: simplify session manager chore: update dependencies ``` #### Code Standards **TypeScript:** - Use strict types (`strict: true`) - No `any` unless absolutely necessary - Comment complex functions **Style:** - Indentation: 2 spaces - Quotes: single `'` - Semicolons: yes - Follow existing project style **Logs:** ```typescript import { log } from './utils/logger.js'; log.success('✅ Operation successful'); log.info('ℹ️ Information'); log.warning('⚠️ Warning'); log.error('❌ Error'); log.dim('... secondary details'); ``` #### Automated Tests (Recommended) Before submitting, run the test suite: ```bash # 1. Clean build npm run build # 2. Start the server npm run start:http # 3. In another terminal, run tests .\deployment\scripts\test-api.ps1 # Complete tests (10 tests) .\deployment\scripts\test-errors.ps1 # Error tests (12 tests) # 4. Verify: all tests pass ✅ ``` **Documentation:** [Test Scripts](./deployment/scripts/README.md) #### Manual Tests (Alternative) If you can't use PowerShell scripts: ```bash # 1. Clean build npm run build # 2. Test health check curl http://localhost:3000/health # 3. Test ask question curl -X POST http://localhost:3000/ask \ -H "Content-Type: application/json" \ -d '{"question":"test","notebook_id":"parents-numerique"}' # 4. Check server logs # No TypeScript errors # No unexpected warnings ``` ### 4. Improve Documentation **Documentation is highly appreciated!** - Fix typos - Clarify confusing sections - Add missing examples - Translate to other languages **Documentation files:** - `README.md` - Complete overview (merged MCP + HTTP) - `deployment/QUICK-START.md` - Quick guide - `deployment/docs/*.md` - Detailed guides (01-06) - `deployment/docs/README.md` - Navigation index - `deployment/scripts/README.md` - Test scripts guide --- ## Project Structure ``` notebooklm-mcp/ ├── src/ │ ├── http-wrapper.ts # HTTP REST API entry point │ ├── index.ts # MCP stdio entry point │ ├── auth/ │ │ └── auth-manager.ts # Google authentication management │ ├── session/ │ │ ├── session-manager.ts # Browser session pool │ │ └── browser-session.ts # Individual session │ ├── tools/ │ │ └── index.ts # MCP tool handlers │ ├── library/ │ │ └── notebook-library.ts # Notebook library │ └── utils/ │ ├── logger.ts # Colored logs │ └── page-utils.ts # Playwright utilities ├── deployment/ │ ├── README.md │ ├── docs/ # Complete documentation │ └── scripts/ # PowerShell scripts └── Data/ # Runtime data (gitignored) ``` --- ## Contribution Areas ### Easy for Beginners - Fix typos - Improve log messages - Add examples in docs - Test on different OS ### Intermediate Level - Add automated tests - Improve error handling - Optimize performance - Add HTTPS/TLS support ### Advanced Level - Add authentication strategies (JWT, OAuth) - Multi-user support - Response caching - Monitoring/metrics --- ## Code of Conduct **Be respectful and constructive:** ✅ Accepted: - Questions, even basic ones - Constructive criticism - Improvement suggestions - Requests for clarification ❌ Not accepted: - Offensive comments - Spam or self-promotion - Unrelated requests --- ## License By contributing, you agree that your contributions will be licensed under the [MIT License](./LICENSE). --- ## Questions? - Open a [GitHub Discussion](https://github.com/roomi-fields/notebooklm-mcp/discussions) - Consult the [documentation](./deployment/docs/) - Read [existing issues](https://github.com/roomi-fields/notebooklm-mcp/issues) --- **Thank you for contributing!** 🙏

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/roomi-fields/notebooklm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server