Skip to main content
New in version 2.10.3 fastmcp install registers a server with an MCP client application so the client can launch it automatically. Each MCP client runs servers in its own isolated environment, which means dependencies need to be explicitly declared — you can’t rely on whatever happens to be installed locally.
fastmcp install claude-desktop server.py
fastmcp install claude-code server.py --with pandas --with matplotlib
fastmcp install cursor server.py -e .
uv must be installed and available in your system PATH. Both Claude Desktop and Cursor run servers in isolated environments managed by uv. On macOS, install it globally with Homebrew for Claude Desktop compatibility: brew install uv.

Supported Clients

ClientInstall method
claude-codeClaude Code’s built-in MCP management
claude-desktopDirect config file modification
cursorDeeplink that opens Cursor for confirmation
gemini-cliGemini CLI’s built-in MCP management
gooseDeeplink that opens Goose for confirmation (uses uvx)
mcp-jsonGenerates standard MCP JSON config for manual use
stdioOutputs the shell command to run via stdio

Declaring Dependencies

Because MCP clients run servers in isolation, you need to tell the install command what your server needs. There are two approaches: Command-line flags let you specify dependencies directly:
fastmcp install claude-desktop server.py --with pandas --with "sqlalchemy>=2.0"
fastmcp install cursor server.py -e . --with-requirements requirements.txt
fastmcp.json configuration files declare dependencies alongside the server definition. When you install from a config file, dependencies are picked up automatically:
fastmcp install claude-desktop fastmcp.json
fastmcp install claude-desktop  # auto-detects fastmcp.json in current directory
See Server Configuration for the full config format.

Options

OptionFlagDescription
Server Name--server-name, -nCustom name for the server
Editable Package--with-editable, -eInstall a directory in editable mode
Extra Packages--withAdditional packages (repeatable)
Environment Variables--envKEY=VALUE pairs (repeatable)
Environment File--env-file, -fLoad env vars from a .env file
Python--pythonPython version (e.g., 3.11)
Project--projectRun within a uv project directory
Requirements--with-requirementsInstall from a requirements file

Examples

# Basic install with auto-detected server instance
fastmcp install claude-desktop server.py

# Install from fastmcp.json with auto-detection
fastmcp install claude-desktop

# Explicit entrypoint with dependencies
fastmcp install claude-desktop server.py:my_server \
  --server-name "My Analysis Server" \
  --with pandas

# With environment variables
fastmcp install claude-code server.py \
  --env API_KEY=secret \
  --env DEBUG=true

# With env file
fastmcp install cursor server.py --env-file .env

# Specific Python version and requirements file
fastmcp install claude-desktop server.py \
  --python 3.11 \
  --with-requirements requirements.txt

Generating MCP JSON

The mcp-json target generates standard MCP configuration JSON instead of installing into a specific client. This is useful for clients that FastMCP doesn’t directly support, for CI/CD environments, or for sharing server configs:
fastmcp install mcp-json server.py
The output follows the standard format used by Claude Desktop, Cursor, and other MCP clients:
{
  "server-name": {
    "command": "uv",
    "args": ["run", "--with", "fastmcp", "fastmcp", "run", "/path/to/server.py"],
    "env": {
      "API_KEY": "value"
    }
  }
}
Use --copy to send it to your clipboard instead of stdout.

Generating Stdio Commands

The stdio target outputs the shell command an MCP host would use to start your server over stdio:
fastmcp install stdio server.py
# Output: uv run --with fastmcp fastmcp run /absolute/path/to/server.py
When installing from a fastmcp.json, dependencies from the config are included automatically:
fastmcp install stdio fastmcp.json
# Output: uv run --with fastmcp --with pillow --with 'qrcode[pil]>=8.0' fastmcp run /path/to/server.py
Use --copy to copy to clipboard.
fastmcp install is designed for local server files with stdio transport. For remote servers running over HTTP, use your client’s native configuration — FastMCP’s value here is simplifying the complex local setup with uv, dependencies, and environment variables.