精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MCP協議之MCP簡述 原創

發布于 2025-4-3 10:46
瀏覽
0收藏

背景

隨著AI Agent在2025年的火爆,與之相關的MCP協議也越來越受到開發者的重視,本文將結合示例深入了解MCP協議的原理架構以及應用方法。

(What)MCP協議是什么

MCP(Model Context Protocol)是一種專為AI Agent設計的標準化協議,旨在解決AI模型與外部數據、工具之間的集成難題。其核心定位是成為AI領域的“通用接口”,類似于物理世界中的USB-C標準,為不同AI系統提供安全、無縫、可擴展的數據交換能力。

(Why)為什么要使用MCP協議

MCP的作用主要有三點:

  • 消除對接碎片化。就像早期USB-C標準沒有誕生之前,我們的手機、電腦設備不得不面臨五花八門的插口問題,現在大模型在與各家服務商進行API調用的時候,如果沒有統一的協議,那么開發者和使用者不得不面臨類似的問題。通過MCP協議,開發者和AI模型可以輕松地集成,實現數據交換和交互。

MCP協議之MCP簡述-AI.x社區

  • 在不同 LLM 提供商和供應商之間切換的靈活性
  • 在您的基礎設施中保護數據的最佳實踐

備注:以上兩點在MCP官網有提到,但目前接觸不夠,暫未有深入體會。

(How)如何實現一個MCP協議

MCP協議之MCP簡述-AI.x社區

MCP協議的架構構成主要主要由5部分組成:

  • MCP主機(MCP Hosts)如Claude Desktop、IDE 或 AI 工具等想要通過 MCP 訪問數據的程序
  • MCP客戶端(MCP Clients)與服務器保持 1:1 連接的協議客戶端
  • MCP服務器(MCP Servers)通過標準化的模型上下文協議暴露特定功能的輕量級程序
  • 本地數據源(Local Data Sources)MCP 服務器可以安全訪問的計算機文件、數據庫和服務
  • 遠程服務(Remote Services)MCP 服務器可以連接的通過互聯網提供的外部系統(例如通過 API)

接下來,我們實現一個??MCPServer???,這個??Server???可以通過??Web API??訪問遠程的服務器以獲取天氣信息。

1. 準備環境:安裝??uv??

# Mac下使用curl命令安裝
curl -LsSf https://astral.sh/uv/install.sh | sh

# Window下使用PowerShell命令安裝
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

運行結果:

MCP協議之MCP簡述-AI.x社區

備注:如果提示 ??url: (7) Failed to connect to github.com port 443 after 93 ms: Couldn't connect to server?? 可能需要科學上網或者過一段時間再試。

2. 創建項目

# 為我們的項目創建一個新目錄
uv init weather
cd weather

# 創建虛擬環境并激活它
uv venv
source .venv/bin/activate

# 安裝依賴
uv add "mcp[cli]" httpx

# 創建我們的服務器文件
touch weather.py

運行結果:

MCP協議之MCP簡述-AI.x社區

3. 實現weather.py的代碼

3.1 導入包并設置實例

from typing import Any, Dict
import httpx
from mcp.server.fastmcp import FastMCP

# 初始化FastMCP服務器
mcp = FastMCP("weather")

# 常量
BAIDU_API_BASE = "https://api.map.baidu.com/weather/v1/"
BAIDU_API_KEY = "8HkEwz5h********"

3.2 實現輔助函數

# 城市與行政區ID映射表
WEATHER_DISTRICT_ID = {
    "北京": "110100",
    "上海": "310000",
    "廣州": "440100",
    "深圳": "440300",
    # 可以根據需要添加更多城市
}

asyncdefmake_baidu_request(district_id: str) -> Dict[str, Any] | None:
    """向百度天氣API發出GET請求,處理錯誤并返回JSON響應"""
    params = {
        "district_id": district_id,
        "data_type": "now",
        "ak": BAIDU_API_KEY
    }
    asyncwith httpx.AsyncClient() as client:
        try:
            response = await client.get(BAIDU_API_BASE, params=params, timeout=30.0)
            response.raise_for_status()
            return response.json()
        except Exception:
            returnNone

defformat_weather(data: Dict) -> str:
    """將天氣數據格式化為可讀字符串"""
    location = data["result"]["location"]
    now = data["result"]["now"]
    returnf"""
城市: {location['city']}
天氣狀況: {now['text']}
溫度: {now['temp']}°C
體感溫度: {now['feels_like']}°C
濕度: {now['rh']}%
風力: {now['wind_class']}
風向: {now['wind_dir']}
更新時間: {now['uptime']}
"""

defget_district_id(city: str) -> str | None:
    """根據城市名稱獲取對應的行政區ID"""
    return WEATHER_DISTRICT_ID.get(city)

3.3 實現工具執行

@mcp.tool()
asyncdefget_weather(city: str) -> str:
    """獲取指定城市的當前天氣
    
    Args:
        city: 城市名稱
    """
    district_id = get_district_id(city)
    ifnot district_id:
        returnf"未找到{city}對應的行政區ID。"
    
    data = await make_baidu_request(district_id)
    
    ifnot data or data.get("status") != 0:
        return"無法獲取天氣信息。"
    
    return format_weather(data)

3.4 實現入口函數

if __name__ == "__main__":
    # 初始化并運行服務器
    mcp.run(transport='stdio')

完整代碼

from typing importAny, Dict
import httpx
from mcp.server.fastmcp import FastMCP

# 初始化FastMCP服務器
mcp = FastMCP("weather")

# 常量
BAIDU_API_BASE = "https://api.map.baidu.com/weather/v1/"
BAIDU_API_KEY = "8HkEwz5h********"

# 城市與行政區ID映射表
WEATHER_DISTRICT_ID = {
    "北京": "110100",
    "上海": "310000",
    "廣州": "440100",
    "深圳": "440300",
    # 可以根據需要添加更多城市
}

asyncdefmake_baidu_request(district_id: str) -> Dict[str, Any] | None:
    """向百度天氣API發出GET請求,處理錯誤并返回JSON響應"""
    params = {
        "district_id": district_id,
        "data_type": "now",
        "ak": BAIDU_API_KEY
    }
    asyncwith httpx.AsyncClient() as client:
        try:
            response = await client.get(BAIDU_API_BASE, params=params, timeout=30.0)
            response.raise_for_status()
            return response.json()
        except Exception:
            returnNone

defformat_weather(data: Dict) -> str:
    """將天氣數據格式化為可讀字符串"""
    location = data["result"]["location"]
    now = data["result"]["now"]
    returnf"""
城市: {location['city']}
天氣狀況: {now['text']}
溫度: {now['temp']}°C
體感溫度: {now['feels_like']}°C
濕度: {now['rh']}%
風力: {now['wind_class']}
風向: {now['wind_dir']}
更新時間: {now['uptime']}
"""

defget_district_id(city: str) -> str | None:
    """根據城市名稱獲取對應的行政區ID"""
    return WEATHER_DISTRICT_ID.get(city)

@mcp.tool()
asyncdefget_weather(city: str) -> str:
    """獲取指定城市的當前天氣
    
    Args:
        city: 城市名稱
    """
    district_id = get_district_id(city)
    ifnot district_id:
        returnf"未找到{city}對應的行政區ID。"
    
    data = await make_baidu_request(district_id)
    
    ifnot data or data.get("status") != 0:
        return"無法獲取天氣信息。"
    
    return format_weather(data)

if __name__ == "__main__":
    # 初始化并運行服務器
    mcp.run(transport='stdio')

??BAIDU_API_KEY??? 需要訪問 ??http://lbsyun.baidu.com?? 注冊獲取。

4. 啟動服務器

通過??uv run weather.py??啟動服務。

MCP協議之MCP簡述-AI.x社區

5. 測試服務

命令行下運行如下命令安裝inspector。

npx @modelcontextprotocol/inspector

運行結果:

MCP協議之MCP簡述-AI.x社區

6. 調試服務

  1. 安裝完畢后,在瀏覽器中打開??http://localhost:5173/??。
  2. 頁面輸入調試命令:
  • command: uv
  • Arguments: --directory /Users/deadwalk/Code/ai_proj_agent/weather run weather.py

備注: 

  • ??/Users/deadwalk/Code/ai_proj_agent/weather??對應創建的工程目錄,請根據自己的情況進行修改。

3. 點擊Connect按鈕,確認服務可以正常連接;

4. 在右側Tools點擊List Tools->Weather->輸入參數"北京"->Run Tool,可以看到正常獲得北京的天氣情況,此時代表mcp-server-weather可以正常運行了。

運行結果:

MCP協議之MCP簡述-AI.x社區

7. 集成到其他應用中

7.1 在cherry-studio中集成服務

  1. 打開cherry-studio的設置->MCP服務器->編輯JSON,添加如下mcp服務設置:

{
    "mcpServers":{
        "weather":{
            "command":"/Users/deadwalk/.local/bin/uv",
            "args":[
                "--directory",
                "/Users/deadwalk/Code/ai_proj_agent/weather",
                "run",
                "weather.py"
            ]
        }
    }
}

備注:

  • ??/Users/deadwalk/.local/bin/uv??? 對應??uv??可執行文件的完整路徑,可以通過MacOS/Linux上運行which uv或在Windows上運行where uv來獲取此路徑。


2.添加成功之后,啟用??weather???服務和??deepseek-chat??模型,提問大模型:北京今天的天氣是多少?運行結果:


MCP協議之MCP簡述-AI.x社區

從圖中可以看到,大模型調用了我們之前封裝的mcp-server-weather服務,并成功獲取了北京的天氣。

7.2 在cursor中集成服務

  1. 我們也可以在cursor中添加對應的服務

    MCP協議之MCP簡述-AI.x社區

  1. 配置完畢MCPserver之后,啟用weather服務(weather左側的綠點點亮),然后在對話框中詢問北京的天氣情況即可獲得查詢結果。

運行結果:

MCP協議之MCP簡述-AI.x社區

總結

  • MCP是一套服務間通信協議,它通過統一的協議,解決了大模型與工具間繁瑣的適配通信問題。
  • MCP的構成包括:MCP Host、MCP Client、MCP Server、Local Data Source、Remote Data Source。
  • 封裝MCP-server-weather服務時,需要在工具函數上添加@mcp.tool()裝飾器。
  • 通過MCP協議,我們可以封裝各種服務提供給Cursor、Cherry-Studio、甚至我們自己開發的Agent使用,從而使得LLM+Agent的功能更加強大。


本文轉載自公眾號一起AI技術 作者:熱情的Dongming

原文鏈接:??https://mp.weixin.qq.com/s/CvEgl6xw0q0A7zNx0SJtIQ??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-4-3 10:47:23修改
收藏
回復
舉報
回復
相關推薦
亚洲午夜福利在线观看| 成人毛片视频网站| 丰满人妻一区二区三区四区53| 欧美日韩国产成人精品| 日韩精品免费观看| www欧美激情| 草草视频在线观看| 国产人妖乱国产精品人妖| 亚洲精品欧美一区二区三区| 国产成人自拍视频在线| 久久国产影院| 亚洲精品按摩视频| 亚洲综合在线一区二区| 伊人久久视频| 亚洲精品欧美专区| 日韩影片在线播放| 日本美女一级视频| 久久电影网电视剧免费观看| 亚州精品天堂中文字幕| 国产精品18在线| 日本天堂一区| 91精品国产丝袜白色高跟鞋| 欧美 激情 在线| 日韩av官网| 国产精品久久久久一区| 蜜桃av噜噜一区二区三| www.成人精品| 麻豆精品新av中文字幕| 欧美自拍视频在线观看| 精品少妇久久久| 综合色一区二区| 最新的欧美黄色| 妖精视频一区二区| 国产精品一站二站| 欧美日韩黄色影视| 久久久精品三级| 日韩电影免费看| 亚洲第一在线综合网站| 欧美一二三不卡| 国产福利视频在线观看| 国产精品色哟哟| 日韩欧美99| 美女做暖暖视频免费在线观看全部网址91 | 精品日韩在线观看| 国产高清999| 亚洲青青久久| 欧美精品免费视频| 蜜臀一区二区三区精品免费视频| 日韩影片中文字幕| 欧美三级xxx| 免费毛片小视频| 擼擼色在线看观看免费| 天天爽夜夜爽夜夜爽精品视频| 成年丰满熟妇午夜免费视频| 特级毛片在线| 亚洲午夜日本在线观看| 欧美午夜小视频| 国产美女高潮在线| 黑人巨大精品欧美一区二区三区| 人妻少妇精品无码专区二区| 国产在线美女| 日韩欧美高清视频| 精品久久久久久久无码| 日韩一区二区三区免费视频| 欧美在线视频全部完| 亚洲欧美激情网| 日韩美香港a一级毛片| 欧美片在线播放| 天天操精品视频| 日韩成人18| 欧美精品一区二区三区蜜桃 | 欧美黑人xxx| 天堂资源在线播放| 国产精品免费看| 国产精品久久久久久搜索| 亚洲无码精品国产| 国产精品性做久久久久久| 不卡视频一区二区三区| 天天综合天天综合| 久久免费国产精品| 中文字幕av日韩精品| 在线观看中文字幕的网站| 亚洲福利视频三区| 九热视频在线观看| 精品99re| 亚洲精品日韩在线| www.97视频| 99精品视频免费| 国产精品成人av性教育| 国产精品高潮呻吟AV无码| 国产成人丝袜美腿| 欧美久久综合性欧美| 国产黄a三级三级三级av在线看| 亚洲午夜羞羞片| 美女一区二区三区视频| 动漫视频在线一区| 中文字幕日韩欧美在线| 国产一级中文字幕| 美女网站色91| 精品无码久久久久久久动漫| 免费大片黄在线| 欧美日韩国产一区中文午夜| 国产福利在线免费| 亚洲天堂日韩在线| 欧美另类高清videos| 日韩精品久久久久久免费| 国产麻豆视频精品| 先锋在线资源一区二区三区| ****av在线网毛片| 91麻豆精品国产| 中文幕无线码中文字蜜桃| 欧美激情偷拍| 国产欧美日韩丝袜精品一区| 污污视频在线观看网站| 成人欧美一区二区三区白人| 乱妇乱女熟妇熟女网站| va天堂va亚洲va影视| 亚洲欧洲日产国码av系列天堂| 日本少妇高清视频| 蜜臀精品久久久久久蜜臀| 久久精品人人做人人爽电影| av免费在线观看网址| 欧美伊人久久大香线蕉综合69| 香港三日本8a三级少妇三级99| 欧美电影一区| 国产成人精品电影久久久| 国产91绿帽单男绿奴| 亚洲日本中文字幕区| 国产精品天天av精麻传媒| 欧美1区2区3区4区| 国内精品伊人久久| 亚洲av无码乱码在线观看性色| 国产精品国产三级国产普通话蜜臀| 国产特级淫片高清视频| 999国产精品一区| 欧美成人精品激情在线观看| 中文字幕人妻一区二区在线视频| 久久综合色婷婷| 欧美大片在线播放| 精品亚洲自拍| 欧美亚洲视频在线观看| 日本韩国在线观看| 午夜视频久久久久久| 日本国产在线视频| 99精品国产在热久久婷婷| 好看的日韩精品视频在线| 蜜臀av在线| 亚洲精品在线免费播放| 日本一区二区三区四区五区| 成人久久久精品乱码一区二区三区| 久久天天东北熟女毛茸茸| 桃花岛tv亚洲品质| 亚洲午夜精品久久久久久性色 | 日韩精品一区二区三区在线观看| 久久人妻无码aⅴ毛片a片app| 国产一区二区影院| 高清无码一区二区在线观看吞精| 日韩精品三级| 久久久久久久久久久免费精品 | 主播福利视频一区| 国产又粗又黄又爽视频| 中文字幕制服丝袜成人av| 三级黄色片免费观看| 国产一区激情| 久久久久免费网| 日韩毛片一区| 久久亚洲私人国产精品va| 国内老熟妇对白hdxxxx| 亚洲成a人在线观看| 国产精品300页| 欧美aaaaaa午夜精品| 在线无限看免费粉色视频| 日韩在线亚洲| 欧美在线视频播放| √天堂资源地址在线官网| 日韩精品中文字幕一区二区三区| 日韩精品一区三区| 国产亚洲一二三区| 国产成人精品综合久久久久99| 亚洲激情成人| 亚洲看片网站| 亚洲精品a区| 日韩免费不卡av| 成人免费在线| 亚洲欧洲国产伦综合| 国产熟女一区二区三区五月婷 | 中文在线免费看视频| 亚洲免费观看高清完整版在线| 国产精品日日摸夜夜爽| 三级欧美韩日大片在线看| 久久视频免费在线| 亚洲成在人线免费观看| 亚洲精品免费av| 成人免费无遮挡| 精品中文字幕视频| 国产午夜精品一区理论片| 日韩免费电影网站| 中文字幕+乱码+中文乱码www| 亚洲尤物在线视频观看| 九九热免费在线| 成人综合婷婷国产精品久久| 国产精品久久a| 亚洲在线观看| 肉大捧一出免费观看网站在线播放| 国产一区二区三区不卡视频网站| http;//www.99re视频| 韩国成人在线| 2019中文字幕免费视频| 最新超碰在线| 日韩中文字幕亚洲| 成人三级黄色免费网站| 亚洲精品福利免费在线观看| 国产三级按摩推拿按摩| 欧美影片第一页| www.com亚洲| 黄色一区二区在线| 精品视频一区二区在线观看| 中文字幕一区二区三中文字幕| 精品无码一区二区三区| 不卡av在线网| 一本色道久久hezyo无码| 狠狠色丁香婷综合久久| 性chinese极品按摩| 免费在线欧美黄色| 人人妻人人添人人爽欧美一区| 欧美日韩一区自拍 | 亚洲免费网址| 欧美精品久久久久久久免费| 国产精品地址| 日本一道在线观看| 亚洲电影在线一区二区三区| 亚洲欧美国产精品桃花| 不卡在线一区| 亚洲成人第一| 欧美一级精品| 亚洲精品久久区二区三区蜜桃臀| 国产成人精品免费视| 日本精品一区二区三区高清 久久| 你懂的在线观看一区二区| 国产精品一级久久久| 成人免费直播在线| 国产欧美精品一区二区三区| 伦理一区二区| 久久久久久久有限公司| 无码少妇一区二区三区| 日本不卡一区二区三区在线观看| 国产亚洲一卡2卡3卡4卡新区 | 91精品视频一区| vam成人资源在线观看| 亚洲free嫩bbb| 国产+成+人+亚洲欧洲在线| 国产伦精品一区二区三区| 麻豆精品少妇| 日本在线观看一区二区| 精品国产一区二区三区噜噜噜| 日韩欧美精品在线不卡| 久久免费av| 中文字幕在线中文| 91久久在线| 99久久国产宗和精品1上映| 热久久国产精品| а 天堂 在线| 成人av在线网| 一道本在线观看| 国产精品福利一区| 久久免费黄色网址| 欧美视频免费在线观看| 中文字幕免费视频观看| 91精品国产色综合久久不卡蜜臀| 亚洲h视频在线观看| 日韩精品免费视频| 五月婷婷在线视频| 久久久久久亚洲精品中文字幕| 美女高潮在线观看| 国产精品视频yy9099| 精品成人18| 欧美性xxxx69| 午夜国产精品视频| 成人午夜视频免费在线观看| 久久精品国产99国产精品| 亚洲国产精品第一页| 久久伊人中文字幕| 亚洲综合视频网站| 精品久久久久久久中文字幕| 中文字幕av网站| 亚洲第一在线视频| 91caoporm在线视频| 国语自产精品视频在免费| 巨胸喷奶水www久久久免费动漫| 亚洲在线观看视频网站| 曰本一区二区三区视频| 国产制服91一区二区三区制服| 国产农村妇女毛片精品久久莱园子 | 蜜桃av乱码一区二区三区| 亚洲激情图片一区| 国产在线一级片| 亚洲成色777777女色窝| 91这里只有精品| 91国产精品视频在线| 国产精品久久久久久久久久辛辛| 久久国产精品-国产精品| 亚洲综合中文| 亚洲一区在线不卡| 99精品久久只有精品| 国产精品 欧美激情| 欧美中文字幕一区| 日本精品久久久久| 久久国产精品亚洲| 91在线成人| 蜜桃传媒视频麻豆一区| 欧美视频四区| 国产精品久久久久久9999| 久久久久国色av免费看影院| 久久精品性爱视频| 日本一区二区三区视频在线看| 激情小说综合区| 一区二区免费不卡在线| 久久精品免费网站| 26uuu亚洲综合色| 久艹视频在线观看| 欧美精品三级日韩久久| 国产网站在线播放| 911国产网站尤物在线观看| 最新国产一区二区| 黄色录像特级片| 久草中文综合在线| 综合 欧美 亚洲日本| 色综合久久综合网欧美综合网| 国精品人妻无码一区二区三区喝尿| 精品国产一区二区三区久久久狼| 国产精品扒开腿做爽爽爽视频软件| 国产综合18久久久久久| 狠狠入ady亚洲精品经典电影| 久久出品必属精品| 亚洲天堂a在线| 99久久国产热无码精品免费| 精品久久久999| 婷婷久久综合九色综合99蜜桃| 亚洲激情一区二区| 蜜臀久久久久久久| 亚洲少妇xxx| 3d成人动漫网站| 久久久久久久久免费视频| 成人免费xxxxx在线观看| 伊人成综合网| 亚洲一区二区三区三州| 亚洲精品日产精品乱码不卡| 亚洲成人av综合| 久久久亚洲国产| 欧美一区 二区| 高清在线观看免费| 久久女同精品一区二区| 亚洲国产无线乱码在线观看| 这里只有精品久久| 久久女人天堂| 色哺乳xxxxhd奶水米仓惠香| 国产高清精品网站| 日韩精品一卡二卡| 精品一区二区电影| 岛国一区二区| 特色特色大片在线| bt欧美亚洲午夜电影天堂| 九九热精品视频在线| 正在播放国产一区| 精品一区二区三区中文字幕| 国产欧美123| 99精品视频在线免费观看| www毛片com| 久久久精品网站| 国产在线播放精品| 欧美日韩成人免费视频| 国产日韩欧美电影| av网站免费播放| 8x拔播拔播x8国产精品| 日韩国产在线| 亚洲AV成人精品| 91精品福利视频| av大全在线| 欧美精品一区二区三区在线四季| 麻豆高清免费国产一区| 国产在线视频你懂的| 亚洲视屏在线播放| 久久久国产精品入口麻豆| 一区二区传媒有限公司| 国产精品国产三级国产a| 色欲av永久无码精品无码蜜桃 | 亚洲精品视频播放| 亚洲视频资源| 欧美色图另类小说| 亚洲天堂中文字幕| 丝袜+亚洲+另类+欧美+变态| 成人黄色av网| 香蕉久久久久久久av网站| 日本一级二级视频| 亚洲美女性视频| 亚洲精品一二三**| 欧美第一页浮力影院| 亚洲h在线观看| 成人a在线视频免费观看| 麻豆传媒一区二区|