Build & Publish Pipeline
Relevant source files
The following files were used as context for generating this wiki page:
The Build & Publish Pipeline for the Arclio MCP Tooling project is designed as a streamlined, monorepo-compatible system leveraging uv for package management and hatchling as the build backend. The pipeline facilitates the development, testing, and distribution of multiple Model Context Protocol (MCP) packages—including Google Workspace, AWS S3, and Weaviate integrations—ensuring consistent quality and standardized delivery across the ecosystem.
Sources: pyproject.toml:1-10, README.md:1-20
Pipeline Architecture
The pipeline follows a standardized structure for high-performance Python development within a monorepo. It utilizes workspace members to manage dependencies and shared resources across sub-packages.
Core Components
- Build System: Uses
hatchlingto generate distribution wheels and source distributions. - Package Manager: Employs
uvfor fast dependency resolution and workspace orchestration. - Task Runner: Managed through a root
Makefileandpoe(Poe the Poet) tasks defined in the configuration files.
The diagram shows the relationship between the root workspace configuration and the individual packages being built into distributable artifacts.
Sources: pyproject.toml:1-5, pyproject.toml:60-70, README.md:22-30
Build Configuration
Each package maintains its own pyproject.toml but is referenced by the root workspace. The build process targets Python 3.10+ and enforces metadata standards.
Workspace Members
The project defines the following packages as part of its buildable workspace:
| Package Name | Path | Purpose |
|---|---|---|
google-workspace-mcp | packages/google-workspace-mcp | Google API integrations |
aws-s3-mcp | packages/aws-s3-mcp | S3 storage access |
markdowndeck | packages/markdowndeck | Markdown to Slides conversion |
weaviate-mcp | packages/weaviate-mcp | Vector database access |
Sources: pyproject.toml:60-65, README.md:24-35
Distribution Packaging
Packages are built into wheels with a standardized directory structure. The hatchling backend is configured to find package source code within the src/ directory of each sub-package.
[tool.hatch.build.targets.wheel]
packages = ["packages/*"]
Sources: pyproject.toml:73-74, packages/google-workspace-mcp/pyproject.toml:34-35
Release & Publish Workflow
The publishing workflow is automated through poe tasks and Makefile commands. It involves cleaning artifacts, building the package, and uploading to a registry using uv.
Publication Logic
A specific sequence is followed for releases, particularly for the Google Workspace package:
- Clean: Remove existing
dist/directories to ensure no stale artifacts are included. - Build: Invoke
uv buildwithin the package directory. - Publish: Upload artifacts using
uv publishwith a provided$PYPI_TOKEN.
The sequence diagram illustrates the automated multi-step release process for the Google Workspace MCP package.
Sources: pyproject.toml:76-90, packages/google-workspace-mcp/README.md:275-285
Release Commands
The following tasks are defined in the root pyproject.toml for managing the Google Workspace release lifecycle:
| Task | Command | Description |
|---|---|---|
build-gw | uv build | Compiles the package into distribution files |
version-gw | python -c ... | Extracts the current version from pyproject.toml |
publish-gw | uv publish | Uploads any version in dist/ to the registry |
release-gw | clean, build, publish | Full release pipeline execution |
Sources: pyproject.toml:77-88
Quality Assurance Pipeline
Before publishing, the codebase must pass a rigorous quality suite. This is orchestrated through a Makefile that handles environment setup and testing.
- Linting & Formatting: Uses
Rufffor both linting and formatting across the entire monorepo. - Testing: Orchestrated by
pytestwith specific markers forunit,integration, andend_to_endtests. - Coverage: Configured to fail if coverage drops below 85% for core libraries like
markdowndeck.
Sources: pyproject.toml:13-25, pyproject.toml:49-51, README.md:50-70
Dependency Management
The project uses uv workspace sources to allow packages to depend on each other during development (e.g., google-workspace-mcp depending on markdowndeck) without needing to fetch from an external registry.
[tool.uv.sources]
aws-s3-mcp = { workspace = true }
google-workspace-mcp = { workspace = true }
markdowndeck = { workspace = true }
weaviate-mcp = { workspace = true }
Sources: pyproject.toml:67-71, packages/google-workspace-mcp/pyproject.toml:23
Summary
The Build & Publish Pipeline ensures that Arclio's MCP tools are consistently tested and reliably distributed. By combining uv for workspace management, hatchling for standard-compliant builds, and automated poe tasks for registry publication, the project maintains a high velocity with minimal manual intervention. This system supports a "blank canvas first" architecture where individual components can be built and published independently or as a unified toolset.
Sources: README.md:38-45, packages/google-workspace-mcp/README.md:280-300