Skip to content

Package MCP server as DXT for one-click Claude Desktop install #99

Description

@dougborg

Problem

The MCP server in this repo currently requires hand-editing claude_desktop_config.json to install — pointing at a local checkout via --project and embedding the API key inline:

"frontapp-dev": {
  "command": "/Users/.../uv",
  "args": ["run", "--project", "/Users/.../frontapp-openapi-client",
           "--package", "frontapp-mcp-server", "frontapp-mcp-server"],
  "env": { "FRONTAPP_API_KEY": "..." }
}

This works for the maintainer but doesn't scale to teammates or customers: no install flow, no UI for managing the server, no env-var prompt — the API key lives in a config file users have to edit by hand.

Proposal

Adopt Anthropic's DXT (Desktop Extensions) packaging format. A .dxt is a zip containing the server + a manifest.json that declares entry point, required env vars, platform compat, etc. Claude Desktop installs them with one click and prompts for env-var values via UI — no JSON editing.

Reference: https://github.com/anthropics/dxt

Scope

  • Add manifest.json at the package root declaring:
    • name / version / description (sourced from pyproject.toml so they don't drift)
    • server.type = "python" with entry point pointing at the existing frontapp-mcp-server console script
    • user_config declaring FRONTAPP_API_KEY as type: "secret" with a prompt-friendly description
    • Platform compatibility metadata (darwin / linux / win32 as applicable)
  • Add a CI step in the release workflow that:
    • Builds the .dxt artifact
    • Attaches it to the GitHub release
    • Publishes alongside the PyPI release
  • Document the install flow in the MCP server README ("drag the .dxt into Claude Desktop")
  • Add a uvx-based fallback for CLI users:
    { "command": "uvx", "args": ["frontapp-mcp-server"], "env": { ... } }
    This requires the package to be on PyPI and removes the --project path dependency.

Acceptance criteria

  • manifest.json validates against the DXT schema
  • CI builds and uploads the .dxt artifact on each MCP release
  • README documents both the DXT and uvx install flows
  • uvx frontapp-mcp-server works as an invocation path (no local checkout required)

Companion issues

Same packaging gap exists for the sibling MCPs:

  • statuspro-openapi-client
  • stocktrim-openapi-client

Context

Surfaced during a parallel catch-up session on the statuspro repo. Current Claude Desktop config requires hand-edited paths and inline API keys; DXT eliminates both for one-click install.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions