jongalloway / jongalloway/pptx-tools

Research: CLI interface for standalone usage

Open
#94 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

go:needs-research squad squad:cheritto squad:mccauley type:feature
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

  1. 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
  2. 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.

  3. 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
  4. Distribution: \dotnet tool install\ via NuGet? Single-file publish? Both?

  5. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.