Thank you for your interest in contributing to faf-mcp. This document provides guidelines for contributing to the project.
This project follows F1-inspired engineering standards:
- Championship-grade quality - No compromises on reliability or performance
- Sub-50ms performance targets - Speed matters
- 100% TypeScript strict mode - Type safety is non-negotiable
- Zero errors - Every build must be clean
- Test everything - If it's not tested, it doesn't work
- Read the Code of Conduct
- Check existing issues to avoid duplicates
- For major changes, open an issue first to discuss your proposal
- Node.js 18 or higher
- npm or yarn
- Git
- your MCP client (for testing)
# Clone the repository
git clone https://github.com/Wolfe-Jam/faf-mcp.git
cd faf-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test
# Link for local testing
npm link-
Create a branch from
main:git checkout -b feature/your-feature-name
-
Make your changes following our coding standards
-
Test thoroughly:
npm test npm run build -
Commit your changes using our commit format:
<type>: <what changed> - <specific detail> - <specific detail>Types:
feat,fix,docs,test,refactor,perf,choreExample:
feat: add faf_enhance tool for context optimization - Implements scoring algorithm with 21-slot system - Adds TypeScript interfaces for tool parameters - Includes test coverage for edge cases -
Push to your fork and submit a pull request
- Use TypeScript strict mode (already configured)
- All functions must have explicit return types
- No
anytypes (useunknownif truly needed) - Prefer interfaces over types for object shapes
- All new features require tests
- Maintain or improve code coverage
- Test both success and error cases
- Include edge case testing
- Profile performance-critical code
- Target sub-50ms for operations
- No blocking operations in hot paths
- Document any performance considerations
- Update README.md for user-facing changes
- Add JSDoc comments for exported functions
- Update CHANGELOG.md following Keep a Changelog format
- Include examples for new features
-
Ensure tests pass:
npm test npm run build -
Update documentation as needed
-
Add your changes to CHANGELOG.md under "Unreleased"
-
Fill out the PR template completely
-
Request review from maintainers
- One feature or fix per PR
- Keep PRs focused and small when possible
- Link related issues
- Include screenshots for UI changes
- Respond to review feedback promptly
To test your changes locally with your MCP client:
-
Link your local build:
npm link
-
Update your MCP client config:
{ "mcpServers": { "faf-mcp": { "command": "node", "args": ["/path/to/your/local/faf-mcp/build/index.js"] } } } -
Restart your MCP client
-
Test your changes in conversation
- Performance improvements
- Bug fixes with reproducible test cases
- Enhanced error handling
- Better TypeScript types
- Documentation improvements
- New tool implementations
- Test coverage improvements
- Example use cases
- Integration guides
- Bug reports with detailed reproduction steps
- Changes that increase dependencies unnecessarily
- Breaking changes without migration path
- Performance regressions
- Code that doesn't pass TypeScript strict checks
- Issues: For bug reports and feature requests
- Discussions: For questions and general discussion at github.com/Wolfe-Jam/faf/discussions
- Email: team@faf.one for security issues or private inquiries
Contributors are recognized in several ways:
- Listed in CHANGELOG.md for their contributions
- Mentioned in release notes for significant features
- Added to package.json contributors list
By contributing, you agree that your contributions will be licensed under the MIT License. See LICENSE file for details.
If you have questions about contributing, open a discussion or reach out to team@faf.one.
Built with championship standards by the FAF community
Created by Wolfe James (ORCID: 0009-0007-0801-3841)