Skip to content

Commit ccab01a

Browse files
drernieclaude
andauthored
Transition from DXT to UVX for MCP Build (MCPB) (#186)
## Summary Complete migration from DXT to MCPB package format for Claude Desktop integration. This transition simplifies the build pipeline, eliminates file copying infrastructure, and enables direct UVX execution of the `quilt-mcp` package from PyPI. Fixes #152 ## Changes ### πŸš€ MCPB Package Format Migration - Replaced `.dxt` package format with `.mcpb` for Claude Desktop integration - Simplified build pipeline by eliminating file copying infrastructure - Direct UVX execution of `quilt-mcp` package from PyPI - Removed obsolete bootstrap scripts and build markers - Updated all build targets and workflows for MCPB packaging ### πŸ› οΈ New Build System - **`make mcpb`** - Build MCPB package with embedded manifest - **`make mcpb-validate`** - Validate MCPB package structure - Updated release workflow to generate MCPB artifacts - Comprehensive migration documentation and guides ### πŸ—‘οΈ Deprecated DXT Infrastructure (preserved for backward compatibility) - Commented out DXT-specific build targets in Makefile - Removed bootstrap.py and file copying infrastructure - Cleaned up build directory marker files - Archived DXT configuration sections in pyproject.toml ### πŸ“š Documentation Updates - Comprehensive migration guide with step-by-step instructions - FAQ for common migration issues - Updated installation documentation for MCPB format - Release notes explaining breaking changes ## Implementation Phases Completed ### βœ… Phase 1: Package Publishing Prerequisites - PyPI package published as `quilt-mcp` v0.6.10 - MCPB tool installed and validated (v1.1.0) ### βœ… Phase 2: MCPB Packaging Tool Integration - Created `make mcpb` target - Updated release scripts for MCPB format - Integrated MCPB validation ### βœ… Phase 3: Build Pipeline Simplification - Eliminated file copying infrastructure - Removed build markers and bootstrap scripts - Simplified Makefile targets ### βœ… Phase 4: Testing and Validation - MCPB package structure validated - UVX execution tested successfully - All 248 unit tests passing ### βœ… Phase 5: Documentation and Migration - Complete user migration guide - Installation documentation updated - Release notes and FAQ created - GitHub Actions workflows updated ### βœ… Phase 6: Cleanup and Deprecation - DXT code commented (not deleted) for transition period - Build artifacts cleaned up - Obsolete dependencies removed ## Testing - βœ… All unit tests passing (248 tests) - βœ… MCPB package builds successfully - βœ… UVX execution validated - βœ… Manifest structure verified - βœ… Claude Desktop integration tested ## Migration Guide Users can migrate from DXT to MCPB by: 1. Uninstalling the old DXT package 2. Installing via UVX: `uvx quilt-mcp` 3. Following the migration guide in `docs/migration-guide.md` ## Breaking Changes - Package format changed from `.dxt` to `.mcpb` - Installation method changed to UVX - File structure simplified (no more copied assets) ## Rollback Plan If issues arise, users can: 1. Revert to previous version with DXT support 2. Follow rollback instructions in migration guide 3. DXT code is commented but preserved for emergency use --------- Co-authored-by: Claude <[email protected]>
1 parent 5ef45b5 commit ccab01a

32 files changed

+1782
-1041
lines changed

β€Ž.github/actions/create-release/action.ymlβ€Ž

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: 'Create Release'
2-
description: 'Build Python package, DXT package, and create GitHub release'
2+
description: 'Build Python package, MCPB package, and create GitHub release'
33
inputs:
44
package-version:
55
description: 'Version from git tag (e.g., 0.5.9-dev-20250904075318)'
@@ -37,13 +37,13 @@ runs:
3737
skip-existing: ${{ inputs.skip-existing }}
3838
verbose: true
3939

40-
- name: Build DXT package
40+
- name: Build MCPB package
4141
shell: bash
42-
run: make dxt
42+
run: make mcpb
4343

44-
- name: Validate DXT package
44+
- name: Validate MCPB package
4545
shell: bash
46-
run: make dxt-validate
46+
run: make mcpb-validate
4747

4848
- name: Create release bundle
4949
shell: bash
@@ -53,16 +53,16 @@ runs:
5353
id: create-release
5454
uses: softprops/action-gh-release@v2
5555
with:
56-
name: "Quilt MCP DXT v${{ inputs.package-version }}"
56+
name: "Quilt MCP MCPB v${{ inputs.package-version }}"
5757
files: |
5858
dist/*-release.zip
5959
draft: false
6060
prerelease: ${{ contains(inputs.package-version, '-') }}
6161
generate_release_notes: true
6262

63-
- name: Upload DXT artifacts
63+
- name: Upload MCPB artifacts
6464
uses: actions/upload-artifact@v4
6565
with:
66-
name: dxt-package
67-
path: dist/*.dxt
66+
name: mcpb-package
67+
path: dist/*.mcpb
6868
retention-days: 90

β€Ž.github/actions/setup-build-env/action.ymlβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ runs:
3232
with:
3333
node-version: ${{ inputs.nodejs-version }}
3434

35-
- name: Install DXT CLI
35+
- name: Install MCPB CLI
3636
if: inputs.include-nodejs == 'true'
3737
shell: bash
38-
run: npm install -g @anthropic-ai/dxt
38+
run: npm install -g @anthropic-ai/mcpb
3939

4040
- name: Cache dependencies
4141
uses: actions/cache@v4

β€Ž.gitignoreβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ share/python-wheels/
2828
*.egg
2929
MANIFEST
3030

31+
# MCP packaging artifacts
32+
*.mcpb
33+
3134
# PyInstaller
3235
# Usually these files are written by a python script from a template
3336
# before PyInstaller builds the exe, so as to inject date/other infos into it.

β€ŽAGENTS.mdβ€Ž

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ For this repository's specific commands and permissions, see this CLAUDE.md file
295295
**Development Workflow (make.dev):**
296296

297297
- `make run` - Start local MCP server
298-
- `make test` - Run all tests (includes DXT package validation)
298+
- `make test` - Run all tests (includes MCPB package validation)
299299
- `make test-unit` - Run unit tests only (fast)
300300
- `make test-integration` - Run integration tests (with AWS)
301301
- `make test-ci` - Run CI-optimized tests
@@ -306,8 +306,8 @@ For this repository's specific commands and permissions, see this CLAUDE.md file
306306
**Production Workflow (make.deploy):**
307307

308308
- `make build` - Prepare production build environment
309-
- `make dxt` - Create DXT package
310-
- `make dxt-validate` - Validate DXT package
309+
- `make mcpb` - Create MCPB package
310+
- `make mcpb-validate` - Validate MCPB package
311311
- `make release-zip` - Create release bundle with documentation
312312
- `make release` - Create and push release tag
313313
- `make release-dev` - Create and push development tag
@@ -316,7 +316,7 @@ For this repository's specific commands and permissions, see this CLAUDE.md file
316316

317317
- `make help` - Show all available targets organized by category
318318
- `make clean` - Clean all artifacts (dev + deploy)
319-
- `make release-local` - Full local workflow (test β†’ build β†’ dxt β†’ validate β†’ zip)
319+
- `make release-local` - Full local workflow (test β†’ build β†’ mcpb β†’ validate β†’ zip)
320320
- `make test-readme` - Test README installation commands
321321
- `make update-cursor-rules` - Update Cursor IDE rules from CLAUDE.md
322322

@@ -377,22 +377,22 @@ The following permissions are granted for this repository:
377377

378378
**Release System
379379

380-
- βœ… `make dxt` - Creates DXT package (.dxt file)
381-
- βœ… `make dxt-validate` - Validates DXT package integrity
380+
- βœ… `make mcpb` - Creates MCPB package (.mcpb file)
381+
- βœ… `make mcpb-validate` - Validates MCPB package integrity
382382
- βœ… `make release-zip` - Creates release bundle (.zip with docs)
383383
- βœ… `make release` - Creates and pushes release tags
384384
- βœ… `make release-local` - Complete local workflow (no push)
385385
- βœ… `make release-dev` - Creates and pushes development tags
386386

387387
**File Organization:**
388388

389-
- `build/` - Build staging (replaces `tools/dxt/build/`)
390-
- `dist/` - Final packages (replaces `tools/dxt/dist/`)
389+
- `build/` - Build staging
390+
- `dist/` - Final packages
391391
- Artifacts now use top-level directories for clarity
392392

393-
**DXT Testing Integration:**
393+
**MCPB Testing Integration:**
394394

395-
- `make test` now includes DXT package validation
395+
- `make test` now includes MCPB package validation
396396
- Complete build pipeline tested as part of standard workflow
397397
- Ensures deliverable packages are always validated
398398

@@ -407,9 +407,10 @@ The following permissions are granted for this repository:
407407
- Workflow orchestration APIs reject blank workflow IDs; trim identifiers in tests when constructing fixtures to avoid silent acceptance.
408408

409409
### 2025-09-20 uv packaging notes
410-
- DXT packaging currently runs through `make.deploy` using `uv pip install`; the UV PyPI build flow lives in `scripts/release.sh python-dist` with `make python-dist`, mirroring how `make dxt` exposes DXT packaging.
410+
411+
- MCPB packaging runs through `make.deploy` using `mcpb build`; the UV PyPI build flow lives in `scripts/release.sh python-dist` with `make python-dist`, mirroring how `make mcpb` exposes MCPB packaging.
411412
- `python-dist` builds local artifacts without credentials. `scripts/release.sh python-publish` (via `make python-publish`) requires either `UV_PUBLISH_TOKEN` or `UV_PUBLISH_USERNAME`/`UV_PUBLISH_PASSWORD`, defaults to TestPyPI (`PYPI_PUBLISH_URL`/`PYPI_REPOSITORY_URL` override), and respects `DIST_DIR`.
412-
- GitHub Actions builds dist artifacts via `python-dist`, publishes them with `pypa/gh-action-pypi-publish`, then runs `make dxt`, `make dxt-validate`, and `make release-zip` to keep DXT parity. Secrets supply the PyPI/TestPyPI token (`secrets.PYPI_TOKEN`).
413+
- GitHub Actions builds dist artifacts via `python-dist`, publishes them with `pypa/gh-action-pypi-publish`, then runs `make mcpb`, `make mcpb-validate`, and `make release-zip` for complete packaging. Secrets supply the PyPI/TestPyPI token (`secrets.PYPI_TOKEN`).
413414

414415
## important-instruction-reminders
415416

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@ All notable changes to this project will be documented in this file.
66
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
77
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
88

9+
## [0.6.11] - 2025-09-21
10+
11+
### Changed
12+
13+
- **MCPB Package Format Migration**: Complete transition from DXT to MCPB format (#152)
14+
- Replaced `.dxt` package format with `.mcpb` for Claude Desktop integration
15+
- Simplified build pipeline by eliminating file copying infrastructure
16+
- Direct UVX execution of `quilt-mcp` package from PyPI
17+
- Removed obsolete bootstrap scripts and build markers
18+
- Updated all build targets and workflows for MCPB packaging
19+
20+
### Added
21+
22+
- **MCPB Build System**: New packaging infrastructure for Claude Desktop
23+
- `make mcpb` - Build MCPB package with embedded manifest
24+
- `make mcpb-validate` - Validate MCPB package structure
25+
- Updated release workflow to generate MCPB artifacts
26+
- Comprehensive migration documentation and guides
27+
28+
### Documentation
29+
30+
- **Migration Resources**: Complete user guidance for DXT to MCPB transition
31+
- Comprehensive migration guide with step-by-step instructions
32+
- FAQ for common migration issues
33+
- Updated installation documentation for MCPB format
34+
- Release notes explaining breaking changes
35+
936
## [0.6.10] - 2025-09-21
1037

1138
### Changed

β€ŽMakefileβ€Ž

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ help:
3030
@echo ""
3131
@echo "πŸ“¦ Production Workflow (make.deploy):"
3232
@echo " make deploy-build - Prepare production build environment"
33-
@echo " make dxt - Create DXT package"
33+
@echo " make mcpb - Create MCPB package (new format)"
34+
@echo " make mcpb-validate - Validate MCPB package"
3435
@echo " make python-dist - Build wheel + sdist into dist/ using uv (no publish)"
3536
@echo " make python-publish - Publish dist/ artifacts via uv (requires credentials)"
36-
@echo " make dxt-validate - Validate DXT package"
3737
@echo " make release-zip - Create release bundle with documentation"
3838
@echo " make release - Create and push release tag"
3939
@echo " make release-dev - Create and push development tag"
@@ -48,7 +48,7 @@ help:
4848
@echo ""
4949
@echo "🧹 Coordination & Utilities:"
5050
@echo " make clean - Clean all artifacts (dev + deploy)"
51-
@echo " make release-local - Full local workflow (test β†’ deploy-build β†’ dxt β†’ validate β†’ zip)"
51+
@echo " make release-local - Full local workflow (test β†’ deploy-build β†’ mcpb β†’ validate β†’ zip)"
5252
@echo " make test-readme - Test README installation commands"
5353
@echo " make update-cursor-rules - Update Cursor IDE rules from CLAUDE.md"
5454
@echo ""
@@ -64,9 +64,10 @@ help:
6464
clean: dev-clean deploy-clean
6565
@echo "βœ… All artifacts cleaned"
6666

67-
release-local: clean test lint deploy-build dxt-validate release-zip
67+
release-local: clean test lint deploy-build mcpb-validate release-zip
6868
@echo "βœ… Full local release workflow completed"
6969

70+
7071
# Release targets (delegated to make.deploy for semantic clarity)
7172
release: release-tag
7273

0 commit comments

Comments
Β (0)