From 85a833a74b9130d88bcdaa944126385aff2a8ec7 Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Mon, 16 Feb 2026 15:33:16 -0500 Subject: [PATCH] Reorganize docs navigation around Server/Client/Apps pillars (#3197) * Reorganize docs navigation and add Apps documentation Collapse Providers, Transforms, and Deployment under Servers. Add Apps section with overview and low-level API pages. Add card images to welcome page and README. Add NEW tags to recent features. * Fix missing imports in Apps low-level API code examples --- README.md | 40 +++- docs/apps/low-level.mdx | 303 ++++++++++++++++++++++++++++ docs/apps/overview.mdx | 31 +++ docs/assets/images/apps-card.png | Bin 0 -> 29790 bytes docs/assets/images/clients-card.png | Bin 0 -> 26834 bytes docs/assets/images/servers-card.png | Bin 0 -> 37328 bytes docs/changelog.mdx | 1 + docs/clients/auth/cimd.mdx | 1 + docs/clients/generate-cli.mdx | 1 + docs/development/upgrade-guide.mdx | 1 + docs/docs.json | 104 ++++++---- docs/getting-started/welcome.mdx | 44 ++-- 12 files changed, 460 insertions(+), 66 deletions(-) create mode 100644 docs/apps/low-level.mdx create mode 100644 docs/apps/overview.mdx create mode 100644 docs/assets/images/apps-card.png create mode 100644 docs/assets/images/clients-card.png create mode 100644 docs/assets/images/servers-card.png diff --git a/README.md b/README.md index 68c39936b..da58d8987 100644 --- a/README.md +++ b/README.md @@ -43,21 +43,41 @@ if __name__ == "__main__": ## Why FastMCP -MCP lets you give agents access to your tools and data. But building an effective MCP server is harder than it looks. +The [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) lets you give agents access to your tools and data. But building an effective MCP application is harder than it looks. -Give your agent too much—hundreds of tools, verbose responses—and it gets overwhelmed. Give it too little and it can't do its job. The protocol itself is complex, with layers of serialization, validation, and error handling that have nothing to do with your business logic. And the spec keeps evolving; what worked last month might already need updating. +FastMCP handles all of it. Declare a tool with a Python function, and the schema, validation, and documentation are generated automatically. Connect to a server with a URL, and transport negotiation, authentication, and protocol lifecycle are managed for you. You focus on your logic, and the MCP part just works: **with FastMCP, best practices are built in.** -The real challenge isn't implementing the protocol. It's delivering **the right information at the right time**. +**That's why FastMCP is the standard framework for working with MCP.** FastMCP 1.0 was incorporated into the official MCP SDK in 2024. Today, the actively maintained standalone project is downloaded a million times a day, and some version of FastMCP powers 70% of MCP servers across all languages. -That's the problem FastMCP solves—and why it's become the standard. FastMCP 1.0 was incorporated into the official MCP SDK in 2024. Today, the actively maintained standalone project is downloaded a million times a day, and some version of FastMCP powers 70% of MCP servers across all languages. +FastMCP has three pillars: -The framework is built on three abstractions that map to the decisions you actually need to make: + + + + + + +
+ +Servers +
Servers +
+
Expose tools, resources, and prompts to LLMs. +
+ +Apps +
Apps +
+
Give your tools interactive UIs rendered directly in the conversation. +
+ +Clients +
Clients +
+
Connect to any MCP server — local or remote, programmatic or CLI. +
-- **Components** are what you expose: tools, resources, and prompts. Wrap a Python function, and FastMCP handles the schema, validation, and docs. -- **Providers** are where components come from: decorated functions, files on disk, OpenAPI specs, remote servers—your logic can live anywhere. -- **Transforms** shape what clients see: namespacing, filtering, authorization, versioning. The same server can present differently to different users. - -These compose cleanly, so complex patterns don't require complex code. And because FastMCP is opinionated about the details, like serialization, error handling, and protocol compliance, **best practices are the path of least resistance**. You focus on your logic; the MCP part just works. +**[Servers](https://gofastmcp.com/servers/server)** wrap your Python functions into MCP-compliant tools, resources, and prompts. **[Clients](https://gofastmcp.com/clients/client)** connect to any server with full protocol support. And **[Apps](https://gofastmcp.com/apps/overview)** give your tools interactive UIs rendered directly in the conversation. **Move fast and make things.** diff --git a/docs/apps/low-level.mdx b/docs/apps/low-level.mdx new file mode 100644 index 000000000..a908dff4b --- /dev/null +++ b/docs/apps/low-level.mdx @@ -0,0 +1,303 @@ +--- +title: Low-Level API +sidebarTitle: Low-Level API +description: Integrate directly with the MCP Apps extension to build interactive tool UIs. +icon: code +tag: NEW +--- + +import { VersionBadge } from '/snippets/version-badge.mdx' + + + +The [MCP Apps extension](https://modelcontextprotocol.io/docs/extensions/apps) (`io.modelcontextprotocol/ui`) lets tools return interactive UIs — an HTML page rendered in a sandboxed iframe inside the host client. Instead of returning plain text or JSON, a tool can show a chart, a form, an image viewer, or anything you can build with HTML and JavaScript. + +This page covers the low-level extension API directly. FastMCP provides typed models for app configuration, automatic `ui://` resource handling, and CSP/permission management. + +## How It Works + +An MCP App has two parts: + +1. A **tool** that does the work and returns data +2. A **`ui://` resource** containing the HTML that renders that data + +The tool declares which resource to use via `AppConfig`. When the host calls the tool, it also fetches the linked resource, renders it in a sandboxed iframe, and pushes the tool result into the app via `postMessage`. The app can also call tools back, enabling interactive workflows. + +```python +import json + +from fastmcp import FastMCP +from fastmcp.server.apps import AppConfig, ResourceCSP + +mcp = FastMCP("My App Server") + +# The tool does the work +@mcp.tool(app=AppConfig(resource_uri="ui://my-app/view.html")) +def generate_chart(data: list[float]) -> str: + return json.dumps({"values": data}) + +# The resource provides the UI +@mcp.resource("ui://my-app/view.html") +def chart_view() -> str: + return "..." +``` + +## AppConfig + +`AppConfig` controls how a tool or resource participates in the Apps extension. Import it from `fastmcp.server.apps`: + +```python +from fastmcp.server.apps import AppConfig +``` + +On **tools**, you'll typically set `resource_uri` to point to the UI resource: + +```python +@mcp.tool(app=AppConfig(resource_uri="ui://my-app/view.html")) +def my_tool() -> str: + return "result" +``` + +You can also pass a raw dict with camelCase keys, matching the wire format: + +```python +@mcp.tool(app={"resourceUri": "ui://my-app/view.html"}) +def my_tool() -> str: + return "result" +``` + +### Tool Visibility + +The `visibility` field controls where a tool appears: + +- `["model"]` — visible to the LLM (the default behavior) +- `["app"]` — only callable from within the app UI, hidden from the LLM +- `["model", "app"]` — both + +This is useful when you have tools that only make sense as part of the app's interactive flow, not as standalone LLM actions. + +```python +@mcp.tool( + app=AppConfig( + resource_uri="ui://my-app/view.html", + visibility=["app"], + ) +) +def refresh_data() -> str: + """Only callable from the app UI, not by the LLM.""" + return fetch_latest() +``` + +### AppConfig Fields + +| Field | Type | Description | +|-------|------|-------------| +| `resource_uri` | `str` | URI of the UI resource. Tools only. | +| `visibility` | `list[str]` | Where the tool appears: `"model"`, `"app"`, or both. Tools only. | +| `csp` | `ResourceCSP` | Content Security Policy for the iframe. | +| `permissions` | `ResourcePermissions` | Iframe sandbox permissions. | +| `domain` | `str` | Stable sandbox origin for the iframe. | +| `prefers_border` | `bool` | Whether the UI prefers a visible border. | + + +On **resources**, `resource_uri` and `visibility` must not be set — the resource *is* the UI. Use `AppConfig` on resources only for `csp`, `permissions`, and other display settings. + + +## UI Resources + +Resources using the `ui://` scheme are automatically served with the MIME type `text/html;profile=mcp-app`. You don't need to set this manually. + +```python +@mcp.resource("ui://my-app/view.html") +def my_view() -> str: + return "..." +``` + +The HTML can be anything — a full single-page app, a simple display, or a complex interactive tool. The host renders it in a sandboxed iframe and establishes a `postMessage` channel for communication. + +### Writing the App HTML + +Your HTML app communicates with the host using the [`@modelcontextprotocol/ext-apps`](https://github.com/modelcontextprotocol/ext-apps) JavaScript SDK. The simplest approach is to load it from a CDN: + +```html + +``` + +The `App` object provides: + +- **`app.ontoolresult`** — callback that receives tool results pushed by the host +- **`app.callServerTool({name, arguments})`** — call a tool on the server from within the app +- **`app.onhostcontextchanged`** — callback for host context changes (e.g., safe area insets) +- **`app.getHostContext()`** — get current host context + + +If your HTML loads external scripts, styles, or makes API calls, you need to declare those domains in the CSP configuration. See [Security](#security) below. + + +## Security + +Apps run in sandboxed iframes with a deny-by-default Content Security Policy. By default, only inline scripts and styles are allowed — no external network access. + +### Content Security Policy + +If your app needs to load external resources (CDN scripts, API calls, embedded iframes), declare the allowed domains with `ResourceCSP`: + +```python +from fastmcp.server.apps import AppConfig, ResourceCSP + +@mcp.resource( + "ui://my-app/view.html", + app=AppConfig( + csp=ResourceCSP( + resource_domains=["https://unpkg.com", "https://cdn.example.com"], + connect_domains=["https://api.example.com"], + ) + ), +) +def my_view() -> str: + return "..." +``` + +| CSP Field | Controls | +|-----------|----------| +| `connect_domains` | `fetch`, XHR, WebSocket (`connect-src`) | +| `resource_domains` | Scripts, images, styles, fonts (`script-src`, etc.) | +| `frame_domains` | Nested iframes (`frame-src`) | +| `base_uri_domains` | Document base URI (`base-uri`) | + +### Permissions + +If your app needs browser capabilities like camera or clipboard access, request them via `ResourcePermissions`: + +```python +from fastmcp.server.apps import AppConfig, ResourcePermissions + +@mcp.resource( + "ui://my-app/view.html", + app=AppConfig( + permissions=ResourcePermissions( + camera={}, + clipboard_write={}, + ) + ), +) +def my_view() -> str: + return "..." +``` + +Hosts may or may not grant these permissions. Your app should use JavaScript feature detection as a fallback. + +## Example: QR Code Server + +This example creates a tool that generates QR codes and an app that renders them as images. It's based on the [official MCP Apps example](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/qr-server). Requires the `qrcode[pil]` package. + +```python expandable +import base64 +import io + +import qrcode +from mcp import types + +from fastmcp import FastMCP +from fastmcp.server.apps import AppConfig, ResourceCSP +from fastmcp.tools import ToolResult + +mcp = FastMCP("QR Code Server") + +VIEW_URI = "ui://qr-server/view.html" + + +@mcp.tool(app=AppConfig(resource_uri=VIEW_URI)) +def generate_qr(text: str = "https://gofastmcp.com") -> ToolResult: + """Generate a QR code from text.""" + qr = qrcode.QRCode(version=1, box_size=10, border=4) + qr.add_data(text) + qr.make(fit=True) + + img = qr.make_image() + buffer = io.BytesIO() + img.save(buffer, format="PNG") + b64 = base64.b64encode(buffer.getvalue()).decode() + + return ToolResult( + content=[types.ImageContent(type="image", data=b64, mimeType="image/png")] + ) + + +@mcp.resource( + VIEW_URI, + app=AppConfig(csp=ResourceCSP(resource_domains=["https://unpkg.com"])), +) +def view() -> str: + """Interactive QR code viewer.""" + return """\ + + + + + + + +
+ + +""" +``` + +The tool generates a QR code as a base64 PNG. The resource loads the MCP Apps JS SDK from unpkg (declared in the CSP), listens for tool results, and renders the image. The host wires them together — when the LLM calls `generate_qr`, the QR code appears in an interactive frame inside the conversation. + +## Checking Client Support + +Not all hosts support the Apps extension. You can check at runtime using the tool's [context](/servers/context): + +```python +from fastmcp import Context +from fastmcp.server.apps import AppConfig, UI_EXTENSION_ID + +@mcp.tool(app=AppConfig(resource_uri="ui://my-app/view.html")) +async def my_tool(ctx: Context) -> str: + if ctx.client_supports_extension(UI_EXTENSION_ID): + # Return data optimized for UI rendering + return rich_response() + else: + # Fall back to plain text + return plain_text_response() +``` diff --git a/docs/apps/overview.mdx b/docs/apps/overview.mdx new file mode 100644 index 000000000..07b1d8bc0 --- /dev/null +++ b/docs/apps/overview.mdx @@ -0,0 +1,31 @@ +--- +title: Apps +sidebarTitle: Overview +description: Give your tools interactive UIs rendered directly in the conversation. +icon: grid-2 +tag: NEW +--- + +import { VersionBadge } from '/snippets/version-badge.mdx' + + + +MCP Apps let your tools return interactive UIs — rendered in a sandboxed iframe right inside the host client's conversation. Instead of returning plain text or JSON, a tool can show a chart, a form, an image viewer, or anything you can build with HTML and JavaScript. + +FastMCP implements the [MCP Apps extension](https://modelcontextprotocol.io/docs/extensions/apps), so you can start building apps today. FastMCP 3.1 will introduce a full Python-native app framework that makes building rich UIs dramatically simpler — no HTML or JavaScript required. + +## What's Available Today + +FastMCP provides typed models and helpers for working with the MCP Apps extension directly: + +- **`AppConfig`** to link tools to UI resources and control visibility +- **`ui://` resources** that automatically serve HTML with the correct MIME type +- **`ResourceCSP`** and **`ResourcePermissions`** for security and sandboxing + +This is the [low-level API](/apps/low-level) — you write the HTML yourself and wire up communication with the host via the `@modelcontextprotocol/ext-apps` JavaScript SDK. It gives you full control over the UI. + +## What's Coming in 3.1 + +FastMCP 3.1 will ship a Python-native app framework that lets you build interactive UIs entirely in Python. Define layouts, handle events, and manage state without writing any HTML or JavaScript — FastMCP generates the app for you. + +Stay tuned. In the meantime, the [low-level API](/apps/low-level) is ready to use. diff --git a/docs/assets/images/apps-card.png b/docs/assets/images/apps-card.png new file mode 100644 index 0000000000000000000000000000000000000000..1704c46bb4752d9feedfb4d1ee419cd872b0d043 GIT binary patch literal 29790 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/clients-card.png b/docs/assets/images/clients-card.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b36cf9b4c1a88b88fa5177fe985fc1ec5310c0 GIT binary patch literal 26834 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 diff --git a/docs/clients/auth/cimd.mdx b/docs/clients/auth/cimd.mdx index 6980c66f2..c1f92d1c4 100644 --- a/docs/clients/auth/cimd.mdx +++ b/docs/clients/auth/cimd.mdx @@ -3,6 +3,7 @@ title: CIMD Authentication sidebarTitle: CIMD description: Use Client ID Metadata Documents for verifiable, domain-based client identity. icon: id-badge +tag: NEW --- import { VersionBadge } from "/snippets/version-badge.mdx" diff --git a/docs/clients/generate-cli.mdx b/docs/clients/generate-cli.mdx index 4d05e0515..b0faaefb0 100644 --- a/docs/clients/generate-cli.mdx +++ b/docs/clients/generate-cli.mdx @@ -3,6 +3,7 @@ title: Generate CLI sidebarTitle: Generate CLI description: Turn any MCP server into a standalone, typed command-line tool. icon: wand-magic-sparkles +tag: NEW --- import { VersionBadge } from '/snippets/version-badge.mdx' diff --git a/docs/development/upgrade-guide.mdx b/docs/development/upgrade-guide.mdx index 70a60b830..e20f2c76c 100644 --- a/docs/development/upgrade-guide.mdx +++ b/docs/development/upgrade-guide.mdx @@ -3,6 +3,7 @@ title: Upgrade Guide sidebarTitle: Upgrade Guide description: Migration instructions for upgrading between FastMCP versions icon: up +tag: NEW --- This guide covers breaking changes and migration steps when upgrading FastMCP. diff --git a/docs/docs.json b/docs/docs.json index fc5499d5a..fe4abcdce 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -89,8 +89,7 @@ "getting-started/welcome", "getting-started/installation", "development/upgrade-guide", - "getting-started/quickstart", - "updates" + "getting-started/quickstart" ] }, { @@ -98,6 +97,7 @@ "pages": [ "servers/server", { + "collapsed": true, "group": "Core Components", "icon": "toolbox", "pages": [ @@ -108,7 +108,9 @@ ] }, { + "collapsed": true, "group": "Features", + "tag": "NEW", "icon": "stars", "pages": [ "servers/tasks", @@ -127,6 +129,36 @@ ] }, { + "collapsed": true, + "group": "Providers", + "tag": "NEW", + "icon": "layer-group", + "pages": [ + "servers/providers/overview", + "servers/providers/local", + "servers/providers/filesystem", + "servers/providers/proxy", + "servers/providers/skills", + "servers/providers/custom", + "servers/providers/mounting" + ] + }, + { + "collapsed": true, + "group": "Transforms", + "tag": "NEW", + "icon": "wand-magic-sparkles", + "pages": [ + "servers/transforms/transforms", + "servers/transforms/namespace", + "servers/transforms/tool-transformation", + "servers/visibility", + "servers/transforms/resources-as-tools", + "servers/transforms/prompts-as-tools" + ] + }, + { + "collapsed": true, "group": "Authentication", "icon": "key", "pages": [ @@ -138,40 +170,46 @@ "servers/auth/full-oauth-server" ] }, - "servers/authorization" + "servers/authorization", + { + "collapsed": true, + "group": "Deployment", + "icon": "rocket", + "pages": [ + "deployment/running-server", + "deployment/http", + "deployment/prefect-horizon", + "deployment/server-configuration", + "patterns/cli", + "patterns/testing" + ] + } ] }, { - "group": "MCP Providers", + "group": "Apps", "pages": [ - "servers/providers/overview", - "servers/providers/local", - "servers/providers/filesystem", - "servers/providers/proxy", - "servers/providers/skills", - "servers/providers/custom", - "servers/providers/mounting" - ] - }, - { - "group": "MCP Transforms", - "pages": [ - "servers/transforms/transforms", - "servers/transforms/namespace", - "servers/transforms/tool-transformation", - "servers/visibility", - "servers/transforms/resources-as-tools", - "servers/transforms/prompts-as-tools" + "apps/overview", + "apps/low-level" ] }, { "group": "Clients", "pages": [ "clients/client", - "clients/cli", - "clients/generate-cli", "clients/transports", { + "collapsed": true, + "group": "CLI", + "tag": "NEW", + "icon": "terminal", + "pages": [ + "clients/cli", + "clients/generate-cli" + ] + }, + { + "collapsed": true, "group": "Core Operations", "icon": "toolbox", "pages": [ @@ -181,6 +219,7 @@ ] }, { + "collapsed": true, "group": "Handlers", "icon": "hand", "pages": [ @@ -194,7 +233,9 @@ ] }, { + "collapsed": true, "group": "Authentication", + "tag": "NEW", "icon": "key", "pages": [ "clients/auth/oauth", @@ -204,17 +245,6 @@ } ] }, - { - "group": "Deployment", - "pages": [ - "deployment/running-server", - "deployment/http", - "deployment/prefect-horizon", - "deployment/server-configuration", - "patterns/cli", - "patterns/testing" - ] - }, { "group": "Integrations", "pages": [ @@ -240,6 +270,7 @@ ] }, { + "collapsed": true, "group": "Web Frameworks", "icon": "code", "pages": [ @@ -279,6 +310,7 @@ "development/contributing", "development/tests", "development/releases", + "updates", "changelog", "patterns/contrib" ] @@ -667,7 +699,7 @@ "icon": "code" } ], - "version": "v3.0.0 (rc 1)" + "version": "v3.0.0 (rc 2)" }, { "dropdowns": [ diff --git a/docs/getting-started/welcome.mdx b/docs/getting-started/welcome.mdx index 5b1fd66e2..4f5d8af9e 100644 --- a/docs/getting-started/welcome.mdx +++ b/docs/getting-started/welcome.mdx @@ -1,8 +1,9 @@ --- -title: "Welcome to FastMCP 3.0!" +title: "Welcome to FastMCP" sidebarTitle: "Welcome!" -description: The fast, Pythonic way to build MCP servers and clients. +description: The fast, Pythonic way to build MCP servers, clients, and applications. icon: hand-wave +mode: center --- -**FastMCP is the standard framework for building MCP applications.** The [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) provides a standardized way to connect LLMs to tools and data, and FastMCP makes it production-ready with clean, Pythonic code: +**FastMCP is the standard framework for building MCP applications.** The [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) connects LLMs to tools and data. FastMCP gives you everything you need to go from idea to production — build servers that expose capabilities, connect clients to any MCP service, and give your tools interactive UIs: ```python {1} from fastmcp import FastMCP @@ -35,32 +36,35 @@ if __name__ == "__main__": mcp.run() ``` - -**This documentation is for FastMCP 3.0**, which is currently a release candidate. For the 2.x release, see the [FastMCP 2.0 documentation](/v2/getting-started/welcome). - - -FastMCP is made with 💙 by [Prefect](https://www.prefect.io/). ## Move Fast and Make Things -The [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) lets you give agents access to your tools and data. But building an effective MCP server is harder than it looks. +The [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) lets you give agents access to your tools and data. But building an effective MCP application is harder than it looks. -Give your agent too much—hundreds of tools, verbose responses—and it gets overwhelmed. Give it too little and it can't do its job. The protocol itself is complex, with layers of serialization, validation, and error handling that have nothing to do with your business logic. And the spec keeps evolving; what worked last month might already need updating. +FastMCP handles all of it. Declare a tool with a Python function, and the schema, validation, and documentation are generated automatically. Connect to a server with a URL, and transport negotiation, authentication, and protocol lifecycle are managed for you. You focus on your logic, and the MCP part just works: **with FastMCP, best practices are built in.** -The real challenge isn't implementing the protocol. It's delivering **the right information at the right time**. +**That's why FastMCP is the standard framework for working with MCP.** FastMCP 1.0 was incorporated into the official MCP SDK in 2024. Today, the actively maintained standalone project is downloaded a million times a day, and some version of FastMCP powers 70% of MCP servers across all languages. -That's the problem FastMCP solves—and why it's become the standard. FastMCP 1.0 was incorporated into the official MCP SDK in 2024. Today, the actively maintained standalone project is downloaded a million times a day, and some version of FastMCP powers 70% of MCP servers across all languages. +FastMCP has three pillars: -The framework is built on three abstractions that map to the decisions you actually need to make: + + + Expose tools, resources, and prompts to LLMs. + + + Give your tools interactive UIs rendered directly in the conversation. + + + Connect to any MCP server — local or remote, programmatic or CLI. + + -- **[Components](/servers/tools)** are what you expose: tools, resources, and prompts. Wrap a Python function, and FastMCP handles the schema, validation, and docs. -- **[Providers](/servers/providers/overview)** are where components come from: decorated functions, files on disk, OpenAPI specs, remote servers—your logic can live anywhere. -- **[Transforms](/servers/transforms/transforms)** shape what clients see: namespacing, filtering, authorization, versioning. The same server can present differently to different users. - -These compose cleanly, so complex patterns don't require complex code. And because FastMCP is opinionated about the details, like serialization, error handling, and protocol compliance, **best practices are the path of least resistance**. You focus on your logic; the MCP part just works. +**[Servers](/servers/server)** wrap your Python functions into MCP-compliant tools, resources, and prompts. **[Clients](/clients/client)** connect to any server with full protocol support. And **[Apps](/apps/overview)** give your tools interactive UIs rendered directly in the conversation. Ready to build? Start with the [installation guide](/getting-started/installation) or jump straight to the [quickstart](/getting-started/quickstart). When you're ready to deploy, [Prefect Horizon](https://www.prefect.io/horizon) offers free hosting for FastMCP users. +FastMCP is made with 💙 by [Prefect](https://www.prefect.io/). + **This documentation reflects FastMCP's `main` branch**, meaning it always reflects the latest development version. Features are generally marked with version badges (e.g. `New in version: 3.0.0`) to indicate when they were introduced. Note that this may include features that are not yet released. @@ -71,7 +75,7 @@ The FastMCP documentation is available in multiple LLM-friendly formats: ### MCP Server -The FastMCP docs are accessible via MCP! The server URL is `https://gofastmcp.com/mcp`. +The FastMCP docs are accessible via MCP! The server URL is `https://gofastmcp.com/mcp`. In fact, you can use FastMCP to search the FastMCP docs: @@ -82,7 +86,7 @@ from fastmcp import Client async def main(): async with Client("https://gofastmcp.com/mcp") as client: result = await client.call_tool( - name="SearchFastMcp", + name="SearchFastMcp", arguments={"query": "deploy a FastMCP server"} ) print(result)