Skip to main content
Glama

MCP Printer Server

by steveclarke
RELEASE_CHECKLIST.md9.71 kB
# Release Checklist for mcp-printer ## Pre-Release Verification ### Code Quality - [x] Run all tests: `pnpm test` - **✅ 63 tests passed** - [x] Verify no linting errors: `pnpm run build` - **✅ Clean build, no errors** - [x] Review README.md for accuracy and completeness - **IN PROGRESS** - [x] Verify LICENSE file exists and is correct (MIT) - **✅ Confirmed** - [x] Check that repository URL in package.json matches GitHub - **✅ https://github.com/steveclarke/mcp-printer.git** ### Build & Package - [x] Clean build: `pnpm run clean && pnpm run build` - **✅ Complete** - [x] Verify dist/ directory contains all necessary files - **✅ Verified** - [x] Create test tarball: `pnpm pack` - **✅ mcp-printer-1.0.0.tgz created** ### Local Testing - [x] Install from tarball globally: `pnpm add -g ./mcp-printer-1.0.0.tgz` - **✅ Installed** - [x] Test binary works: `mcp-printer` - **✅ Server starts and responds to MCP messages** - [x] Test with Cursor using global install - **✅ Works with "command": "mcp-printer"** ### Functional Testing - [x] Test markdown rendering - **✅ markdown-test-short.md printed successfully** - [x] Test code rendering (TypeScript, JavaScript, Python files) - **✅ Python, Java, JavaScript, COBOL** - [x] Test printing various file types (PDF, text) - **✅ Verified** - [x] Test configuration options (default printer, duplex, options) - **✅ Verified** - [x] Test all tools: list_printers, print_file, get_print_queue, cancel_print_job, get/set_default_printer - **✅ All working** - [x] Test security: verify dotfiles are blocked, allowed paths work correctly - **✅ Verified** - [x] Test `/print-review-package` prompt - **✅ Verified** ## Publishing to npm ### 1. Pre-Publish Checks ```bash cd /Users/steve/src/mcp-printer # Ensure working tree is clean git status # Ensure all tests pass pnpm test # Clean build pnpm run clean pnpm run build # Verify what will be published pnpm publish --dry-run ``` ### 2. Version & Git Tag ```bash # Current version is 1.0.0 - skip if unchanged # If you need to bump: pnpm version patch|minor|major # Create tag locally (DON'T PUSH YET - we'll push after npm succeeds) git tag -a v1.0.0 -m "Release v1.0.0" ``` ### 3. npm Login ```bash # Login to npm (if not already logged in) npm login # OR: pnpm login # Verify you're logged in npm whoami ``` ### 4. Publish to npm (PERMANENT - do this before pushing to GitHub) ```bash # Final dry run to see what will be published pnpm publish --dry-run # Publish (this is PERMANENT and cannot be undone after 72 hours!) # Do this BEFORE pushing to GitHub so you can fix issues if it fails pnpm publish --access public # The --access public flag is required for unscoped packages ``` **⚠️ Important:** If publish fails, you can delete the local tag (`git tag -d v1.0.0`), fix the issue, and try again. Once npm publish succeeds, proceed to push to GitHub. ### 5. Push to GitHub (AFTER npm publish succeeds) ```bash # Now that npm publish succeeded, push code and tag together git push origin master git push origin v1.0.0 # Or push both at once: # git push origin master --follow-tags ``` ### 6. Create GitHub Release 1. Go to: https://github.com/steveclarke/mcp-printer/releases 2. Click "Draft a new release" 3. Choose tag: v1.0.0 4. Release title: "v1.0.0 - Initial Release 🎉" 5. Description: ```markdown # MCP Printer - First Release! 🖨️ An MCP server that gives AI assistants the ability to print documents. ## ✨ Features - 🖨️ Print files directly from AI conversations - 📝 Beautiful markdown rendering with Mermaid diagrams - 💻 Syntax-highlighted code printing - 📋 Manage print queues and printers - 🔒 Secure by default with path restrictions - 🎯 Works with Claude Desktop, Cursor, and other MCP clients ## 🚀 Quick Start Add to your MCP config (e.g., `~/.cursor/mcp.json`): ```json { "mcpServers": { "Printer": { "command": "npx", "args": ["-y", "mcp-printer"] } } } ``` Or install globally: ```bash npm install -g mcp-printer ``` ## 📚 Documentation See the [README](https://github.com/steveclarke/mcp-printer#readme) for full setup instructions and configuration options. ## 🖥️ Requirements - macOS or Linux (CUPS) - Node.js 22+ - Chrome/Chromium (for markdown/code rendering) ## 🙏 Feedback Welcome This is the initial release. Please report bugs or suggest features via [GitHub Issues](https://github.com/steveclarke/mcp-printer/issues). ``` 6. Click "Publish release" ## Post-Release Verification ### Verify Package Availability - [x] Wait 2-5 minutes for npm propagation - [x] Visit: https://www.npmjs.com/package/mcp-printer - [x] Test installation: `npm install -g mcp-printer` (in a fresh environment) - [x] Test npx approach: `npx -y mcp-printer` (should work immediately) ### Test Published Package ```bash # Remove any local version pnpm remove -g mcp-printer # Install from npm pnpm add -g mcp-printer # Test binary mcp-printer # Test in Cursor with npx (recommended method from README) # Update Cursor config to: # "command": "npx", # "args": ["-y", "mcp-printer"] ``` ### Documentation & Cleanup - [x] Verify README renders correctly on npm: https://www.npmjs.com/package/mcp-printer - [x] Update any external documentation or links - [x] Remove the test tarball: `rm mcp-printer-1.0.0.tgz` - [x] Monitor GitHub issues for early bug reports ## Announce! 🚀 See **[RELEASE_ANNOUNCEMENT.md](./RELEASE_ANNOUNCEMENT.md)** for detailed announcement guide with templates for: - Twitter/X - Cursor Forum - Reddit (r/ClaudeAI, r/MCP) Quick checklist: - [ ] Twitter/X - [ ] Cursor Forum - [ ] Reddit: r/ClaudeAI - [ ] Reddit: r/MCP ## Package Metadata - **Package name:** `mcp-printer` - **Binary command:** `mcp-printer` - **Current version:** 1.0.0 - **License:** MIT - **Author:** Stephen Clarke - **Repository:** https://github.com/steveclarke/mcp-printer - **npm page:** https://www.npmjs.com/package/mcp-printer ## Common Issues & Solutions ### "Package name already exists" If `mcp-printer` is taken, alternatives: - `@steveclarke/mcp-printer` (scoped to your username) - `mcp-cups-printer` - `printer-mcp-server` ### "Need to authenticate" ```bash npm login # Enter username, password, email, and 2FA code ``` ### "402 Payment Required" Unscoped packages are free. If you see this: - Use `--access public` flag (should be in step 4) - OR use a scoped package: `@yourusername/mcp-printer` ### "403 Forbidden" - Package name might be reserved/blocked - Try a different name or scoped package - Check npm status: https://status.npmjs.org/ ### "Permission denied" when testing Ensure CUPS is running: `lpstat -r` ### Binary not found after global install - Verify npm global bin is in PATH: `npm config get prefix` - Add to PATH if needed: `export PATH="$PATH:$(npm config get prefix)/bin"` ## Important Reminders ⚠️ **Publishing is permanent!** After 72 hours, you cannot unpublish. Only deprecate. ✅ **Test thoroughly** with the tarball before publishing to npm. 🔄 **pnpm/npm compatibility:** This project uses pnpm for development, but publishes to the standard npm registry. Users can install with npm, pnpm, or yarn. 📝 **Semver:** Follow semantic versioning for future releases: - Patch (1.0.x): Bug fixes - Minor (1.x.0): New features, backward compatible - Major (x.0.0): Breaking changes 🏷️ **Tags:** Use git tags for all releases. They're used by GitHub releases and help track versions. ## Testing Summary ✅ **All pre-release testing complete!** **Verified working from global npm install:** - Binary starts correctly - MCP server responds to messages - Works in Cursor with `"command": "mcp-printer"` **Security:** - File path restrictions work (blocked paths outside allowed dirs) - Path configuration works (`MCP_PRINTER_ALLOWED_PATHS`) - Dotfile blocking confirmed **Rendering:** - Markdown rendering with Mermaid diagrams ✅ - Code syntax highlighting: Python, Java, JavaScript, COBOL ✅ - Auto-detection fallback works for unlisted languages ✅ **Configuration:** - Auto-duplex works - Default printer selection works - Default options applied (prettyprint, wrap) **All Tools Tested:** - ✅ `list_printers` - Shows all printers with status - ✅ `get_default_printer` - Returns system default - ✅ `get_print_queue` - Shows queue status - ✅ `get_config` - Displays all configuration - ✅ `print_file` - Markdown & code files work perfectly - ✅ `set_default_printer` - Successfully changed and restored - ✅ `cancel_print_job` - Works correctly --- ## Future Automation Ideas Once you're comfortable with the manual process, consider automating with: **Local Scripts:** - `scripts/release.sh` - Run pre-publish checks, build, pack, test - `scripts/publish.sh` - Interactive script for npm login → publish → git push - `scripts/verify-release.sh` - Test installation from npm after publishing **GitHub Actions:** - `.github/workflows/release.yml` - Automated testing on tag push - `.github/workflows/npm-publish.yml` - Publish to npm on GitHub release - `.github/workflows/pr-checks.yml` - Run tests on every PR **Tools to Consider:** - `release-it` - Automates versioning, tagging, and publishing - `semantic-release` - Fully automated releases based on commit messages - `np` - Interactive publish tool by Sindre Sorhus **Start Simple:** Start with local shell scripts to automate repetitive steps. Once those work well, move to GitHub Actions for CI/CD. The goal is to understand the process first (which you're doing!), then automate the boring parts.

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/steveclarke/mcp-printer'

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