Skip to main content
The fastmcp CLI is installed automatically with FastMCP. It’s the primary way to run, test, install, and interact with MCP servers from your terminal.

Commands at a Glance

Server Targets

Most commands need to know which server to talk to. You pass a “server spec” as the first argument, and FastMCP resolves the right transport automatically. URLs connect to a running HTTP server:
Python files are loaded directly — no mcp.run() boilerplate needed. FastMCP finds a server instance named mcp, server, or app in the file, or you can specify one explicitly:
Config files work too — both FastMCP’s own fastmcp.json format and standard MCP config files with an mcpServers key:
Stdio commands connect to any MCP server that speaks over standard I/O. Use --command instead of a positional argument:

Name-Based Resolution

If your servers are already configured in an editor or tool, you can refer to them by name. FastMCP scans configs from Claude Desktop, Claude Code, Cursor, Gemini CLI, and Goose:
When the same name appears in multiple configs, use the source:name form to be specific:
Run fastmcp discover to see what’s available on your machine.

Authentication

When targeting an HTTP URL, the CLI enables OAuth authentication by default. If the server requires it, you’ll be guided through the flow (typically opening a browser). If it doesn’t, the setup is a silent no-op. To skip authentication entirely — useful for local development servers — pass --auth none:
You can also pass a bearer token directly:

Transport Override

FastMCP defaults to Streamable HTTP for URL targets. If the server only supports Server-Sent Events (SSE), force the older transport: