Publish MCP Server banner
levnikolaevich levnikolaevich

Publish MCP Server

Git community intermediate

Description

Publishes one of the bundled MCP servers to npm. Tag push triggers GitHub Actions → `npm publish --provenance`.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

Repository README

This is the README for levnikolaevich/claude-code-skills, shared by 22 entries in this directory. It describes the repository, not this entry specifically.


description: "Publish MCP server to npm (hex-line-mcp, hex-ssh-mcp, or hex-graph-mcp). Auto-detects unpublished changes, suggests bump type, syncs server.mjs version." allowed-tools: Read, Edit, Bash, Grep, AskUserQuestion

Publish MCP Server

Publishes one of the bundled MCP servers to npm. Tag push triggers GitHub Actions → `npm publish --provenance`.

Package Registry

Package Directory Tag Pattern CI Workflow
@levnikolaevich/hex-line-mcp mcp/hex-line-mcp/ hex-line-v* publish-hex-line.yml
@levnikolaevich/hex-ssh-mcp mcp/hex-ssh-mcp/ hex-ssh-v* publish-hex-ssh.yml
@levnikolaevich/hex-graph-mcp mcp/hex-graph-mcp/ hex-graph-v* publish-hex-graph.yml

Workflow

1. Scan all packages for unpublished changes

For each of the 3 packages above, run in parallel:

# Last tag for this package
git tag -l "${TAG_PREFIX}*" --sort=-v:refname | head -1

# Commits since last tag touching this package
git log ${LAST_TAG}..HEAD --oneline -- mcp/${PKG}/

# Unstaged changes (not yet committed)
git diff --stat -- mcp/${PKG}/

# Local version
node -e "console.log(require('./mcp/${PKG}/package.json').version)"

# npm registry version
npm view @levnikolaevich/${PKG} version 2>/dev/null || echo "not published"

A package **needs release** if it has commits since tag OR unstaged changes.

Display summary table:

| Package       | Local  | npm    | Commits | Unstaged | Status         |
|---------------|--------|--------|---------|----------|----------------|
| hex-line-mcp  | 1.1.1  | 1.1.1  | 2       | 6 files  | needs release  |
| hex-graph-mcp | 0.2.1  | 0.2.1  | 0       | 3 files  | needs release  |
| hex-ssh-mcp   | 1.1.1  | 1.1.1  | 0       | 0        | up to date     |

If no packages need release → report "All packages up to date" and stop.

2. Choose package

AskUserQuestion: "Which MCP server to publish?" — list only packages with commits > 0. If only one needs release, suggest it as default.

Set variables:

  • PKG = selected package name (e.g. hex-line-mcp)
  • PKG_DIR = mcp/${PKG}/
  • TAG_PREFIX = hex-line-v | hex-ssh-v | hex-graph-v
  • PKG_NAME = @levnikolaevich/${PKG}
  • LAST_TAG = most recent tag for this package

3. Show changes since last release

git log ${LAST_TAG}..HEAD --oneline -- mcp/${PKG}/
git diff --stat ${LAST_TAG}..HEAD -- mcp/${PKG}/

Display the output to the user.

4. Suggest bump type

Analyze the diff and commit messages:

  • Only existing file modifications, fix: commits → suggest patch
  • New files, new exports, feat: commits → suggest minor
  • Removed/renamed public API, BREAKING CHANGE or !: → suggest major

AskUserQuestion with the recommendation marked "(Recommended)":

  • patch (X.Y.Z → X.Y.Z+1): bug fixes, tweaks
  • minor (X.Y.Z → X.Y+1.0): new features, new tools
  • major (X.Y.Z → X+1.0.0): breaking changes

5. Pre-publish