上篇文章,我們聊到了 MCP 的基本概念,帶大家快速入門了 MCP。
說入門應該毫不夸張,對于科普性質的文章,只需要知道這件事情的誕生背景以及有什么作用就可以了。
但是,如果要開發給大模型調用的 Mcp Server,就不得不學習更深入的知識了。
今天,就帶大家快速開發一個簡易版的天氣查詢 Mcp Server。
文章目錄
- 1. Mcp Server的設計思路
- 2. 使用什么技術實現?
- 3. 一步步實現天氣查詢 Mcp Server
- 4. 幕后工作
- 5. 小結
1. Mcp Server的設計思路
在開發之前,很有必要提前分析一下設計思路。
對于天氣查詢 Mcp Server,可能要問下面的這些問題:
- 用戶的輸入是什么?查詢城市、查詢日期?
- 用戶的輸入是什么格式的?文本。當然,如果是有界面的,用戶更希望通過控件輸入日期。
- 輸出有哪些?最基本的:最低和最高溫度,幾級風。
但,上面這些問題都是本著我們的工作經驗提出來的。如果問一下大模型,它會是怎么思考的?
我問 DeepSeek:
剩下的內容我就不貼出來了,原因是看到 DeepSeek 回答的第三點就讓人懵圈了。
因為我們是 Mcp 的新手,很多概念還不清楚,對于一個 Demo 程序,也不需要考慮那么多因素。
這里你會發現人的學習方式,還是和 AI 有很大的不同。
人面對新事物,一次只能了解很少的概念,多了就記不住,感覺好像沒聽過一樣。但是,AI 的學習是通過數據、模型和算力。比學習速度,人永遠也比不上AI。
現在我的 MCP Server 需求很簡單:用戶可以輸入城市和日期,查詢制定日期的天氣,返回的輸出可以只包含溫度和風力大小。
2. 使用什么技術實現?
下面才需要考慮用什么技術實現一個 Mcp Server。這里選擇使用 Python 編程語言實現。
使用 Python 實現一個 Mcp Server 有哪些方式呢?有下面幾種:
- FastMcp庫:適合快速原型開發
- McpServer庫:官方 SDK,適合用來學習深入理解協議細節
- FastAPI:適合企業級集成
- SSE:適合實時天氣警報。
因此,這里我選擇了 FastMCP。
什么是FastMCP?
FastMCP是一個高效構建Model Context Protocol(MCP)服務器的Python框架。通過簡潔的裝飾器語法讓開發者快速為大型語言模型(LLM)提供上下文數據和工具支持。它簡化了MCP協議實現,支持工具(Tools)、資源(Resources)和提示(Prompts)三大核心功能,能以極簡代碼實現AI與外部系統的安全交互,顯著提升LLM應用開發效率。
3. 一步步實現天氣查詢 Mcp Server
Step1: 使用 uv Python 包管理器創建一個 Python 虛擬環境。
uv venv venv
這樣創建了一個名為 venv
的 Python 虛擬環境。當然,你也可以指定 Python 的版本。用法問一下大模型就好了。
當然,需要先使用 pip install uv
安裝 uv。
然后,記得在命令行激活這個虛擬環境。
之后在虛擬環境安裝 Python 包都必須使用 uv pip install packages
。大模型也可能沒有意識到這點。
Step2: 在高德控制臺注冊一個賬號,并創建一個用于 Web 服務的 key。
官網有教程,就不再贅述了。
Step3:讓大模型使用 FastMCP 創建一個天氣查詢 MCP Server。
寫提示詞的時候,一定要明確輸入和輸出。不然,大模型就要開始自行發揮了。
限于篇幅,這篇文章不會詳細講解如何使用 FastMCP。
在與大模型戰斗三百回合后,你的 MCP Server 基本功能終于開發完成了。
這里展示一個核心函數:
代碼較長,不貼代碼了,大模型生成的。
Step4:測試 MCP Server
然后,你肯定想測試一下 MCP Server 能否正常工作。
那么,測試 MCP Server 有哪幾種方法呢?
- MCP Inspector:MCP Inspector是官方提供的專業調試工具,推薦。
- 集成開發環境測試:Claude Desktop 或者 cline 插件。使用有難度。
- MCP 客戶端程序:寫一個訪問 MCP Server 的客戶端程序。新手不推薦,難度頗大。
我真的沒想到大模型 Claude Sonnet 4 上來就給我選擇了寫一個 MCP 客戶端程序,結果調試半天原來是客戶端程序寫錯了。
最后,大模型終于回到了簡易模式,開始嘗試用 MCP Inspector 調試:
在激活了虛擬環境的終端輸入以下命令:
npx @modelcontextprotocol/inspector python fastmcp_server.py
安裝之后,瀏覽器自動打開如下的界面:
恭喜你,成功了一半。
如果能連接上 Mcp Server,就快大功告成了。
連接成功之后,點擊【Tools】按鈕,可以看到服務端注冊的、可供大模型訪問的工具。
查詢廣州城市的天氣預報試試:
可以查詢到今天以及未來幾天的天氣:
大功告成,基本的功能具備了。盡管,距離一個企業級的 Mcp Server 還很遙遠,但這是一個很好的開始。看下時間,這多少個 10 分鐘過去了。
4. 幕后工作
剛開始,我是打算通過 Gradio 庫來構建 Mcp Server的。
但是,在實現的過程中遇到了很多問題,大模型還是沒有解決。所以,暫時放棄了。
有時候,大模型真的很聰明,有時候也真的很傻X。
大模型自作主張幫我創建了幾個 markdown 文檔:API配置文章、API測試總結報告等。
其實,我根本就沒有給大模型指令創建這些文檔,它竟然自己生成了它們。我真的不知道這是好事情,還是壞事情。
當它生成的程序滿足我們的要求時,文檔也是正確的,這很好。但如果生成的程序功能不正確時,我們是不是還要回過頭來改文檔?
5. 小結
這篇文章帶你使用 FastMCP 實現了一個查詢天氣 Mcp Server。核心思路如下:
-
這個天氣查詢 Mcp Server 需要具備哪些功能、輸入和輸出是什么?
-
使用什么技術實現?
-
怎么測試?
你覺得整個過程下來,10分鐘能夠實現一個簡易版的 Mcp Server 嗎?
現在你還覺得 AI 會替代 90% 的程序員嗎?
我是一梵AI編程,聚焦AI編程、AI變現,用 AI 打敗 AI。