Skip to content

Commit fa040eb

Browse files
authored
Merge pull request #64 from AtomGraph/ci/mcp-registry
A release lists itself in the MCP Registry
2 parents a928ef2 + 8ec4fcf commit fa040eb

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,17 @@ on:
44
push:
55
tags:
66
- 'v*.*.*'
7+
# publishes a released tag's server.json to the MCP Registry, and nothing else
8+
workflow_dispatch:
9+
inputs:
10+
tag:
11+
description: Released tag to list in the MCP Registry (e.g. v2.0.1)
12+
required: true
713

814
jobs:
915
build:
1016
name: Build distributions
17+
if: github.event_name == 'push'
1118
runs-on: ubuntu-latest
1219
steps:
1320
- uses: actions/checkout@v7
@@ -27,6 +34,7 @@ jobs:
2734
publish:
2835
name: Publish to PyPI
2936
needs: build
37+
if: github.event_name == 'push'
3038
runs-on: ubuntu-latest
3139
environment: pypi
3240
permissions:
@@ -44,6 +52,7 @@ jobs:
4452
github-release:
4553
name: GitHub Release
4654
needs: publish
55+
if: github.event_name == 'push'
4756
runs-on: ubuntu-latest
4857
permissions:
4958
contents: write
@@ -57,3 +66,38 @@ jobs:
5766
env:
5867
GH_TOKEN: ${{ github.token }}
5968
run: gh release create "$GITHUB_REF_NAME" --title "$GITHUB_REF_NAME" --notes-file notes.md --verify-tag
69+
70+
mcp-registry:
71+
name: Publish to the MCP Registry
72+
needs: publish
73+
if: ${{ !cancelled() && (needs.publish.result == 'success' || github.event_name == 'workflow_dispatch') }}
74+
runs-on: ubuntu-latest
75+
permissions:
76+
id-token: write
77+
env:
78+
TAG: ${{ inputs.tag || github.ref_name }}
79+
MCP_PUBLISHER: v1.8.1
80+
steps:
81+
- uses: actions/checkout@v7
82+
with:
83+
ref: ${{ env.TAG }}
84+
85+
- name: Install mcp-publisher
86+
run: curl -fsSL "https://github.com/modelcontextprotocol/registry/releases/download/$MCP_PUBLISHER/mcp-publisher_linux_amd64.tar.gz" | tar xz mcp-publisher
87+
88+
# the registry checks the package on PyPI, which may lag the upload
89+
- name: Wait for the version on PyPI
90+
run: |
91+
version="${TAG#v}"
92+
for _ in $(seq 30); do
93+
curl -fsS "https://pypi.org/pypi/web-algebra/$version/json" > /dev/null && exit 0
94+
sleep 10
95+
done
96+
echo "web-algebra $version is not on PyPI" >&2
97+
exit 1
98+
99+
- name: Log in with GitHub OIDC
100+
run: ./mcp-publisher login github-oidc
101+
102+
- name: Publish server.json
103+
run: ./mcp-publisher publish

‎CHANGELOG.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ All notable changes to Web Algebra are recorded here. The format follows
55
[Semantic Versioning](https://semver.org/). The normative definition of every
66
operation is [formal-semantics.md](formal-semantics.md).
77

8+
## [2.0.2] - Unreleased
9+
10+
### Added
11+
12+
- **A release lists itself in the MCP Registry**: the release workflow
13+
publishes `server.json` after the PyPI upload, logged in with GitHub OIDC.
14+
Run by hand with a released tag, it publishes that tag's `server.json` and
15+
nothing else.
16+
817
## [2.0.1] - 2026-10-21
918

1019
### Added

0 commit comments

Comments
 (0)