We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynatrace-oss/dynatrace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
name: Release
on:
push:
tags:
- 'v*' # Triggers on version tags like v1.0.0, v2.1.3, etc.
permissions:
contents: write # Required for creating releases
id-token: write # Required for npm publishing with provenance
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0 # Fetch full history for changelog generation
- name: Use Node.js # will read version from .nvmrc
uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies
run: npm ci
- name: Run prettier
run: npm run prettier
- name: Run tests
run: npm run test:unit
- name: Build
run: npm run build
- name: Extract version from tag
id: version
run: |
# Remove 'v' prefix from tag to get version
VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Generate changelog for GitHub Release
id: changelog
run: |
# Get the previous tag
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
# Generate changelog between tags
if [ -n "$PREV_TAG" ]; then
CHANGELOG=$(git log --pretty=format:"- %s (%h)" $PREV_TAG..HEAD)
else
CHANGELOG=$(git log --pretty=format:"- %s (%h)")
fi
# Save changelog to output (handle multiline)
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
run: |
# Publish to npm with provenance
if [[ "${{ steps.version.outputs.version }}" == *"-"* ]]; then
# Pre-release version - publish with next tag
npm publish --tag next --provenance --access public
else
# Stable release - publish with latest tag
npm publish --provenance --access public
fi
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Create release body
cat > release_body.md << 'EOF'
## Changes in ${{ steps.version.outputs.tag }}
${{ steps.changelog.outputs.changelog }}
## Usage
```bash
npx -y @dynatrace-oss/dynatrace-mcp-server@${{ steps.version.outputs.version }}
```
EOF
# Create the release
if [[ "${{ steps.version.outputs.version }}" == *"-"* ]]; then
gh release create "${{ steps.version.outputs.tag }}" \
--title "Release ${{ steps.version.outputs.tag }}" \
--notes-file release_body.md \
--prerelease
else
gh release create "${{ steps.version.outputs.tag }}" \
--title "Release ${{ steps.version.outputs.tag }}" \
--notes-file release_body.md
fi
# From https://github.com/modelcontextprotocol/registry/blob/main/docs/guides/publishing/github-actions.md
- name: Install MCP Publisher
run: |
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
# Login to GitHub - apparently this works out of the box with GH Workflows
- name: Login to MCP Registry
run: ./mcp-publisher login github-oidc
# Publish the package to the MCP Registry
- name: Publish to MCP Registry
run: ./mcp-publisher publish