Skip to content
Merged
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
81 changes: 81 additions & 0 deletions .github/workflows/publish-mcp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Publish MCP registry metadata

on:
push:
tags: ["v*"]
workflow_dispatch:
inputs:
version:
description: Version to publish (without a leading v)
required: true
type: string

permissions:
contents: read
id-token: write

jobs:
publish:
name: Publish to MCP Registry
runs-on: ubuntu-latest
environment: release
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Verify release metadata
env:
INPUT_VERSION: ${{ github.event.inputs.version }}
run: |
set -euo pipefail
if [ -n "$INPUT_VERSION" ]; then
version="$INPUT_VERSION"
else
version="${GITHUB_REF_NAME#v}"
fi
server_version="$(node -p "require('./server.json').version")"
package_version="$(node -p "require('./server.json').packages[0].version")"
package_identifier="$(node -p "require('./server.json').packages[0].identifier")"
npm_name="$(node -p "require('./npm/droidsight/package.json').name")"
npm_version="$(node -p "require('./npm/droidsight/package.json').version")"
server_name="$(node -p "require('./server.json').name")"
package_mcp_name="$(node -p "require('./npm/droidsight/package.json').mcpName")"
for pair in \
"server.json:$server_version" \
"server.json packages[0]:$package_version" \
"npm/droidsight/package.json:$npm_version"; do
name="${pair%%:*}"
actual="${pair#*:}"
if [ "$actual" != "$version" ]; then
echo "::error::$name is $actual, expected $version" >&2
exit 1
fi
done
if [ "$package_identifier" != "$npm_name" ]; then
echo "::error::server.json package is $package_identifier, expected $npm_name" >&2
exit 1
fi
if [ "$package_mcp_name" != "$server_name" ]; then
echo "::error::npm mcpName is $package_mcp_name, expected $server_name" >&2
exit 1
fi

- name: Install mcp-publisher 1.8.1
shell: bash
env:
PUBLISHER_SHA256: 399ad0d6e00a50812b563a71d8bfbff5160c085e6b13aac6ec083d98d5ff7c45
run: |
set -euo pipefail
archive="$RUNNER_TEMP/mcp-publisher.tar.gz"
curl --fail --location --retry 3 \
--output "$archive" \
"https://github.com/modelcontextprotocol/registry/releases/download/v1.8.1/mcp-publisher_linux_amd64.tar.gz"
printf '%s %s\n' "$PUBLISHER_SHA256" "$archive" | sha256sum --check -
tar -xzf "$archive" -C "$RUNNER_TEMP" mcp-publisher
chmod 755 "$RUNNER_TEMP/mcp-publisher"
"$RUNNER_TEMP/mcp-publisher" --version

- name: Authenticate to MCP Registry
run: "$RUNNER_TEMP/mcp-publisher login github-oidc"

- name: Publish server metadata
run: "$RUNNER_TEMP/mcp-publisher publish server.json"
Loading