寫一個天氣查詢Mcp Server

上篇文章,我們聊到了 MCP 的基本概念,帶大家快速入門了 MCP。

說入門應該毫不夸張,對于科普性質的文章,只需要知道這件事情的誕生背景以及有什么作用就可以了。

但是,如果要開發給大模型調用的 Mcp Server,就不得不學習更深入的知識了。

今天,就帶大家快速開發一個簡易版的天氣查詢 Mcp Server。

文章目錄

  • 1. Mcp Server的設計思路
  • 2. 使用什么技術實現?
  • 3. 一步步實現天氣查詢 Mcp Server
  • 4. 幕后工作
  • 5. 小結

1. Mcp Server的設計思路

在開發之前,很有必要提前分析一下設計思路。

對于天氣查詢 Mcp Server,可能要問下面的這些問題:

  1. 用戶的輸入是什么?查詢城市、查詢日期?
  2. 用戶的輸入是什么格式的?文本。當然,如果是有界面的,用戶更希望通過控件輸入日期。
  3. 輸出有哪些?最基本的:最低和最高溫度,幾級風。

但,上面這些問題都是本著我們的工作經驗提出來的。如果問一下大模型,它會是怎么思考的?

我問 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。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94495.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leecode-三數之和

思路 我的思路先順序遍歷一個變量,然后使用首尾雙指針去遍歷&#xff0c;根據結果去更新另外兩個變量&#xff0c;如何和為零&#xff0c;將結果加入集合&#xff0c;但是這里要注意去重。 class Solution {public List<List<Integer>> threeSum(int[] nums) {// 排…

【數學建模】灰色關聯分析的核心步驟

文章目錄步驟一&#xff1a;讀數據步驟二&#xff1a;指標正向化步驟三&#xff1a;數據標準化步驟三&#xff1a;數據標準化步驟四&#xff1a;結果處理步驟一&#xff1a;讀數據 步驟一&#xff1a;讀數據 X xlsread(‘blind date.xlsx’); % 讀取Excel文件中的相親數據 詳…

基于高德地圖的懷化旅發精品路線智能規劃導航之旅

目錄 前言 一、2025湖南旅發 1、關于旅發 2、精品路線發布 二、高德技術賦能 1、地理編碼服務簡介 2、地理編碼服務參數介紹 3、自駕路徑規劃 4、自駕路徑規劃參數介紹 三、Java集成高德地圖服務 1、業務調用時序 2、Java地理編碼服務 3、Java路徑規劃 4、整體集成…

OpenCV實戰1.信用卡數字識別

1. 任務說明 有如下幾張信用卡&#xff0c;我們需要根據模板匹配出其中的數字&#xff0c;進行卡號的識別2. Debug源碼 cursor的debug&#xff1a;launch.json&#xff1a; {// 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。// 欲了解更多信息&#xff0c;請…

Spring Security 深度學習(一): 基礎入門與默認行為分析

目錄1. 引言&#xff1a;為何選擇Spring Security&#xff1f;2. 核心概念&#xff1a;認證 (Authentication) 與 授權 (Authorization)2.1 什么是認證 (Authentication)&#xff1f;2.2 什么是授權 (Authorization)&#xff1f;2.3 安全性上下文 (SecurityContext)3. Spring B…

數學建模--模糊綜合評價法

一、概念 模糊綜合評價法是一種基于模糊數學的綜合評價方法。它針對評價過程中存在的模糊性&#xff08;如 “好”“較好”“差” 等模糊概念&#xff09;&#xff0c;通過建立模糊集合&#xff0c;將定性評價轉化為定量評價&#xff0c;從而對具有多種屬性的評價對象做出全面、…

科普 | 5G支持的WWC架構是個啥(2)?

為解決有線固定寬帶與無線移動寬帶融合問題&#xff0c;3GPP在5G中推出了WWC系統架構。它將兩種接入類型統一融合到5G核心網絡。這有助于運營商簡化控制、簡化管理并為終端用戶提供一致服務&#xff1b;其中&#xff1a;一、5G核心組件包括&#xff1a;AMF(接入和移動性管理功能…

達夢數據庫配置文件-COMPATIBLE_MODE

達夢數據庫配置文件-COMPATIBLE_MODE 獲取系統參數 SQL 語句: select distinct para_type from v$dm_ini;這句的意思是:從達夢數據庫的參數視圖 v$dm_ini 中,查詢所有不同類型的參數分類(去重)。 ? 輸出結果解析 行號 PARA_TYPE ---------- --------- 1 RE…

能源行業數據庫遠程運維安全合規實踐:Web化平臺的落地經驗

背景&#xff1a;遠程運維下的數據管理挑戰在能源行業&#xff0c;企業通常在全國范圍內部署分布式設施。每個電站或運維中心都有獨立數據庫&#xff0c;用于&#xff1a;記錄設備狀態、傳感器數據和維護日志&#xff1b;存儲實時生產指標和能耗統計&#xff1b;生成定期運維報…

數據結構Java--8

二叉搜索樹像上圖這樣滿足&#xff0c;任意一棵子樹的左子樹小于該子樹的根結點&#xff0c;右子樹大于該子樹的根結點&#xff0c;滿足這樣的條件&#xff0c;則這種樹就被稱為二叉搜索樹。public class BinarySearchTree {static class TreeNode {public int val;public Tree…

使用Spring Boot和EasyExcel導出Excel文件,并在前端使用Axios進行請求

在現代企業應用中&#xff0c;Excel文件的導出是一項常見且重要的功能。Spring Boot作為Java開發中的熱門框架&#xff0c;結合EasyExcel這樣的高效庫&#xff0c;能夠輕松實現Excel的導出功能。而在前端&#xff0c;使用Axios進行HTTP請求&#xff0c;可以方便地與后端進行數據…

圖論水題5

cf796D 題意 n個點n-1條邊&#xff0c;k個特殊點以及整數d&#xff0c;要求刪除最多的邊保證每個點都可以在d步之內到達一個特殊點&#xff0c;輸入保證每個點都可以在d步內到達特殊點 思路 考慮什么時候可以刪除一條邊&#xff0c;即這條邊連接的兩個點可以在d步內到達兩個不同…

像WPS Office 一樣處理pdf頁面尺寸

1. 修改頁面尺寸import os import shutil import fitz # PyMuPDFdef cm_to_px(cm):# 厘米轉換成像素"""doc fitz.open(input_file)page0 doc[0]width_px page0.mediabox.widthheight page0.mediabox.heightprint(fwidth_px&#xff1a;{width_px} height&a…

Linux 基礎開發工具

在 Linux 環境下進行開發&#xff0c;熟練掌握基礎工具是提升效率、解決問題的核心前提。無論是軟件安裝、代碼編輯&#xff0c;還是編譯調試、版本管理&#xff0c;一套 “趁手” 的工具鏈能讓開發過程事半功倍。本文將從 Linux 開發最核心的七大工具模塊入手&#xff0c;一步…

TapData vs Kafka ETL Pipeline:競爭?共存?——企業實時數據策略的正確打開方式

【引言】企業實時數據流轉&#xff0c;迎來“集成計算”新范式 企業 IT 架構的演進&#xff0c;從最初的數據孤島&#xff0c;到集中式數據倉庫&#xff0c;再到如今的實時數據驅動架構。在這一過程中&#xff0c;數據的集成&#xff08;數據源→目標&#xff09;與數據的計算&…

十九、云原生分布式存儲 CubeFS

十九、云原生分布式存儲 CubeFS 文章目錄十九、云原生分布式存儲 CubeFS1、分布式存儲初識1.1 分布式存儲主要特性1.2 為什么要在K8s上落地存儲平臺1.3 云原生存儲平臺CubeFS介紹1.4 分布式存儲平臺落地架構1.4.1 混合部署1.4.2 獨立部署-基礎設施集群1.5 資源分配建議1.6 硬件…

如何拯救一家瀕臨破產的科技公司?

從谷底爬起&#xff1a;Medium 的生死重生之路 2022年的 Medium&#xff0c;正墜入一個深不見底的深淵。 每月虧損260萬美元&#xff0c;訂閱用戶持續流失——這不是增長&#xff0c;而是在消耗資本。更致命的是內容質量&#xff1a;平臺充斥著“快速致富學”等空洞內容&#x…

數據結構-算法(一)

一、已知無向圖的鄰接矩陣&#xff0c;求無向圖的鄰接表。 &#xff08;1&#xff09;提示&#xff1a;無向圖如下圖(a)所示&#xff0c;已知鄰接矩陣如圖(b)所示&#xff0c;求對應的鄰接表(c)。&#xff08;2&#xff09;請定義void adjMatrix_2_adjList(int b[4][4], AdjLis…

2025年嵌入式通信電源系統品牌有哪些?

現在科技跑得飛快&#xff0c;嵌入式通信電源系統可是越來越吃香了&#xff0c;尤其是在5G、物聯網、智能家居這些熱門地方。這玩意兒不光能讓設備穩穩當當干活兒&#xff0c;還特省電、賊聰明&#xff0c;優勢杠杠的&#xff01;既然大家伙兒都這么需要它&#xff0c;那到了20…