An MCP server that gives AI assistants full access to a self-hosted Print Vault instance — the 3D printing inventory, filament, printer, project, and print-tracker management app.
Built for Claude Desktop, Claude Code, and any MCP-compatible client.
- uv (Python package manager)
- A running Print Vault instance (v1.1.0+)
# Clone the repo
git clone https://github.com/your-org/PrintVaultMCP.git
cd PrintVaultMCP
# Copy and configure environment
cp .env.example .env
# Edit .env and set PRINT_VAULT_URL to your instance
# Run the server
uv run print-vault-mcp
Add to your claude_desktop_config.json:
{
"mcpServers": {
"print-vault": {
"command": "uv",
"args": ["--directory", "/path/to/PrintVaultMCP", "run", "print-vault-mcp"],
"env": {
"PRINT_VAULT_URL": "http://192.168.1.100:8000"
}
}
}
}
claude mcp add print-vault \
--command "uv --directory /path/to/PrintVaultMCP run print-vault-mcp" \
--env PRINT_VAULT_URL=http://192.168.1.100:8000
| Variable |
Required |
Default |
Description |
PRINT_VAULT_URL |
Yes |
— |
Base URL of your Print Vault instance |
PRINT_VAULT_TIMEOUT |
No |
30 |
HTTP request timeout in seconds |
40 tools organized across 7 groups:
| Tool |
Description |
get_dashboard |
Full status overview — alerts, stats, featured trackers, active projects |
get_version |
Current Print Vault version |
dismiss_alert |
Dismiss a specific dashboard alert |
| Tool |
Description |
search_inventory |
Search items by keyword, brand, part type, or location |
get_inventory_item |
Full detail on a specific item |
add_inventory_item |
Add a new item (auto-creates brands, locations, etc.) |
update_inventory_item |
Update any field on an existing item |
get_low_stock |
List all consumables at or below threshold |
get_item_allocation |
See which projects are using an item |
| Tool |
Description |
list_materials |
Browse material blueprints and generic types |
create_material |
Create a generic material type or specific blueprint |
get_material_spools |
List physical spools for a material blueprint |
list_spools |
Browse spools with status/printer/color filters |
add_filament_spool |
Add new spool(s) linked to a material blueprint |
quick_add_spool |
Quick-add a spool without a blueprint (standalone fields) |
update_spool_weight |
Update current weight (auto-updates status) |
mark_spool_empty |
Mark a spool as empty |
open_spool |
Open a spool from an unopened batch |
archive_spools |
Bulk archive empty spools |
toggle_material_favorite |
Toggle favorite on a material (max 5) |
| Tool |
Description |
list_printers |
List printers with search and status filter |
get_printer |
Full detail including mods and filament |
update_printer |
Update status, notes, etc. |
add_mod |
Add a mod/upgrade to a printer |
update_mod |
Update mod status |
| Tool |
Description |
list_projects |
List projects with search and status filter |
get_project |
Full detail with BOM, inventory, printers, trackers |
create_project |
Create a new project |
update_project |
Update project fields |
add_bom_item |
Add a BOM line item (auto-reserves linked inventory) |
get_shopping_list |
Consolidated buy list across all active projects |
link_printer_to_project |
Associate a printer with a project |
| Tool |
Description |
list_trackers |
List all print trackers |
get_tracker |
Full tracker detail with file list and progress |
create_tracker_from_github |
Crawl a GitHub repo for printable files |
update_file_status |
Update print status of a tracker file |
| Tool |
Description |
list_brands |
All brands/manufacturers |
list_locations |
All storage locations |
list_part_types |
All part type categories |
list_vendors |
All vendors/suppliers |
PrintVaultMCP/
├── src/print_vault_mcp/
│ ├── __init__.py # Package entry point
│ ├── __main__.py # python -m support
│ ├── client.py # Async HTTP client for Print Vault API
│ ├── formatters.py # AI-friendly response formatters
│ └── server.py # MCP server & tool definitions
├── docs/
│ ├── design.md # Architecture & design document
│ └── reference/ # API contract references (links to upstream source)
├── .env.example # Environment variable template
├── .gitignore
├── pyproject.toml # uv/pip package configuration
└── README.md
# Install dependencies
uv sync
# Run the server locally (stdio mode)
PRINT_VAULT_URL=http://localhost:8000 uv run print-vault-mcp
# Run with the MCP inspector for debugging
npx @modelcontextprotocol/inspector uv run print-vault-mcp
The server is a stateless protocol translation layer. It receives structured tool calls from AI clients via MCP (stdio transport), translates them into HTTP requests against the Print Vault REST API, and returns formatted text responses the AI can reason about.
AI Client ──MCP (stdio)──> PrintVaultMCP ──HTTP/JSON──> Print Vault
Print Vault uses AllowAny permissions on every endpoint (single-user self-hosted app), so the MCP server only needs the base URL — no tokens or credentials required.
AGPL-3.0 — same license family as Print Vault itself.