---
title: "Welcome to FastMCP"
sidebarTitle: "Welcome!"
description: The fast, Pythonic way to build MCP servers, clients, and applications.
icon: hand-wave
mode: center
---
{/* <img
  src="/assets/brand/f-watercolor-waves-4.png"

  alt="'F' logo on a watercolor background"
  noZoom
  className="rounded-2xl block dark:hidden"
  /> 
  <img
  src="/assets/brand/f-watercolor-waves-4-dark.png"
  alt="'F' logo on a watercolor background"
  noZoom
  className="rounded-2xl hidden dark:block"
  />

  
  */}
<video
  autoPlay
  muted
  loop
  playsInline
  className="rounded-2xl block dark:hidden"
  src="/assets/brand/f-watercolor-waves-4-animated.mp4"
></video>
<video
  autoPlay
  muted
  loop
  playsInline
  className="rounded-2xl hidden dark:block"
  src="/assets/brand/f-watercolor-waves-4-dark-animated.mp4"
></video>


**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 prototype 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

mcp = FastMCP("Demo 🚀")

@mcp.tool
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

if __name__ == "__main__":
    mcp.run()
```


## 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 application is harder than it looks.

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.**

**That's why FastMCP is the standard framework for working with MCP.** FastMCP 1.0 was incorporated into the official MCP Python 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:

<CardGroup cols={3}>
  <Card title="Servers" img="/assets/images/servers-card.png" href="/servers/server">
    Expose tools, resources, and prompts to LLMs.
  </Card>
  <Card title="Apps" img="/assets/images/apps-card.png" href="/apps/overview">
    Give your tools interactive UIs rendered directly in the conversation.
  </Card>
  <Card title="Clients" img="/assets/images/clients-card.png" href="/clients/client">
    Connect to any MCP server — local or remote, programmatic or CLI.
  </Card>
</CardGroup>

**[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/).

<Tip>
**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.
</Tip>

## LLM-Friendly Docs

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`.

In fact, you can use FastMCP to search the FastMCP docs:

```python
import asyncio
from fastmcp import Client

async def main():
    async with Client("https://gofastmcp.com/mcp") as client:
        result = await client.call_tool(
            name="SearchFastMcp",
            arguments={"query": "deploy a FastMCP server"}
        )
    print(result)

asyncio.run(main())
```

### Text Formats

The docs are also available in [llms.txt format](https://llmstxt.org/):
- [llms.txt](https://gofastmcp.com/llms.txt) - A sitemap listing all documentation pages
- [llms-full.txt](https://gofastmcp.com/llms-full.txt) - The entire documentation in one file (may exceed context windows)

Any page can be accessed as markdown by appending `.md` to the URL. For example, this page becomes `https://gofastmcp.com/getting-started/welcome.md`.

You can also copy any page as markdown by pressing "Cmd+C" (or "Ctrl+C" on Windows) on your keyboard.
