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
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.
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 existingfrontapp-mcp-serverconsole scriptuser_configdeclaringFRONTAPP_API_KEYastype: "secret"with a prompt-friendly description.dxtartifact.dxtinto Claude Desktop")uvx-based fallback for CLI users:{ "command": "uvx", "args": ["frontapp-mcp-server"], "env": { ... } }--projectpath dependency.Acceptance criteria
manifest.jsonvalidates against the DXT schema.dxtartifact on each MCP releaseuvxinstall flowsuvx frontapp-mcp-serverworks as an invocation path (no local checkout required)Companion issues
Same packaging gap exists for the sibling MCPs:
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.