Thank you for your interest in contributing to fedramp-docs-mcp! This guide covers how to contribute effectively.
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/fedramp-docs-mcp.git cd fedramp-docs-mcp -
Set up development environment:
npm install npm run build
See Local Development Setup for detailed instructions.
Found a bug? Open an issue with:
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Error messages (if any)
Have an idea? Open an issue describing:
- The problem you're trying to solve
- Your proposed solution
- Alternative approaches considered
Documentation improvements are always welcome:
- Fix typos or unclear wording
- Add examples
- Improve guides
- Update outdated information
Code contributions should:
- Include tests for new functionality
- Pass existing tests
- Follow the code style
- Include documentation updates
git checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-description# Run in development mode
npm run dev
# Run tests as you work
npm test# Run all tests
npm test
# Run linting
npm run lint
# Build to check for TypeScript errors
npm run buildnpx @modelcontextprotocol/inspector node dist/index.jsOpen http://localhost:6274 and test your changes interactively.
git add .
git commit -m "feat: add new functionality"Follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentation onlytest:- Tests onlyrefactor:- Code refactoringchore:- Build/tooling changes
git push origin feature/your-feature-nameOpen a Pull Request on GitHub with:
- Clear description of changes
- Reference to related issues
- Test results
- Use TypeScript strict mode
- Add types for all function parameters and returns
- Prefer
interfaceovertypefor object shapes - Use meaningful variable names
The project uses ESLint and Prettier:
# Check formatting
npm run lint
# Auto-fix issues
npm run lint:fix
npm run format- Write tests for new functionality
- Keep tests focused and readable
- Mock external dependencies
fedramp-docs-mcp/
├── src/
│ ├── index.ts # Entry point
│ ├── tools/ # MCP tool implementations
│ │ ├── ksi.ts # KSI-related tools
│ │ ├── controls.ts # Control mapping tools
│ │ └── ...
│ ├── utils/ # Shared utilities
│ └── types/ # TypeScript types
├── tests/ # Test files
├── docs/ # Documentation
└── dist/ # Build output (generated)
- Create tool implementation in
src/tools/:
export async function myNewTool(params: MyToolParams): Promise<MyToolResult> {
// Implementation
}- Register the tool in
src/index.ts:
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
// ... existing tools
{
name: 'my_new_tool',
description: 'What this tool does',
inputSchema: {
type: 'object',
properties: {
param1: { type: 'string', description: '...' }
}
}
}
]
}));- Add tests in
tests/:
describe('myNewTool', () => {
it('should do something', async () => {
const result = await myNewTool({ param1: 'value' });
expect(result).toBeDefined();
});
});- Update documentation in
docs/reference/tools.md
Pull requests are reviewed for:
- Functionality - Does it work correctly?
- Tests - Are there adequate tests?
- Code quality - Is it readable and maintainable?
- Documentation - Is it documented?
- Compatibility - Does it work with existing features?
Expect feedback and iteration. This is normal and helps ensure quality.
Maintainers handle releases:
- Update version in
package.json - Update
CHANGELOG.md - Create git tag
- Publish to npm
- Update MCP Registry
- GitHub Issues - For bugs and features
- GitHub Discussions - For questions and ideas
Be respectful and constructive. We're all here to make FedRAMP compliance easier.
By contributing, you agree that your contributions will be licensed under the project's MIT License.