Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Changesets

The TypeScript packages in this repo are versioned with [changesets](https://github.com/changesets/changesets). If your PR changes a TypeScript server in `src/` in a way users will notice, add a changeset:

```bash
npm run changeset
```

Pick the affected package(s), choose a bump type, and write a one-line summary — that line becomes the CHANGELOG entry. Commit the generated file in `.changeset/` with your PR.

Bump types:

- **patch** — bug fixes
- **minor** — new tools, prompts, resources, or options
- **major** — breaking changes (tool removed or renamed, schema change that breaks clients, protocol or Node floor bump)

Docs-only, CI-only, and Python-only changes don't need a changeset. The Python servers (`fetch`, `git`, `time`) use CalVer and are not managed by changesets — see [RELEASING.md](../RELEASING.md).

Merged changesets accumulate in a rolling **"Version Packages" PR**; merging that PR applies the version bumps and CHANGELOG updates. Publishing happens when a maintainer creates a GitHub Release.
14 changes: 14 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"changelog": [
"@changesets/changelog-github",
{ "repo": "modelcontextprotocol/servers" }
],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
69 changes: 69 additions & 0 deletions .github/workflows/prepare-python-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Prepare Python Release

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is prepare-release.yml the best name for this, since it specifically is for python files? maybe prepare-python-release.yml

@olaservo olaservo Aug 3, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — renamed to prepare-python-release.yml (matching its display name and scripts/prepare_python_release.py), RELEASING.md links updated. Unlike release.yml, nothing binds to this filename, so the rename is free.

🦉 — Claude, via Claude Code


# Stamps today's CalVer date (e.g. 2026.8.1) onto Python packages that changed
# since their last version bump, and opens a normal PR with the result. The
# TypeScript packages are versioned by changesets (see version-packages.yml).
# Publishing happens separately, when a maintainer creates a GitHub Release.

on:
workflow_dispatch:

jobs:
prepare:
if: github.repository_owner == 'modelcontextprotocol'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Stamp CalVer versions
run: uv run --script scripts/prepare_python_release.py --directory src > stamped.txt

- name: Check for changes
id: changes
run: |
if git diff --quiet; then
echo "No Python packages need a version stamp"
echo "changed=false" >> "$GITHUB_OUTPUT"
else
echo "changed=true" >> "$GITHUB_OUTPUT"
fi

- name: Create pull request
if: steps.changes.outputs.changed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
DATE=$(date +%Y.%-m.%-d)
BRANCH="release/python-$DATE"
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git checkout -b "$BRANCH"
git add -u
git commit -m "chore: stamp Python CalVer versions for $DATE"
git push --force origin "$BRANCH"
{
echo "Stamps today's CalVer date onto the Python packages that changed since their last version bump:"
echo
sed 's/^/- /' stamped.txt
echo
echo "Generated by the **Prepare Python Release** workflow. After merging, create a GitHub Release to publish."
echo
echo "> [!NOTE]"
echo "> PRs opened with the workflow token don't trigger CI — close and reopen this PR to run it."
} > pr-body.md
if gh pr list --head "$BRANCH" --state open --json number --jq length | grep -qv '^0$'; then
echo "PR for $BRANCH already open — branch updated"
else
gh pr create \
--head "$BRANCH" \
--title "chore: stamp Python CalVer versions for $DATE" \
--body-file pr-body.md
fi
Loading