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:
"statuspro-dev": {
"command": "/Users/.../uv",
"args": ["run", "--project", "/Users/.../statuspro-openapi-client",
"--package", "statuspro-mcp-server", "statuspro-mcp-server"],
"env": { "STATUSPRO_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 statuspro-mcp-server console script
user_config declaring STATUSPRO_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 who don't want DXT:
{ "command": "uvx", "args": ["statuspro-mcp-server"], "env": { ... } }
This requires the package to be on PyPI (which the release workflow already does) and removes the --project path dependency.
Acceptance criteria
Companion issues
Same packaging gap exists for the sibling MCPs — file linked once they're created:
- frontapp-openapi-client
- stocktrim-openapi-client
Context
Discussed during the katana-port catch-up session that landed #60. Current Claude Desktop config requires hand-edited paths and inline API keys; DXT eliminates both for one-click install.
Problem
The MCP server in this repo currently requires hand-editing
claude_desktop_config.jsonto install — pointing at a local checkout via--projectand embedding the API key inline: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
.dxtis a zip containing the server + amanifest.jsonthat 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
manifest.jsonat the package root declaring:name/version/description(sourced frompyproject.tomlso they don't drift)server.type = "python"with entry point pointing at the existingstatuspro-mcp-serverconsole scriptuser_configdeclaringSTATUSPRO_API_KEYastype: "secret"with a prompt-friendly description.dxtartifact.dxtinto Claude Desktop")uvx-based fallback for CLI users who don't want DXT:{ "command": "uvx", "args": ["statuspro-mcp-server"], "env": { ... } }--projectpath dependency.Acceptance criteria
manifest.jsonvalidates against the DXT schema.dxtartifact on each MCP releaseuvxinstall flowsuvx statuspro-mcp-serverworks as an invocation path (no local checkout required)Companion issues
Same packaging gap exists for the sibling MCPs — file linked once they're created:
Context
Discussed during the katana-port catch-up session that landed #60. Current Claude Desktop config requires hand-edited paths and inline API keys; DXT eliminates both for one-click install.