Skip to main content
Glama
README.md6.87 kB
# GitHub Actions Workflows This directory contains GitHub Actions workflows for CI/CD automation. ## Workflows ### 1. Test Suite (`test.yml`) **Triggers**: Push to main/develop branches, Pull requests **Purpose**: Runs comprehensive tests for all packages **Jobs**: - **test-plugin**: Test tauri-plugin-mcp-bridge (Rust + TypeScript) - Matrix: Ubuntu 22.04, Windows, macOS - Runs Rust tests, formatting checks, and Clippy - **test-server**: Test @hypothesi/tauri-mcp-server (Node.js) - Matrix: Ubuntu, Windows, macOS × Node.js 20, 24 - Runs unit tests and TypeScript type checking - **test-app**: Build test-app (Tauri application) - Matrix: Ubuntu 22.04, Windows, macOS - Verifies the test app builds successfully - **lint-and-standards**: ESLint checks - **all-tests-pass**: Summary job that requires all tests to pass ### 2. Release Packages (`release.yml`) **Triggers**: Push tags matching: - `v*` - Release all packages with the same version - `tauri-plugin-mcp-bridge/v*` - Release only the plugin - `mcp-server/v*` - Release only the server **Purpose**: Unified release workflow for all packages **Features**: - Smart package detection based on tag format - Can release individual packages or all packages - Comprehensive testing before release - Automatic version updates - npm provenance attestation for supply chain security (OIDC-based, no tokens needed) **Process**: 1. Determine which packages to release based on tag 2. Run tests across all platforms 3. Update package versions 4. Build TypeScript and/or Rust components 5. Publish to npm with `--provenance` flag 6. Publish to crates.io (if plugin) 7. Create GitHub release with changelog ### 3. Publish to MCP Registry (`publish-mcp-registry.yml`) **Triggers**: Automatically after "Release Packages" workflow completes successfully **Purpose**: Publish MCP server metadata to the official MCP Registry **Features**: - Depends on Release Packages workflow via `workflow_run` - Only runs if Release Packages succeeded - Uses OIDC authentication (no tokens needed) - Publishes only metadata (npm package already published by Release workflow) **Process**: 1. Waits for Release Packages workflow to complete 2. Installs mcp-publisher CLI 3. Authenticates via GitHub OIDC 4. Publishes server metadata to MCP Registry ### 4. Deploy Documentation (`deploy-docs.yml`) **Triggers**: - Push to main branch (when docs/** or related files change) - Manual workflow dispatch **Purpose**: Build and deploy VitePress documentation to GitHub Pages **Process**: 1. Build documentation with VitePress 2. Upload to GitHub Pages 3. Deploy to https://hypothesi.github.io/mcp-server-tauri/ ## Required Secrets Before using the release workflows, configure these secrets in your GitHub repository settings: 1. **CARGO_REGISTRY_TOKEN**: Authentication token for crates.io - Get from: <https://crates.io/settings/tokens> - Required for: Publishing Rust crates to crates.io ## npm Publishing Setup npm publishing uses **provenance** with OIDC authentication (no NPM_TOKEN needed): 1. Configure npm Trusted Publisher at <https://www.npmjs.com/package/@hypothesi/tauri-mcp-server/access>: - Provider: GitHub Actions - Organization: hypothesi - Repository: mcp-server-tauri - Workflow: release.yml - Environment: (leave empty) 2. Ensure your GitHub organization membership is public at <https://github.com/orgs/hypothesi/people> This eliminates the need for NPM_TOKEN secrets and provides better supply chain security. ## Tag Formats The release workflow supports three tag patterns: * **All packages** (same version): `v0.1.0` * Releases both packages with version 0.1.0 * Use for coordinated releases or major versions * **Plugin only**: `tauri-plugin-mcp-bridge/v0.1.0` * Releases only the Tauri plugin * Updates version to 0.1.0 * **Server only**: `mcp-server/v0.1.0` * Releases only the MCP server * Updates version to 0.1.0 ## Usage Examples ### Running Tests Locally ```bash # Run all tests npm test # Run specific package tests cd packages/mcp-server && npm test cd packages/tauri-plugin-mcp-bridge && cargo test # Run linting npm run standards ``` ### Creating a Release 1. Update version in package files: ```bash # For plugin cd packages/tauri-plugin-mcp-bridge # Update version in Cargo.toml and package.json # For server cd packages/mcp-server # Update version in package.json ``` 2. Update CHANGELOG.md files 3. Commit and push changes 4. Create and push a tag: ```bash # For individual package git tag -s tauri-plugin-mcp-bridge/v0.1.0 -m "Release tauri-plugin-mcp-bridge v0.1.0" git tag -s mcp-server/v0.1.0 -m "Release mcp-server v0.1.0" # For all packages git tag -s v0.1.0 -m "Release v0.1.0" # Push tag git push origin --tags ``` The workflows will automatically: * Run comprehensive tests * Build packages * Publish to registries * Create GitHub releases ## Workflow Permissions The workflows require the following permissions: - **Test Suite**: Default permissions (read-only) - **Release Packages**: - `contents: write` - For creating GitHub releases - `id-token: write` - For npm provenance attestation - **Publish to MCP Registry**: - `id-token: write` - For OIDC authentication with MCP Registry - `contents: read` - For checking out code - **Deploy Documentation**: - `contents: read` - For checking out code - `pages: write` - For deploying to GitHub Pages - `id-token: write` - For GitHub Pages deployment ## Best Practices 1. Always run tests locally before pushing: `npm test` 2. Update all three CHANGELOG.md files before releases (root, mcp-server, tauri-plugin-mcp-bridge) 3. Use semantic versioning (MAJOR.MINOR.PATCH) 4. Ensure versions are synchronized across package.json and Cargo.toml files 5. The `server.json` version is automatically updated by the release workflow - no manual update needed 6. Test workflows in a fork first if making changes 7. Monitor workflow runs for any failures in the Actions tab 8. The MCP Registry workflow runs automatically - no manual intervention needed ## Troubleshooting ### Release workflow fails at npm publish - Verify npm Trusted Publisher is configured correctly - Ensure the workflow name matches exactly: `release.yml` - Check that `id-token: write` permission is set ### MCP Registry workflow doesn't trigger - Verify the Release Packages workflow completed successfully - Check that a version tag was pushed (not just created locally) - Ensure your GitHub organization membership is public ### Tests fail in CI but pass locally - Check Node.js and Rust versions match between local and CI - Verify all dependencies are properly declared in package.json/Cargo.toml - Review platform-specific issues (Ubuntu 22.04, Windows, macOS)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hypothesi/mcp-server-tauri'

If you have feedback or need assistance with the MCP directory API, please join our Discord server