精品欧美一区二区三区在线观看 _久久久久国色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修改
收藏
回復
舉報
回復
相關推薦
国产在线精品一区二区三区| 精品国产亚洲一区二区三区在线观看| 免费亚洲一区二区| 欧美一区二区三区不卡视频| 成人情趣视频网站| 欧美一区三区四区| 久久久性生活视频| 一本一道波多野毛片中文在线 | 日韩中文字在线| 性生活在线视频| 欧美成人ⅴideosxxxxx| 亚洲私人影院在线观看| 久久riav二区三区| 国产免费一区二区三区免费视频| 99视频精品免费观看| 中文字幕亚洲欧美| 国产精品久久久久久久无码| 色成人综合网| 色婷婷av久久久久久久| 日韩亚洲欧美一区二区| 搞黄视频免费在线观看| 国产69精品久久久久777| 国产精品欧美久久久| 日本网站在线免费观看| 天天射天天综合网| 亚洲人午夜精品| 四虎成人免费视频| 一区二区三区无毛| 在线视频欧美精品| 婷婷五月综合缴情在线视频| 黄色动漫在线观看| 国产精品美女久久久久高潮| 久久国产精品一区二区三区| 国产suv精品一区二区69| 久久三级福利| 午夜精品一区二区三区在线播放| 五月综合色婷婷| 国产亚洲精品美女久久久久久久久久| 亚洲成人久久电影| 天天色天天干天天色| 国产精品第一| 亚洲香蕉伊在人在线观| 久久免费看毛片| 午夜免费福利在线观看| 久久免费视频色| 精品国产二区在线| 黑人精品一区二区三区| 国产成人在线看| 91影视免费在线观看| 影音先锋国产在线| 日韩电影在线观看网站| 国产999在线| 黄色片网站在线免费观看| 亚洲激情在线| 国模视频一区二区| 日本免费一二三区| 亚洲精选91| 午夜免费日韩视频| 日韩男人的天堂| 香蕉久久久久久久av网站| 97在线观看免费高清| 圆产精品久久久久久久久久久| 精品二区视频| 69国产精品成人在线播放| 日本熟妇毛茸茸丰满| 亚洲三级毛片| 秋霞av国产精品一区| 国产精品久久久久久人| 日韩精品1区2区3区| 国产精品私拍pans大尺度在线| 免费黄色片视频| 美女国产一区二区三区| 国产在线拍揄自揄视频不卡99| 91久久精品无码一区二区| 国产一区二区日韩精品| 国产日本一区二区三区| 男女污污视频在线观看| 欧美国产综合色视频| 福利网在线观看| 四虎av在线| 欧美午夜性色大片在线观看| 欧洲熟妇精品视频| 成人污污视频| 亚洲国产天堂网精品网站| 三上悠亚ssⅰn939无码播放 | 亚洲五月六月| 在线中文免费视频| 福利微拍一区二区| 中文字幕在线观看第三页| 国产精品一级在线观看| 亚洲国产三级网| 国产午夜精品福利视频| 欧美一区激情| 国产精品扒开腿做| 午夜精品久久久久久久91蜜桃| 99在线热播精品免费| 亚洲国内在线| 人妖欧美1区| 在线观看亚洲精品视频| 三大队在线观看| 久久99精品久久久久久园产越南| 久久久国产精品视频| 国产污污视频在线观看| 麻豆91小视频| 免费看成人午夜电影| 成人黄色在线电影| 色综合夜色一区| aaaaa黄色片| 日本一本不卡| 91精品国产色综合久久不卡98口| 真实新婚偷拍xxxxx| 成人精品在线视频观看| 一区二区三区四区五区视频 | 日韩av电影国产| 精品久久在线观看| 国产拍揄自揄精品视频麻豆| 97在线国产视频| 8av国产精品爽爽ⅴa在线观看| 精品久久久久久久久久久院品网| 精品无码在线观看| 中文亚洲字幕| 99久久精品免费看国产四区| 97在线观看免费观看高清| 精品国产福利视频| 精品一区国产| 国产精品永久入口久久久| 成年人视频在线免费看| 韩国成人精品a∨在线观看| 精品午夜一区二区| 亚洲无线看天堂av| 欧美日韩一区二区三区高清| 美国黄色a级片| 亚洲网站在线| 91精品国产高清久久久久久91裸体 | 国产xxxxhd| 日韩片欧美片| 国产精品日韩专区| 欧美大片aaa| 狠狠躁夜夜躁人人爽天天天天97| 亚洲av午夜精品一区二区三区| 97欧美在线视频| 中文字幕日本精品| 黄色高清视频网站| 天堂电影一区| 日韩高清免费观看| 日韩精品――中文字幕| 成人免费视频国产在线观看| 亚洲欧美精品在线| 日韩精品卡通动漫网站| 亚洲国产综合在线看不卡| 成人在线视频网址| 欧美aaaaaaa| 精品国产免费一区二区三区四区| 久久99精品国产99久久| 一广人看www在线观看免费视频| 色婷婷综合在线| 中文字幕一区二区三区人妻| 国产模特精品视频久久久久| 久久久久久久久久久人体 | 秋霞成人午夜伦在线观看| 欧美大香线蕉线伊人久久国产精品| 国产高清中文字幕在线| 亚洲精品美女在线观看播放| 中文字幕日韩精品久久| 一级毛片视频在线观看| 欧美日韩视频第一区| 快灬快灬一下爽蜜桃在线观看| 男男视频亚洲欧美| 自拍另类欧美| 国产午夜在线播放| 日韩精品五月天| 日韩在线第一区| 精品福利在线| 欧美成aaa人片在线观看蜜臀| 国产成人毛毛毛片| 久久国产精品成人免费观看的软件| 欧美激情在线有限公司| 无码国产精品高潮久久99| 日韩欧美在线一区| 国产馆在线观看| 国产精品资源站在线| 亚洲人精品午夜射精日韩| 亚洲小说图片视频| 成人高清视频观看www| 青春草在线免费视频| 亚洲精品一区二区三区婷婷月 | 免费人成在线观看播放视频| 欧美一区二区在线免费观看| 国产午夜激情视频| 国产视频一区二区在线| 操人视频免费看| 国产欧美一级| 久久av喷吹av高潮av| 女仆av观看一区| 国产精品亚洲第一区| 牛牛电影国产一区二区| 一色桃子一区二区| 精品国产亚洲av麻豆| 色乱码一区二区三区88| 538任你躁在线精品视频网站| 久久综合久久综合九色| 日韩久久久久久久久久久| 午夜在线视频一区二区区别| 正在播放一区二区三区| 人人网欧美视频| 成人欧美一区二区三区在线 | 国产成人精品在线| 免费在线看电影| 国产一区av在线| 好男人www在线视频| 3atv一区二区三区| 亚洲精品国产无码| 天天综合网 天天综合色| 在线看的片片片免费| 国产午夜三级一区二区三| 免费不卡的av| 国产美女精品人人做人人爽 | 欧美日韩成人影院| 国a精品视频大全| 国产黄色在线免费观看| 国产亚洲免费的视频看| 日韩偷拍自拍| 精品成人私密视频| va视频在线观看| 欧美日韩成人一区| а中文在线天堂| 欧美香蕉大胸在线视频观看| 丰满少妇被猛烈进入一区二区| 久久久久久久久久久久久女国产乱| 国产视频精品视频| 国产精品综合在线视频| 中文字幕欧美人妻精品一区| 宅男噜噜噜66一区二区| 韩日视频在线观看| 亚洲一级网站| 日韩精品在线视频免费观看| 欧美 日韩 国产一区二区在线视频 | 国产免费叼嘿网站免费| 欧美日韩中文国产| 日韩黄色片网站| 色哦色哦哦色天天综合| 精品人妻一区二区三区免费看| 黑丝美女久久久| 在线观看黄网站| 欧美日韩亚洲一区二区三区| 在线观看 中文字幕| 亚洲第一主播视频| 日本少妇激情视频| 亚洲成人av一区二区| 日产亚洲一区二区三区| 亚洲国产毛片aaaaa无费看| 久久精品久久精品久久| 99亚洲一区二区| 69av在线视频| 亚洲天堂av在线| 国产va免费精品高清在线| 亚洲涩涩在线| 国产精品久久久久aaaa九色| 日本一区二区电影| 国产欧美一区二区三区久久人妖 | 香蕉久久久久久av成人| 国产91丝袜在线18| a级一a一级在线观看| 99国产精品久久久久久久久久久| 久久偷拍免费视频| 国产亚洲欧美日韩俺去了| 亚洲一二三四视频| 亚洲人成在线播放网站岛国| 欧美人妻一区二区| 欧美网站在线观看| 免费在线不卡av| 在线不卡免费av| 丰满人妻一区二区三区免费视频 | 91在线视频| 美女福利视频一区| 不卡视频观看| 国产精品成av人在线视午夜片| 久久亚洲精品人成综合网| 亚洲精品欧美日韩| 日韩成人动漫在线观看| 日本一区二区三区四区高清视频| 日韩免费高清| 久草免费福利在线| 久久九九电影| 中文字幕一二三| 91免费观看视频在线| 国产精品嫩草影院俄罗斯| 精品久久久久久久久国产字幕 | 欧美一区二区三区在线电影| 蜜臀av免费在线观看| 一本色道久久88亚洲综合88| 日本无删减在线| 日韩免费在线视频| 精品午夜视频| 欧洲精品久久| 欧美精品大片| 天天碰免费视频| 成人在线视频一区二区| 婷婷丁香综合网| 精品福利在线看| 国产人妖一区二区| 亚洲色图综合网| 日本在线视频中文有码| 国产精品欧美日韩一区二区| jizz国产精品| 中文字幕一区二区三区四区五区| 亚洲一区久久| 中文字幕人妻熟女人妻a片| 久久亚洲免费视频| 九九热精彩视频| 欧美日韩高清在线| 四虎精品在线| 欧美黑人巨大xxx极品| 91福利精品在线观看| 另类小说综合网| 国产精品theporn| 一区二区久久精品| 欧美激情综合在线| 国产精品视频免费播放| 精品国产髙清在线看国产毛片| 99re在线视频| 国产精品精品视频| 欧美挤奶吃奶水xxxxx| 成人国产在线看| 久草精品在线观看| 东方伊人免费在线观看| 色综合天天综合给合国产| 亚洲黄色片视频| 欧美xxxx做受欧美.88| 四虎精品一区二区免费| 日韩高清专区| 嫩草成人www欧美| 亚洲 欧美 日韩在线| 亚洲高清视频中文字幕| 国产v在线观看| 欧美大码xxxx| 国产麻豆一区二区三区| 中国人体摄影一区二区三区| 日本欧美韩国一区三区| 永久免费成人代码| 色菇凉天天综合网| 黄网在线免费| 日韩免费在线看| 国产剧情在线观看一区| 欧美性猛交久久久乱大交小说| 久久久久久**毛片大全| 无码人妻av一区二区三区波多野| 国产婷婷成人久久av免费高清 | 91精产国品一二三| 一区二区三区四区精品在线视频| 国产超碰人人模人人爽人人添| 久久精品视频免费播放| 国产aⅴ精品一区二区四区| 女人床在线观看| 国产+成+人+亚洲欧洲自线| 久久精品视频国产| 日韩av网站电影| 欧美片第1页| 亚洲精品乱码久久久久久蜜桃91| 蜜桃精品视频在线| www.99re7| 精品国产精品网麻豆系列 | 国产精品久久久久久久久久99| 欧美男gay| www.日本一区| 亚洲精品第一国产综合野| 老牛影视av牛牛影视av| 欧美一级在线亚洲天堂| 日韩精品免费一区二区在线观看 | 99在线精品免费| 五月天婷婷导航| 最近更新的2019中文字幕| 99视频有精品高清视频| 久久久久久久久久伊人| 成人夜色视频网站在线观看| 亚洲日本韩国在线| 尤物99国产成人精品视频| 色综合一区二区日本韩国亚洲| 996这里只有精品| 久久这里只精品最新地址| 伊人影院中文字幕| 欧美激情精品久久久久久| 偷拍一区二区| 三级av免费观看| 亚洲一区二区中文在线| 九色视频在线播放| 亚洲xxxxx| 新狼窝色av性久久久久久| 欧美xxxooo| 日韩精品久久久久久福利| 国产精品原创视频| av网站大全免费| 亚洲国产精品黑人久久久| 国产77777| 国产欧美在线观看| 夜夜精品视频| 26uuu成人网| 亚洲香蕉在线观看| www.丝袜精品| 中文字幕丰满乱码|