# Contributing to MCP iOS Simulator
Thank you for your interest in contributing to MCP iOS Simulator!
## Getting Started
1. Fork the repository
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/mcp-ios-simulator.git`
3. Install dependencies: `npm install`
4. Build the project: `npm run build`
## Development Setup
### Prerequisites
- macOS with Xcode installed
- Node.js v18 or later
- fb-idb (optional, for full gesture support)
### Running in Development
```bash
# Watch mode - auto-rebuild on changes
npm run dev
# In another terminal, test the MCP server
npm start
```
## Making Changes
1. Create a new branch: `git checkout -b feature/your-feature-name`
2. Make your changes
3. Test your changes thoroughly
4. Commit with clear messages: `git commit -m "feat: add new gesture support"`
### Commit Message Format
We follow conventional commits:
- `feat:` - New feature
- `fix:` - Bug fix
- `docs:` - Documentation changes
- `refactor:` - Code refactoring
- `test:` - Test additions or changes
- `chore:` - Build process or auxiliary tool changes
## Pull Request Process
1. Update the README.md if you've added new features
2. Update the TODO.md if you've completed planned features
3. Ensure your code builds without errors: `npm run build`
4. Submit your pull request with a clear description of changes
## Code Style
- Use TypeScript for all source code
- Use async/await over raw promises
- Add JSDoc comments for public functions
- Keep functions focused and small
## Adding New MCP Tools
When adding a new tool:
1. Add the tool definition in `src/index.ts`
2. Implement the handler function
3. Add documentation to README.md
4. Add tests if applicable
Example tool structure:
```typescript
server.tool("tool_name", "Tool description", {
param1: z.string().describe("Parameter description"),
}, async (args) => {
// Implementation
return {
content: [{ type: "text", text: "Result" }],
};
});
```
## Reporting Issues
When reporting issues, please include:
- macOS version
- Xcode version
- Node.js version
- Steps to reproduce
- Expected vs actual behavior
- Any error messages
## Questions?
Open an issue with the "question" label if you have questions about contributing.
## License
By contributing, you agree that your contributions will be licensed under the MIT License.