Skip to main content

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

tool init is the starting point for every MCP server you publish. It scaffolds a project, generates a valid manifest.json, and (optionally) installs dependencies — so you can go from zero to a running server in minutes.

Scaffold a new server

1

Run tool init

Call tool init with an optional path. Without a path it initializes the current directory.
tool init my-tool
The interactive prompts will ask you to choose a language, transport, package manager, and basic metadata. You can skip the prompts entirely with -y to accept all defaults.
tool init my-tool -t node -y       # Node.js server, skip prompts
tool init my-tool -t python        # Python server, interactive
tool init my-tool -t binary        # Pre-compiled binary (Rust, Go, C++)
-t rust is accepted as an alias for -t binary.
2

Choose a transport

By default, tool init creates a stdio server. Pass --http to use HTTP transport instead.
tool init . --http                 # HTTP transport
tool init my-tool -t node --http   # Node.js HTTP server
HTTP transport servers get a system_config.port and user_config.host added to the manifest automatically.
3

Choose a package manager

For Node.js and Python projects, you can specify which package manager to use:
# Node.js package managers
tool init my-tool -t node --pm pnpm
tool init my-tool -t node --pm bun
tool init my-tool -t node --pm yarn

# Python package managers
tool init my-tool -t python --pm uv
tool init my-tool -t python --pm pip
tool init my-tool -t python --pm poetry
4

Build the server

For bundled packages (Node.js, Python, binary), run the build script after scaffolding:
tool build my-tool
This runs the scripts.build command defined in the manifest’s _meta section (e.g., npm install for Node.js, uv sync for Python, or cargo build --release for Rust).

Convert an existing MCP server

If you already have a working MCP server, use tool detect to inspect it before generating a manifest.
1

Detect the project

Run tool detect to see what tool-cli finds — the server type, transport, and entry point:
tool detect                        # Analyze current directory
tool detect ./my-server            # Analyze specific project
tool detect -e src/main.py         # Override detected entry point
tool detect --transport http       # Override detected transport
tool detect -n custom-name         # Override detected package name
2

Generate the manifest

Once detection looks correct, run tool init in the same directory. It will detect the existing project and generate a manifest.json without overwriting your code:
tool init my-tool                  # Detect and migrate existing MCP server
tool init existing-project         # Detect and migrate existing MCP server
Pass --force to overwrite an existing manifest.json.

Create a reference manifest

Reference mode creates a manifest that points to an external command or remote URL instead of bundling any code. This is useful for wrapping npx/uvx-based servers or remote HTTP endpoints.
tool init . --reference               # Manifest only, no scaffolding

Reference to an external command

Use --command and --args to point the manifest at any executable. The server type field is omitted and no entry point is bundled.
tool init . --command npx --args "@anthropic/mcp-server"
This produces a manifest where server.mcp_config.command is npx and server.mcp_config.args includes @anthropic/mcp-server.

Reference to a remote HTTP server

Use --url to point the manifest at a remote MCP endpoint:
tool init . --url https://api.example.com/mcp/
To add OAuth, pass the OAuth flags alongside --url:
tool init . --url https://example.com --oauth-client-id abc
tool init . \
  --url https://example.com \
  --oauth-client-id abc \
  --oauth-authorization-url https://example.com/oauth/authorize \
  --oauth-token-url https://example.com/oauth/token \
  --oauth-scopes "read,write"
Reference-mode manifests produce .mcpbx bundles rather than .mcpb because they use HTTP transport or omit an entry point — features that go beyond the base MCPB spec. See Packaging for details.

All init examples

tool init                             # Interactive mode in current directory
tool init my-tool -t node             # Create Node.js MCP server
tool init my-tool -t python           # Create Python MCP server
tool init my-tool -t node -y          # Skip prompts, use defaults
tool init . --http                    # Use HTTP transport instead of stdio
tool init existing-project            # Detect and migrate existing MCP server
tool init . --reference               # Create manifest only (no scaffolding)
tool init . --pm pnpm                 # Use pnpm as package manager
tool init . --command npx --args "@anthropic/mcp-server"  # Reference external command
tool init . --url https://api.example.com/mcp/            # Reference remote HTTP server
tool init . --url https://example.com --oauth-client-id abc  # HTTP with OAuth

Build docs developers (and LLMs) love