MCPB was designed for bundled servers that run locally over stdio. But many real-world MCP servers don’t fit that model: they run viaDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/superradcompany/tool-cli/llms.txt
Use this file to discover all available pages before exploring further.
npx or uvx (nothing to bundle), they’re remote HTTP endpoints, or they need host-managed ports and OAuth flows the base spec doesn’t cover.
MCPBX (.mcpbx) is a superset of MCPB that fills those gaps. It adds:
- HTTP transport — connect to servers via
urlinstead of spawning a subprocess - Reference mode — point to an external command (
npx,uvx) or remote URL without bundling any code - OAuth configuration — client ID, authorization URL, token URL, and scopes for browser-based auth flows
system_config— host-managed resources like port assignment and temp/data directories- Template functions — construct auth headers dynamically using
${user_config.*}and${system_config.*}interpolation
tool-cli picks the right format automatically — you never set it manually.
When to use .mcpb vs .mcpbx
- .mcpb
- .mcpbx
Use
.mcpb for bundled servers that run locally over stdio. These are the most common case:- Node.js or Python servers with a bundled
entry_point - Rust or Go binaries compiled into the bundle
- No HTTP endpoint, no OAuth, no
system_config
manifest.json
MCPBX features
HTTP transport
Setserver.transport to "http" and provide a url in mcp_config. The host connects to that URL instead of spawning a subprocess.
manifest.json
Reference mode
Reference mode lets you point to an external command or remote URL without bundling any code. Omitentry_point (and optionally type) from the server block.
Reference-mode
.mcpbx bundles don’t need multi-platform publishing — they contain no compiled code.OAuth configuration
HTTP tools that require user authentication declare anoauth_config inside mcp_config. See OAuth for HTTP tools for the full flow.
manifest.json (HTTP with OAuth)
system_config
system_config declares resources the host manages on behalf of the tool. The host allocates these values and injects them via template substitution at runtime.
| Type | Description |
|---|---|
port | A free network port for the server to bind |
temp_directory | An ephemeral scratch directory |
data_directory | A persistent storage directory |
manifest.json
mcp_config using ${system_config.port}.
Template functions
Bothmcp_config fields and HTTP headers support template interpolation at runtime:
| Variable | Resolves to |
|---|---|
${__dirname} | Absolute path to the unpacked bundle |
${user_config.<key>} | User-provided config value for <key> |
${system_config.<key>} | Host-managed config value for <key> |
Automatic format selection
tool-cli checks requires_mcpbx() on your manifest before packing. You don’t choose the format — it’s determined by what your manifest uses:
Related
- OAuth for HTTP tools — full OAuth configuration reference
- Manifest reference — all manifest fields