Files
nextcloud-mcp-server/CONTRIBUTING.md
T
Chris Coutinho dfc75a8619 refactor: extract Astrolabe to separate repository
Astrolabe has been extracted to its own repository at
github.com/cbcoutinho/astrolabe for independent releases.

Changes:
- Replace third_party/astrolabe/ directory with git submodule
- Remove astrolabe-ci.yml and appstore-build-publish.yml workflows
- Remove scripts/bump-astrolabe.sh
- Remove Astrolabe sections from bump-version.yml workflow
- Remove Astrolabe build steps from test.yml CI workflow
- Remove astrolabe volume mount from docker-compose.yml
- Simplify astrolabe install hook to always use app store
- Update CONTRIBUTING.md to reflect two-component monorepo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 10:10:29 +01:00

2.8 KiB

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.