大家好,鐵人賽堂堂邁入第十八天!
在過去幾天,我們深度體驗了 adk-mcp 這個功能全面、整合度高的「應用開發套件」。今天,我們將換上另一套裝備fast-mcp 框架。
fast-mcp 的設計理念更接近現代的 Python Web 框架 (如 FastAPI),它輕量、快速,並給予開發者更多的控制權。今天,我們就來從零開始,用 fast-mcp 搭建一個最經典的 "Hello, World!" 級別的 MCP 應用。
fast-mcp 開發環境我們同樣從一個乾淨的虛擬環境開始。
打開終端機,進入你的專案資料夾,並執行:
python -m venv venv
source ./venv/bin/activate
fast-mcpfast-mcp 官方推薦使用 uv 這個 Rust 編寫的高速 Python 套件管理器來安裝,速度飛快。
# 先安裝 uv
pip install uv
# 再用 uv 來安裝 fastmcp
uv pip install fastmcp
小提示: 如果你不想額外安裝
uv,直接使用pip install fastmcp也是完全可以的。
安裝完成後,可以執行以下指令來確認 fast-mcp 的 CLI (命令列工具) 是否可用:
fastmcp version
如下圖:
fast-mcp 伺服器 (my_server.py)fast-mcp 定義工具的方式非常優雅,採用了裝飾器 (Decorator) 的語法,這對於熟悉 FastAPI 或 Flask 的開發者來說會倍感親切。
建立一個名為 my_server.py 的檔案,並貼上以下程式碼:
from fastmcp import FastMCP
# 1. 初始化一個 FastMCP 應用
mcp = FastMCP("My First FastMCP Server")
# 2. 使用 @mcp.tool 裝飾器來註冊一個工具
@mcp.tool
def greet(name: str) -> str:
"""A simple tool that returns a greeting."""
return f"Hello, {name}!"
# 3. (可選) 直接執行此檔案時的啟動方式
if __name__ == "__main__":
# 但我們更推薦使用 fastmcp CLI 來啟動
mcp.run(transport="http", port=8005)
mcp = FastMCP(...): 建立一個 FastMCP 應用實例。@mcp.tool: 這是 fast-mcp 的精髓!任何被這個裝飾器標記的 Python 函式,都會被自動註冊成一個可供遠端呼叫的 MCP 工具。fast-mcp 客戶端 (my_client.py)接著,我們來編寫一個客戶端,用來呼叫剛剛建立的 greet 工具。
建立一個名為 my_client.py 的檔案,並貼上以下程式碼:
import asyncio
from fastmcp import Client
# 注意:這裡的 port 號需要與你啟動伺服器時的 port 一致
# 我們稍後會用 8000 port 來啟動伺服器,所以先設定為 8000
client = Client("http://localhost:8000/mcp")
async def call_tool(name: str):
# 使用 async with 來優雅地管理連線
async with client:
# 呼叫名為 "greet" 的工具,並傳遞參數
result = await client.call_tool("greet", {"name": name})
print(" 成功收到來自 Server 的回應:")
print(result)
# 執行非同步主程式
if __name__ == "__main__":
asyncio.run(call_tool("FastMCP"))
client = Client(...): 建立一個客戶端實例,指向伺服器的 /mcp 端點。async with client:: fast-mcp 的客戶端同樣是非同步的,使用 async with 可以自動處理連線的建立與關閉。await client.call_tool(...): 這是客戶端的核心方法,用來執行遠端的工具。第一個參數是工具名稱,第二個參數是包含所有參數的字典。第一步:啟動伺服器
fast-mcp 的 CLI 指令來啟動我們的伺服器:fastmcp run my_server.py:mcp --transport http --port 8000
重點提示: 我們在這裡使用了
--port 8000。這個命令列參數會覆寫你在my_server.py中寫的port=8005。這意味著我們的伺服器現在運行在 8000 埠口上。這也是為什麼我們在my_client.py中將 URL 設定為8000的原因。

第二步:執行客戶端
python my_client.py
成果驗收
如果一切順利,你將會在客戶端的終端機看到:

同時,在伺服器的終端機,你會看到一條類似以下的日誌,記錄了這次成功的請求:

恭喜你!今天我們成功地用 fast-mcp 搭建並運行了第一個 Client-Server 應用。
我們初步體驗了 fast-mcp 的設計哲學:
adk-mcp 那樣提供包含 Agent 和 Web UI 的完整應用框架。fastmcp run 等指令來管理應用,符合現代 Python 開發的習慣。我們現在對 adk-mcp 和 fast-mcp 都有了初步的認識。明天,我們將深入 fast-mcp 的進階功能,學習如何讓我們的工具執行非同步 I/O 操作,這是在真實世界中打造高效能服務的關鍵一步!