Thank you for your interest in contributing to TurboMCP Studio! This document provides guidelines and instructions for contributing to the project.
By participating in this project, you agree to maintain a respectful and inclusive environment for all contributors. We expect:
- Respectful and constructive communication
- Welcoming attitude towards newcomers
- Focus on what's best for the community
- Empathy towards other community members
If you find a bug, please create an issue on GitHub with:
- Clear title describing the issue
- Steps to reproduce the problem
- Expected behavior vs actual behavior
- Environment details:
- OS and version
- TurboMCP Studio version
- Rust version (
rustc --version) - Node.js version (
node --version)
- Screenshots or logs if applicable
We welcome feature suggestions! Please create an issue with:
- Clear description of the feature
- Use case - why is this needed?
- Proposed solution (if you have one)
- Alternatives considered (optional)
We actively welcome pull requests!
- Check existing issues to avoid duplicate work
- Create an issue first for major changes to discuss the approach
- Fork the repository and create a branch from
main
# Clone your fork
git clone https://github.com/YOUR_USERNAME/turbomcpstudio.git
cd turbomcpstudio
# Install dependencies (TurboMCP will be fetched from crates.io automatically)
pnpm install
# Start development server
pnpm run tauri dev-
Create a branch with a descriptive name:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Follow the code style:
- Rust: Run
cargo fmtandcargo clippy - TypeScript: Run
pnpm run check - Svelte 5: Use runes mode (
$state,$derived,$props())
- Rust: Run
-
Write clear commit messages:
feat: Add tool execution history fix: Resolve server connection timeout docs: Update installation instructions refactor: Simplify server store logicFollow Conventional Commits:
feat:New featuresfix:Bug fixesdocs:Documentation changesstyle:Code style changes (formatting)refactor:Code refactoringtest:Test additions or changeschore:Maintenance tasks
-
Test your changes:
# Run Rust tests cd src-tauri && cargo test # Run type checking pnpm run check # Test the app manually pnpm run tauri dev
-
Update documentation if needed:
- Update README.md for user-facing changes
- Add changelog entry for notable changes
-
Push your branch:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title and description
- Reference to related issue (e.g., "Fixes #123")
- Screenshots/GIFs for UI changes
- Test results if applicable
-
Respond to feedback:
- Address review comments promptly
- Push additional commits to the same branch
- Request re-review when ready
Before submitting, ensure:
- Code follows the project's style guidelines
-
cargo fmtandcargo clippypass (no warnings) -
pnpm run checkpasses (no TypeScript errors) - All tests pass (
cargo test) - Documentation is updated if needed
- Commit messages follow Conventional Commits
- Branch is up to date with
main
turbomcpstudio/
├── src/ # SvelteKit frontend
│ ├── lib/
│ │ ├── components/ # Svelte components (use runes mode)
│ │ ├── stores/ # State management
│ │ └── utils/ # Utility functions
│ └── routes/ # SvelteKit routing
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── commands/ # Tauri command handlers
│ │ ├── mcp_client/ # MCP client integration
│ │ └── lib.rs # Main entry point
│ └── Cargo.toml
└── static/ # Static assets
// ✅ Correct - Use runes
const { prop } = $props();
let count = $state(0);
const doubled = $derived(count * 2);
// ❌ Incorrect - Legacy syntax
export let prop;
let count = 0;
$: doubled = count * 2;- Use strict type checking
- Prefer
interfaceovertypefor objects - Use meaningful variable names
- Document complex functions with JSDoc
- Follow Rust idioms and best practices
- Use
ResultandOptionfor error handling - Document public APIs with doc comments
- Keep functions focused and testable
- Write tests for new features
- Ensure existing tests pass
- Aim for good test coverage
- Test edge cases and error conditions
- Profile before optimizing
- Use Svelte's reactivity efficiently
- Minimize expensive operations in hot paths
- Keep bundle sizes reasonable
TurboMCP Studio is a primary dogfooding application for TurboMCP. If you encounter issues with TurboMCP:
- Don't implement workarounds - report upstream
- Create detailed bug reports for TurboMCP maintainers
- Focus on developer experience - make it obvious when TurboMCP has issues
Releases are managed by maintainers. See RELEASE.md for details.
- General questions: GitHub Discussions
- Bug reports: GitHub Issues
- Security issues: Email maintainers privately (see SECURITY.md)
By contributing to TurboMCP Studio, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to TurboMCP Studio! 🚀