60e0ffc959
Upgrade checks / Notify on failure (push) Has been cancelled
Upgrade checks / Close issue on success (push) Has been cancelled
Schema Crash Test / Real-world schema crash test (232K schemas) (push) Has been cancelled
Run static analysis / static_analysis (push) Has been cancelled
Tests / Tests: Python 3.10 on ubuntu-latest (push) Has been cancelled
Tests / Tests: Python 3.13 on ubuntu-latest (push) Has been cancelled
Tests / Tests: Python 3.10 on windows-latest (push) Has been cancelled
Tests / Tests with lowest-direct dependencies (push) Has been cancelled
Tests / MCP conformance tests (push) Has been cancelled
Tests / Integration tests (push) Has been cancelled
Tests / Package install smoke (push) Has been cancelled
Upgrade checks / Static analysis (push) Has been cancelled
Upgrade checks / Tests: Python 3.10 on ubuntu-latest (push) Has been cancelled
Upgrade checks / Tests: Python 3.13 on ubuntu-latest (push) Has been cancelled
Upgrade checks / Tests: Python 3.10 on windows-latest (push) Has been cancelled
Upgrade checks / Integration tests (push) Has been cancelled
Update MCPServerConfig Schema / update-config-schema (push) Has been cancelled
Update SDK Documentation / update-sdk-docs (push) Has been cancelled
105 lines
3.9 KiB
Plaintext
105 lines
3.9 KiB
Plaintext
---
|
|
title: CLI
|
|
sidebarTitle: Overview
|
|
description: The fastmcp command-line interface
|
|
icon: terminal
|
|
---
|
|
|
|
import { VersionBadge } from '/snippets/version-badge.mdx'
|
|
|
|
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.
|
|
|
|
```bash
|
|
fastmcp --help
|
|
```
|
|
|
|
## Commands at a Glance
|
|
|
|
| Command | What it does |
|
|
| ------- | ------------ |
|
|
| [`run`](/cli/running) | Run a server (local file, factory function, remote URL, or config file) |
|
|
| [`dev apps`](/cli/running#previewing-apps) | Launch a browser-based preview UI for Prefab App tools |
|
|
| [`dev inspector`](/cli/running#development-with-the-inspector) | Launch a server inside the MCP Inspector for interactive testing |
|
|
| [`install`](/cli/install-mcp) | Install a server into Claude Code, Claude Desktop, Cursor, Gemini CLI, or Goose |
|
|
| [`inspect`](/cli/inspecting) | Print a server's tools, resources, and prompts as a summary or JSON report |
|
|
| [`list`](/cli/client) | List a server's tools (and optionally resources and prompts) |
|
|
| [`call`](/cli/client#calling-tools) | Call a single tool with arguments |
|
|
| [`discover`](/cli/client#discovering-configured-servers) | Find MCP servers configured in your editors and tools |
|
|
| [`generate-cli`](/cli/generate-cli) | Scaffold a standalone typed CLI from a server's tool schemas |
|
|
| [`project prepare`](/cli/running#pre-building-environments) | Pre-install dependencies into a reusable uv project |
|
|
| [`auth cimd`](/cli/auth) | Create and validate CIMD documents for OAuth |
|
|
| `version` | Print version info (`--copy` to copy to clipboard) |
|
|
|
|
## 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:
|
|
|
|
```bash
|
|
fastmcp list http://localhost:8000/mcp
|
|
fastmcp call http://localhost:8000/mcp get_forecast city=London
|
|
```
|
|
|
|
**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:
|
|
|
|
```bash
|
|
fastmcp list server.py
|
|
fastmcp run server.py:my_custom_server
|
|
```
|
|
|
|
**Config files** work too — both FastMCP's own `fastmcp.json` format and standard MCP config files with an `mcpServers` key:
|
|
|
|
```bash
|
|
fastmcp run fastmcp.json
|
|
fastmcp list mcp-config.json
|
|
```
|
|
|
|
**Stdio commands** connect to any MCP server that speaks over standard I/O. Use `--command` instead of a positional argument:
|
|
|
|
```bash
|
|
fastmcp list --command 'npx -y @modelcontextprotocol/server-github'
|
|
```
|
|
|
|
### 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:
|
|
|
|
```bash
|
|
fastmcp list weather
|
|
fastmcp call weather get_forecast city=London
|
|
```
|
|
|
|
When the same name appears in multiple configs, use the `source:name` form to be specific:
|
|
|
|
```bash
|
|
fastmcp list claude-code:my-server
|
|
fastmcp call cursor:weather get_forecast city=London
|
|
```
|
|
|
|
Run [`fastmcp discover`](/cli/client#discovering-configured-servers) 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`:
|
|
|
|
```bash
|
|
fastmcp call http://localhost:8000/mcp my_tool --auth none
|
|
```
|
|
|
|
You can also pass a bearer token directly:
|
|
|
|
```bash
|
|
fastmcp list http://localhost:8000/mcp --auth "Bearer sk-..."
|
|
```
|
|
|
|
## Transport Override
|
|
|
|
FastMCP defaults to Streamable HTTP for URL targets. If the server only supports Server-Sent Events (SSE), force the older transport:
|
|
|
|
```bash
|
|
fastmcp list http://localhost:8000 --transport sse
|
|
```
|