FastMCP provides a command-line interface (CLI) that makes it easy to run, develop, and install your MCP servers. The CLI is automatically installed when you install FastMCP.
fastmcp --help

Commands Overview

CommandPurposeDependency Management
runRun a FastMCP server directlyUses your current environment; you are responsible for ensuring all dependencies are available
devRun a server with the MCP Inspector for testingCreates an isolated environment; dependencies must be explicitly specified with --with and/or --with-editable
installInstall a server in MCP client applicationsCreates an isolated environment; dependencies must be explicitly specified with --with and/or --with-editable
inspectGenerate a JSON report about a FastMCP serverUses your current environment; you are responsible for ensuring all dependencies are available
versionDisplay version informationN/A

Command Details

run

Run a FastMCP server directly or proxy a remote server.
fastmcp run server.py
This command runs the server directly in your current Python environment. You are responsible for ensuring all dependencies are available.

Options

OptionFlagDescription
Transport--transport, -tTransport protocol to use (stdio, http, or sse)
Host--hostHost to bind to when using http transport (default: 127.0.0.1)
Port--port, -pPort to bind to when using http transport (default: 8000)
Path--pathPath to bind to when using http transport (default: /mcp/ or /sse/ for SSE)
Log Level--log-level, -lLog level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
No Banner--no-bannerDisable the startup banner display

Server Specification

New in version: 2.3.5 The server can be specified in three ways:
  1. server.py - imports the module and looks for a FastMCP object named mcp, server, or app. Errors if no such object is found.
  2. server.py:custom_name - imports and uses the specified server object
  3. http://server-url/path or https://server-url/path - connects to a remote server and creates a proxy
When using fastmcp run with a local file, it ignores the if __name__ == "__main__" block entirely. Instead, it finds your server object and calls its run() method directly with the transport options you specify. This means you can use fastmcp run to override the transport specified in your code.
For example, if your code contains:
# server.py
from fastmcp import FastMCP

mcp = FastMCP("MyServer")

@mcp.tool
def hello(name: str) -> str:
    return f"Hello, {name}!"

if __name__ == "__main__":
    # This is ignored when using `fastmcp run`!
    mcp.run(transport="stdio")
You can run it with Streamable HTTP transport regardless of what’s in the __main__ block:
fastmcp run server.py --transport http --port 8000
Examples
# Run a local server with Streamable HTTP transport on a custom port
fastmcp run server.py --transport http --port 8000

# Connect to a remote server and proxy as a stdio server
fastmcp run https://example.com/mcp-server

# Connect to a remote server with specified log level
fastmcp run https://example.com/mcp-server --log-level DEBUG

dev

Run a MCP server with the MCP Inspector for testing.
fastmcp dev server.py
This command runs your server in an isolated environment. All dependencies must be explicitly specified using the --with and/or --with-editable options.
The dev command is a shortcut for testing a server over STDIO only. When the Inspector launches, you may need to:
  1. Select “STDIO” from the transport dropdown
  2. Connect manually
This command does not support HTTP testing. To test a server over Streamable HTTP or SSE:
  1. Start your server manually with the appropriate transport using either the command line:
    fastmcp run server.py --transport http
    
    or by setting the transport in your code:
    python server.py  # Assuming your __main__ block sets Streamable HTTP transport
    
  2. Open the MCP Inspector separately and connect to your running server

Options

OptionFlagDescription
Editable Package--with-editable, -eDirectory containing pyproject.toml to install in editable mode
Additional Packages--withAdditional packages to install (can be used multiple times)
Inspector Version--inspector-versionVersion of the MCP Inspector to use
UI Port--ui-portPort for the MCP Inspector UI
Server Port--server-portPort for the MCP Inspector Proxy server
Example
# Run dev server with editable mode and additional packages
fastmcp dev server.py -e . --with pandas --with matplotlib

install

New in version: 2.10.3 Install a MCP server in MCP client applications. FastMCP currently supports the following clients:
  • Claude Code - Installs via Claude Code’s built-in MCP management system
  • Claude Desktop - Installs via direct configuration file modification
  • Cursor - Installs via deeplink that opens Cursor for user confirmation
  • MCP JSON - Generates standard MCP JSON configuration for manual use
fastmcp install claude-code server.py
fastmcp install claude-desktop server.py
fastmcp install cursor server.py
fastmcp install mcp-json server.py
Note that for security reasons, MCP clients usually run every server in a completely isolated environment. Therefore, all dependencies must be explicitly specified using the --with and/or --with-editable options (following uv conventions) or by attaching them to your server in code via the dependencies parameter. You should not assume that the MCP server will have access to your local environment.
uv must be installed and available in your system PATH. Both Claude Desktop and Cursor run in isolated environments and need uv to manage dependencies. On macOS, install uv globally with Homebrew for Claude Desktop compatibility: brew install uv.
FastMCP install commands focus on local server files with STDIO transport. For remote servers running with HTTP or SSE transport, use your client’s native configuration - FastMCP’s value is simplifying the complex local setup with dependencies and uv commands.

Server Specification

The install command supports the same file.py:object notation as the run command:
  1. server.py - imports the module and looks for a FastMCP object named mcp, server, or app. Errors if no such object is found.
  2. server.py:custom_name - imports and uses the specified server object

Options

OptionFlagDescription
Server Name--name, -nCustom name for the server (defaults to server’s name attribute or file name)
Editable Package--with-editable, -eDirectory containing pyproject.toml to install in editable mode
Additional Packages--withAdditional packages to install (can be used multiple times)
Environment Variables--envEnvironment variables in KEY=VALUE format (can be used multiple times)
Environment File--env-file, -fLoad environment variables from a .env file
Examples
# Auto-detects server object (looks for 'mcp', 'server', or 'app')
fastmcp install claude-desktop server.py

# Uses specific server object
fastmcp install claude-desktop server.py:my_server

# With custom name and dependencies
fastmcp install claude-desktop server.py:my_server --name "My Analysis Server" --with pandas

# Install in Claude Code with environment variables
fastmcp install claude-code server.py --env API_KEY=secret --env DEBUG=true

# Install in Cursor with environment variables
fastmcp install cursor server.py --env API_KEY=secret --env DEBUG=true

# Install with environment file
fastmcp install cursor server.py --env-file .env

# Generate MCP JSON configuration
fastmcp install mcp-json server.py --name "My Server" --with pandas

# Copy JSON configuration to clipboard
fastmcp install mcp-json server.py --copy

MCP JSON Generation

The mcp-json subcommand generates standard MCP JSON configuration that can be used with any MCP-compatible client. This is useful when:
  • Working with MCP clients not directly supported by FastMCP
  • Creating configuration for CI/CD environments
  • Sharing server configurations with others
  • Integration with custom tooling
The generated JSON follows the standard MCP server configuration format used by Claude Desktop, VS Code, Cursor, and other MCP clients, with the server name as the root key:
{
  "server-name": {
    "command": "uv",
    "args": [
      "run",
      "--with",
      "fastmcp",
      "fastmcp",
      "run",
      "/path/to/server.py"
    ],
    "env": {
      "API_KEY": "value"
    }
  }
}
To use this configuration with your MCP client, you’ll typically need to add it to the client’s mcpServers object. Consult your client’s documentation for any specific configuration requirements or formatting needs.
Options specific to mcp-json:
OptionFlagDescription
Copy to Clipboard--copyCopy configuration to clipboard instead of printing to stdout

inspect

New in version: 2.9.0 Generate a detailed JSON report about a FastMCP server, including information about its tools, prompts, resources, and capabilities.
fastmcp inspect server.py
The command supports the same server specification format as run and install:
# Auto-detect server object
fastmcp inspect server.py

# Specify server object
fastmcp inspect server.py:my_server

# Custom output location
fastmcp inspect server.py --output analysis.json

version

Display version information about FastMCP and related components.
fastmcp version

Options

OptionFlagDescription
Copy to Clipboard--copyCopy version information to clipboard