jongalloway / jongalloway/pptx-tools
Research: CLI interface for standalone usage
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 9
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Description
pptx-mcp was designed exclusively as an MCP server for AI assistants, but Phase 4 has produced several tools with strong standalone value — particularly the optimization tools (file size analysis, unused layout removal, media deduplication, image compression). These are useful as one-off operations or in scripted workflows outside of an LLM coding agent scenario.
Research Questions
-
CLI interface design: What would a CLI look like? Options include:
- \dotnet run\ with command-line arguments (e.g., \pptx-mcp optimize --file presentation.pptx --dpi 150)
- A separate \pptx-cli\ project that references PresentationService directly
- A \dotnet tool\ global/local tool package
-
Dual-mode architecture: Can the same binary serve as both MCP server (stdio) and CLI tool (args)? Pattern: if args are present, run CLI mode; if no args, run MCP stdio mode.
-
Candidate commands for CLI exposure:
- \pptx optimize \ — run all optimizations (compress images, deduplicate media, remove unused layouts)
- \pptx analyze \ — file size analysis + media analysis report
- \pptx compress-images --dpi 150 --quality 85\ — image optimization only
- \pptx deduplicate \ — media deduplication only
- \pptx cleanup \ — remove unused layouts + masters
-
Distribution: \dotnet tool install\ via NuGet? Single-file publish? Both?
-
Impact on MCP server: Would adding CLI mode affect the MCP server's behavior, startup, or dependencies?
Acceptance Criteria
- Research viable CLI patterns for .NET MCP servers
- Propose CLI command structure
- Evaluate dual-mode (MCP + CLI) vs separate project tradeoffs
- Prototype preferred approach
- Document decision
Notes
- This is a research/spike issue — output is a decision document, not necessarily a shipped feature
- Current PresentationService methods are already well-factored for reuse (thin MCP tools, business logic in service)
- Magick.NET dependency (added in #85) increases binary size — relevant for distribution decisions
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing PresentationService methods and the thin MCP tools, then compare the listed dual-mode and separate-project CLI patterns for .NET MCP servers. Evaluate distribution options, including dotnet tool installation, single-file publishing, and the Magick.NET binary-size impact. Done means a prototype of the preferred approach and a decision document covering commands, tradeoffs, and MCP behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100