<div align="center">
# Contributing to Roba Labs MCP Server
**Thank you for your interest in contributing to the Roba Labs MCP Server!**
We welcome contributions that help improve robotics information accessibility through AI.
</div>
---
## 📋 Code of Conduct
We are committed to providing a welcoming and inclusive environment. Please be respectful and considerate when contributing to this project.
---
## 🚀 How to Contribute
### 🐛 Reporting Bugs
Found a bug? Please create an issue with:
- **Clear title** - Describe the issue concisely
- **Detailed description** - What happened vs what you expected
- **Steps to reproduce** - Help us reproduce the issue
- **Environment details** - OS, Node.js version, MCP client used
- **Logs/Screenshots** - If applicable
### 💡 Suggesting Enhancements
Have an idea? Open an issue with:
- **Feature description** - What you'd like to see
- **Use case** - Why this would be valuable
- **Implementation idea** - Your thoughts on how to build it
- **Examples** - Any reference implementations or mockups
### 🔧 Pull Requests
We love pull requests! Here's how:
1. **Fork** the repository
2. **Create a branch** - `git checkout -b feature/your-feature`
3. **Make your changes** - Follow our coding standards
4. **Test your changes** - Run `npm test` (ensure 19/19 pass)
5. **Commit** - Use [Conventional Commits](https://www.conventionalcommits.org/) format
6. **Push** - `git push origin feature/your-feature`
7. **Open PR** - Describe your changes clearly
---
## 🛠 Development Setup
```bash
# 1. Fork and clone
git clone https://github.com/Tairon-ai/roba-labs-mcp.git
cd roba-labs-mcp
# 2. Install dependencies
npm install
# 3. Run tests (should see 19/19 passing)
npm test
# 4. Validate code
npm run validate
# 5. Start development server
npm run dev
```
---
## 📝 Coding Standards
### General Guidelines
- Follow existing code style (JavaScript/Node.js)
- Use meaningful variable and function names
- Keep functions focused on single responsibility
- Write clear, self-documenting code
### Documentation
- Add JSDoc comments for public methods
- Update README.md for user-facing changes
- Keep comments concise and relevant
### Commits
- Use [Conventional Commits](https://www.conventionalcommits.org/) format
- Examples:
- `feat: add simulation framework details`
- `fix: correct ROS2 documentation link`
- `docs: update installation instructions`
- `test: add tests for new robot types`
### Testing
- Maintain 100% test pass rate (19/19)
- Add tests for new functionality
- Ensure no regressions in existing tests
---
## 🤖 Adding New Tools
### 1. Define Tool in `mcp/index.js`
Add to the TOOLS array:
```javascript
{
name: 'your_tool_name',
description: 'Clear description of what this tool does',
inputSchema: {
type: 'object',
properties: {
param: {
type: 'string',
description: 'Parameter description',
},
},
required: ['param'],
},
}
```
Add handler in switch statement:
```javascript
case 'your_tool_name':
result = await robaApi.yourToolName(args.param);
break;
```
### 2. Implement Method in `mcp/tools.js`
```javascript
/**
* Description of what this method does
* @param {string} param - Parameter description
* @returns {Object} What it returns
*/
async yourToolName(param) {
try {
if (!param) {
throw new Error('Parameter is required');
}
// Your implementation here
const data = {
// Your data structure
};
return {
success: true,
data: data,
timestamp: new Date().toISOString()
};
} catch (error) {
return handleError(error);
}
}
```
### 3. Add Tests in `test/test-tools.js`
```javascript
runner.test('yourToolName - should work correctly', async () => {
const result = await runner.api.yourToolName('test-param');
assert(result.success === true, 'Should succeed');
assertHasProperty(result, 'data', 'Should have data');
});
```
### 4. Update Documentation
- Update README.md with tool description
- Add usage examples
- Document parameters and return values
---
## 📊 Improving Data Quality
Our MCP server is self-contained with curated data. You can improve:
### Robotics Frameworks
- Add new frameworks (simulation, middleware, physics)
- Update framework descriptions
- Add documentation links
- Include version information
### Robot Types
- Add new robot categories
- Improve descriptions and use cases
- Add complexity levels
- Recommend appropriate sensors/frameworks
### Learning Resources
- Curate high-quality tutorials
- Add community resources
- Organize by skill level
- Include official documentation links
### Platform Roadmap
- Keep roadmap up-to-date
- Add feature details
- Update timelines based on Roba Labs announcements
---
## ✅ Before Submitting
**Checklist:**
- [ ] Code follows project style
- [ ] All tests pass (`npm test` shows 19/19)
- [ ] Code validates (`npm run validate`)
- [ ] New features have tests
- [ ] Documentation updated (README.md, JSDoc)
- [ ] Commit messages follow Conventional Commits
- [ ] No breaking changes (or clearly documented)
- [ ] PR description explains the change
---
## 🔍 Review Process
1. **Automated checks** - Tests and validation must pass
2. **Code review** - Maintainers review your changes
3. **Discussion** - We may ask questions or suggest changes
4. **Merge** - Once approved, we'll merge your PR
---
## 💬 Questions?
- Check existing [Issues](https://github.com/Tairon-ai/roba-labs-mcp/issues)
- Review [README.md](README.md) for project overview
- Open a new issue for questions
---
## 🙏 Thank You!
Every contribution helps make robotics more accessible through AI. Whether it's:
- Fixing a typo
- Adding a new framework
- Improving documentation
- Reporting a bug
**Your contributions matter!** 🚀
---
<div align="center">
**Built by [Tairon.ai](https://tairon.ai) team with help from Claude**
</div>