Dependency Management
Relevant source files
The following files were used as context for generating this wiki page:
Dependency management in the arclio-mcp-tooling monorepo is architected using a workspace-based approach, leveraging uv as the primary build and package management tool. This system ensures consistent environments across multiple packages while allowing individual packages to maintain their own specific dependency trees and versioning requirements.
The project is structured as a monorepo where a root-level configuration orchestrates several sub-packages located in the packages/ directory. Each package is a standalone Python project with its own pyproject.toml file, yet they are linked through the root workspace to facilitate cross-package development and shared testing infrastructure.
Sources: pyproject.toml:57-63, README.md:1-15
Workspace Architecture
The monorepo uses the [tool.uv.workspace] configuration to define the boundaries of the project. This allows developers to work on multiple related packages simultaneously, with uv handling the resolution of local dependencies between these packages.
Workspace Members
The project includes four primary workspace members:
- aws-s3-mcp: Integration for Amazon S3 storage.
- google-workspace-mcp: Integration for Google Drive, Gmail, Calendar, and Slides.
- markdowndeck: A core library for converting Markdown to Google Slides.
- weaviate-mcp: Integration for the Weaviate vector database.
Sources: pyproject.toml:57-63, pyproject.toml:65-70
The following diagram illustrates the relationship between the monorepo root and its workspace members:
This diagram shows the hierarchical structure of the monorepo and the internal dependency between the Google Workspace package and the MarkdownDeck library.
Sources: pyproject.toml:57-70, packages/google-workspace-mcp/pyproject.toml:22
Root Configuration and Shared Dev Dependencies
The root pyproject.toml defines the workspace and provides a centralized set of development dependencies used across the entire monorepo for testing, linting, and environment management.
| Dependency | Version | Purpose |
|---|---|---|
pytest | >=7.0.0 | Primary testing framework |
pytest-asyncio | >=0.21.0 | Support for asynchronous testing |
ruff | >=0.1.0 | Fast Python linter and formatter |
uv | >=0.1.1 | Package and environment management |
pytest-cov | >=4.1.0 | Coverage reporting |
Sources: pyproject.toml:15-26
Testing Infrastructure
The root configuration also defines the pythonpath for pytest, ensuring that tests can correctly import source code from any package in the workspace during development.
Sources: pyproject.toml:28-36
Individual Package Dependencies
Each package maintains its own specific list of production dependencies required for its specialized functionality.
Core Library: markdowndeck
As a foundational library, markdowndeck includes dependencies for markdown parsing, image processing, and Google API interactions.
markdown-it-py: >=3.0.0Pillow: >=10.0.0google-api-python-client: >=2.0.0google-auth-oauthlib: >=1.0.0
Sources: packages/markdowndeck/pyproject.toml:21-29
Service Integrations
The MCP servers depend on the Model Context Protocol (MCP) SDK and their respective service clients:
| Package | Key Dependencies |
|---|---|
google-workspace-mcp | mcp, markdowndeck, google-api-python-client, beautifulsoup4 |
aws-s3-mcp | mcp, aioboto3, pypdf, python-dotenv |
weaviate-mcp | mcp, weaviate-client, tiktoken, httpx |
Sources: packages/google-workspace-mcp/pyproject.toml:13-25, packages/aws-s3-mcp/pyproject.toml:13-18, packages/weaviate-mcp/pyproject.toml:13-19
Build and Release Management
The project uses hatchling as the build backend for all packages. Build and publication tasks are automated through a Makefile at the root and specialized tasks in the root pyproject.toml.
This sequence diagram represents the workflow for building and publishing packages within the monorepo structure.
Sources: pyproject.toml:1-3, pyproject.toml:78-95, README.md:46-75
Automation Tasks
The tool.poe.tasks section provides specific commands for managing the google-workspace-mcp package, including cleaning artifacts, building wheels, and publishing to PyPI using environment tokens.
Sources: pyproject.toml:77-95
Conclusion
Dependency management in arclio-mcp-tooling is characterized by a "centralized development, decentralized production" philosophy. By using uv workspaces, the project maintains a unified developer experience while ensuring that each MCP server and library remains a lightweight, independently deployable unit with precisely defined requirements.