This document describes the release process for mcp-clj projects.
The release process is automated via GitHub Actions and includes:
Version numbers follow the format: Major.minor.commit-count
dev/build.clj (currently 0.1)Example: 0.1.49 means version 0.1 with 49 commits
Clojars Account
GitHub Secrets Add these secrets to your GitHub repository (Settings → Secrets → Actions):
CLOJARS_USERNAME: Your Clojars usernameCLOJARS_PASSWORD: Your Clojars deployment tokenAlways test the release process first with a dry run:
trueThis will:
Check the workflow output:
Once dry run succeeds:
falseThis will:
v0.1.49)The following projects are released to Clojars:
org.hugoduncan/mcp-clj-serverorg.hugoduncan/mcp-clj-clientorg.hugoduncan/mcp-clj-in-memory-transportTest-only projects (test-dep, java-sdk-wrapper) are not released.
# Build a specific project
cd projects/server
clojure -T:build jar
# Build all projects
for project in server client in-memory-transport; do
  cd "projects/$project"
  clojure -T:build jar
  cd ../..
done
# First build the JARs, then:
bash scripts/smoke-test.sh
You cannot do a true dry-run deploy, but you can verify the JARs are built correctly:
cd projects/server
clojure -T:build jar
# Inspect the JAR
jar tf target/mcp-clj-server-*.jar | less
If the workflow detects an existing tag:
This is not supported by design. Instead:
Changelogs are automatically generated using git-cliff from conventional commit messages.
Use semantic commit prefixes:
feat: - New featuresfix: - Bug fixesperf: - Performance improvementsrefactor: - Code refactoringdocs: - Documentation changestest: - Test changesbuild: - Build system changesci: - CI/CD changeschore: - Other changesExample: feat: add subscription support for resources
# View changelog for unreleased commits
git cliff --unreleased
# Generate full changelog
git cliff --output CHANGELOG.md
If GitHub Actions is unavailable, you can deploy manually:
# 1. Build the JAR
cd projects/server
clojure -T:build jar
# 2. Configure Clojars credentials in ~/.m2/settings.xml
cat > ~/.m2/settings.xml <<EOF
<settings>
  <servers>
    <server>
      <id>clojars</id>
      <username>YOUR_USERNAME</username>
      <password>YOUR_TOKEN</password>
    </server>
  </servers>
</settings>
EOF
# 3. Deploy
clojure -X:deploy
# 4. Repeat for other projects (client, in-memory-transport)
After a successful release:
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs | 
| ← | Move to previous article | 
| → | Move to next article | 
| Ctrl+/ | Jump to the search field |