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.
Supported Clients
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.json configuration files declare dependencies alongside the server definition. When you install from a config file explicitly, dependencies are picked up automatically:
Options
goose installs through a deeplink that runs your server with uvx, so it accepts only --name, --with, and --python. Options that depend on a local uv project — --with-editable, --project, and --with-requirements — are unavailable there. Deeplinks also cannot carry environment variables: passing --env or --env-file exits with an error directing you to fastmcp install mcp-json, which generates a config you can add to Goose by hand with the variables included.
Examples
Generating MCP JSON
Themcp-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:
--copy to send it to your clipboard instead of stdout.
Generating Stdio Commands
Thestdio target outputs the shell command an MCP host would use to start your server over stdio:
fastmcp.json, dependencies from the config are included automatically:
--copy to copy to clipboard.

