欢迎!本指南将帮助您快速设置FastMCP并运行您的第一个MCP服务器。

如果尚未安装FastMCP,请按照安装说明进行操作。

创建FastMCP服务器

FastMCP服务器是工具、资源和其他MCP组件的集合。要创建服务器,首先需要实例化FastMCP类。

创建一个名为my_server.py的新文件,并添加以下代码:

my_server.py
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")

就是这样!你已经创建了一个FastMCP服务器,尽管它目前非常简单。让我们添加一个工具让它变得更有趣。

添加工具

要添加一个返回简单问候的工具,可以编写一个函数并用@mcp.tool装饰器将其注册到服务器:

my_server.py
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")

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

测试服务器

要测试服务器,请创建一个FastMCP客户端并将其指向服务器对象。

my_server.py
import asyncio
from fastmcp import FastMCP, Client

mcp = FastMCP("My MCP Server")

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

client = Client(mcp)

async def call_tool(name: str):
    async with client:
        result = await client.call_tool("greet", {"name": name})
        print(result)

asyncio.run(call_tool("Ford"))

这里有一些需要注意的事项:

  • 客户端是异步的,因此我们需要使用asyncio.run来运行客户端。
  • 在使用客户端之前,我们必须进入一个客户端上下文(async with client:)。您可以在同一个上下文中进行多次客户端调用。

运行服务器

为了用Python运行服务器,我们需要在服务器文件的__main__块中添加一个run语句。

my_server.py
from fastmcp import FastMCP, Client

mcp = FastMCP("My MCP Server")

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

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

这让我们可以通过python my_server.py运行服务器,使用默认的stdio传输方式,这是向客户端暴露MCP服务器的标准方法。

为什么我们需要if __name__ == "__main__":代码块?

在FastMCP生态系统中,这一行可能并非必要。但包含它可以确保您的FastMCP服务器以一致的方式为所有用户和客户端运行,因此被推荐为最佳实践。

与Python服务器交互

现在可以通过python my_server.py来运行服务器,我们可以像与其他MCP服务器一样与之交互。

在新文件中,创建一个客户端并指向服务器文件:

my_client.py
from fastmcp import Client

client = Client("my_server.py")

async def call_tool(name: str):
    async with client:
        result = await client.call_tool("greet", {"name": name})
        print(result)

asyncio.run(call_tool("Ford"))

使用FastMCP命令行界面

要让FastMCP为我们运行服务器,可以使用fastmcp run命令。这将启动服务器并保持运行状态直到被停止。默认情况下,它会使用stdio传输协议,这是一种基于文本的简单协议,用于与服务器交互。

fastmcp run my_server.py:mcp

请注意,FastMCP 不需要在服务器文件中包含__main__代码块,如果存在也会忽略它。相反,它会查找CLI命令中提供的服务器对象(这里是mcp)。如果没有提供服务器对象,fastmcp run会自动在文件中搜索名为"mcp"、"app"或"server"的服务器。

我们将客户端指向服务器文件,该文件被识别为Python MCP服务器,默认情况下通过python my_server.py执行。这会运行服务器文件的__main__代码块。还有其他运行服务器的方式,详见服务器配置指南。