Skip to content

Latest commit

 

History

History
106 lines (71 loc) · 2.77 KB

File metadata and controls

106 lines (71 loc) · 2.77 KB

Contributing to Nextcloud MCP Server

Version Management

This monorepo uses commitizen for version management with independent versioning for two components:

Components

Component Scope Bump Command Tag Example
MCP Server mcp or none ./scripts/bump-mcp.sh v0.54.0
Helm Chart helm ./scripts/bump-helm.sh nextcloud-mcp-server-0.54.0

Note: The Astrolabe Nextcloud app has been moved to its own repository at cbcoutinho/astrolabe.

Commit Message Format

Use conventional commits with scopes to target specific components:

# MCP server changes
feat(mcp): add calendar sync API
fix(mcp): resolve authentication bug

# Helm chart changes
feat(helm): add resource limits
docs(helm): update values documentation

Unscoped commits default to the MCP server:

feat: add new feature  # → MCP server (v0.54.0)

Release Workflow

1. Make Changes with Scoped Commits

git commit -m "feat(helm): add ingress annotations"
git commit -m "feat(mcp): add calendar sync"

2. Bump Component Versions

# Bump MCP server (reads commits with scope=mcp or unscoped)
./scripts/bump-mcp.sh
# → Creates tag: v0.54.0
# → Updates: pyproject.toml, Chart.yaml:appVersion

# Bump Helm chart (reads commits with scope=helm)
./scripts/bump-helm.sh
# → Creates tag: nextcloud-mcp-server-0.54.0
# → Updates: Chart.yaml:version

3. Push Tags

git push --follow-tags

Changelog Filtering

Each component maintains its own CHANGELOG.md:

  • MCP Server: CHANGELOG.md (root) - includes feat(mcp): and unscoped commits
  • Helm Chart: charts/nextcloud-mcp-server/CHANGELOG.md - includes feat(helm): only

Manual Version Bumps

For specific increments:

# Patch bump (0.53.0 → 0.53.1)
uv run cz bump --increment PATCH

# Minor bump (0.53.0 → 0.54.0)
uv run cz bump --increment MINOR

# Major bump (0.53.0 → 1.0.0)
uv run cz bump --increment MAJOR

# For non-MCP components, use --config
cd charts/nextcloud-mcp-server
uv run cz --config .cz.toml bump --increment MINOR

Versioning Philosophy

  • MCP Server: Follows PEP 440, major_version_zero = true (0.x.x for pre-1.0)
  • Helm Chart: Follows PEP 440, starts at 0.53.0 (continues from current)

Chart.yaml Version vs appVersion

The Helm chart has TWO version fields:

  • version: Chart packaging version (bumped by feat(helm):)

    • Example: 0.53.00.54.0 when adding resource limits
  • appVersion: MCP server version being deployed (bumped by feat(mcp):)

    • Example: "0.53.0""0.54.0" when MCP server releases

This allows the chart to evolve independently from the application.