Thank you for your interest in contributing to the OpenStack MCP Server!
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Make your changes
- Ensure
make checkpasses (build + lint + tests) - Commit with conventional commits
- Push to your fork and open a Pull Request
# Install dependencies
go mod download
# Build
make build-all
# Run linter
make run-golangci-lint
# Run tests
go test ./...- All
.gofiles must have SPDX license headers - Use
go-bits/loggfor logging (not slog, zap, or logrus) - Use
go-bits/osextfor environment variable handling - Use
go-bits/mustfor fatal startup errors - Follow import grouping: stdlib / external / local
- All tool handlers must use
shared.ToolResult()/shared.ToolError()for responses
- Create
internal/tools/<service>/<service>.go - Implement
Register(s *mcpserver.MCPServer, provider *auth.Provider) - Add client method to
internal/auth/provider.goif needed - Register in
internal/server/server.go - Update the test in
internal/server/server_test.go
- Never expose auth tokens in tool responses
- Use field allowlists (not blocklists) when marshaling structs
- Validate user inputs that become URL path components
By contributing, you agree that your contributions will be licensed under Apache-2.0.