偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

只需5分鐘,教你用Python搭建MCP Server 精華

發(fā)布于 2025-4-10 06:36
瀏覽
0收藏

大語言模型(LLMs)能力強大,能生成各類文本,精準回答知識疑問,還可用于機器翻譯、代碼編寫等場景。然而,大語言模型也存在明顯短板,無法獲取實時數(shù)據(jù),在面對需最新信息的問題時,難以給出準確答案。

為攻克這一難題,Anthropic 推出了模型上下文協(xié)議(Model Context Protocol,簡稱 MCP)。這一標準將大語言模型與實時工具、APIs 和自定義資源相連,拓展其能力,讓它能處理更多實時信息任務,補齊短板。

本文教大家如何搭建 MCP 服務器,以 Claude 為例,賦予獲取英超實時動態(tài)的能力。

一、賦能 Claude:獲取英超實時動態(tài) 

在實際應用場景中,大語言模型在體育賽事信息獲取方面存在不足,盡管網(wǎng)絡上足球比賽動態(tài)易于搜索,但大語言模型卻無法提供相應內容,這給用戶帶來諸多不便。以 Claude 為例,當用戶詢問英超最新比賽結果或近期統(tǒng)計數(shù)據(jù)時,它的表現(xiàn)并不理想:

只需5分鐘,教你用Python搭建MCP Server-AI.x社區(qū)

為解決這個問題,我們創(chuàng)建一個MCP服務器,為大語言模型提供合適回復這些提示所需的信息。

二、設置 

需要先安裝幾個Python軟件包,才能讓MCP服務器啟動并運行。

創(chuàng)建一個全新的虛擬環(huán)境來進行安裝:

python -m venv venv

激活該環(huán)境:

source venv/bin/activate

從這里安裝UV軟件包,用來部署服務器并安裝FastMCP。

FastMCP是非常實用的Python軟件包,能夠簡化構建和部署MCP服務器的過程。它承擔了大部分繁重的工作,并且具備直觀(而且很Python風格!)的接口。

uv pip install fastmcp

最后,創(chuàng)建一個新的Python文件來編寫服務器代碼。將其命名為??server.py??。

touch server.py

三、數(shù)據(jù)源 

使用來自??football-data.org???的足球數(shù)據(jù)。需要在這個平臺上獲取API密鑰,并將API密鑰存儲在??.env??文件中。

要創(chuàng)建的工具和資源將基于其API的結構。

在文件中添加以下幾行代碼。

from dotenv import load_dotenv
load_dotenv()

# API配置
BASE_URL = "https://api.football-data.org/v4"
HEADERS = {
    'X-Auth-Token': os.getenv('FOOTBALL_API_KEY')
}

四、MCP服務器 

MCP服務器為模型提供三種主要的功能:工具(Tools)、資源(Resources)和提示(Prompts)。

資源和工具非常相似,都能讓大語言模型根據(jù)用戶輸入采取某種形式的行動。

二者的主要區(qū)別在于啟動方式。資源由應用程序控制,而工具由模型控制。這意味著大語言模型本身可以查看可用工具列表,并決定在特定場景中使用什么工具來完成給定的請求。另一方面,資源既可以由用戶手動選擇,也可以由大語言模型自動選擇,具體取決于客戶端應用程序。

提示本質上是可重復使用的模板,你可以在服務器上針對工具、資源等常見用例進行預編程。

本文只使用工具,因為我們希望模型根據(jù)用戶提示來決定使用什么工具。

創(chuàng)建4個工具,當模型收到與英超足球動態(tài)相關的提示時,它可以從中選擇。

  1. 英超聯(lián)賽排名工具
  2. 球隊賽程工具
  3. 球隊比賽結果工具
  4. 聯(lián)賽比賽結果工具

這些工具涵蓋了涉及英超聯(lián)賽動態(tài)的最常見用例。如果你有需要,可以輕松擴展服務器以添加更多工具。

現(xiàn)在,實際編寫這些工具的代碼。

在文件中添加以下幾行代碼來初始化FastMCP。

from fastmcp import FastMCP

mcp = FastMCP("Premier League Updates", dependencies=["requests", "python-dotenv"])

注意,在初始化時添加了一些依賴項。這能讓FastMCP知道服務器有哪些依賴項,并在啟動服務器時自動加載。

在FastMCP中創(chuàng)建工具的語法非常簡單,基本上就是用??tool()??裝飾器注解的Python函數(shù)。

為簡單起見,以下函數(shù)進行了截取。

我們?yōu)橛⒊?lián)賽排名工具創(chuàng)建一個函數(shù)。這個函數(shù)將獲取最新的英超聯(lián)賽排名,并返回包含球隊及其統(tǒng)計數(shù)據(jù)的JSON格式數(shù)據(jù)。

@mcp.tool()
def get_premier_league_table():
    """
    獲取當前英超聯(lián)賽排名
    :return: 包含當前英超聯(lián)賽排名的JSON響應
    """

    url = f"{BASE_URL}/competitions/PL/standings"
    response = requests.get(url, headers=HEADERS)
    data = response.json()
    
   ...

    return {'standings': standings}

我們再創(chuàng)建三個工具,分別用于獲取球隊即將到來的賽程、之前的比賽結果以及聯(lián)賽的最新比賽結果。

@mcp.tool()
def get_team_fixtures(team_id: str) -> dict:
    """
    獲取特定球隊即將到來的賽程
    :param team_id: 球隊的ID
    :return: 包含球隊接下來5場賽程的JSON響應
    """
    url = f"{BASE_URL}/teams/{team_id}/matches"
    params = {
       'status': 'SCHEDULED',
        'limit': 5
    }
    response = requests.get(url, headers=HEADERS, params=params)
    data = response.json()
    
   ...
    
    return {'fixtures': cleaned_fixtures}

@mcp.tool()
def get_team_results(team_id: str) -> dict:
    """
    獲取特定球隊近期的比賽
    :param team_id: 球隊的ID
    :return: 包含球隊最近5場比賽的JSON響應
    """
    url = f"{BASE_URL}/teams/{team_id}/matches"
    params = {
       'status': 'FINISHED',
        'limit': 5
    }
    response = requests.get(url, headers=HEADERS, params=params)
    data = response.json()
    
   ...
    
    return {'results': cleaned_results}

@mcp.tool()
def get_latest_league_results() -> dict:
    """
    獲取英超聯(lián)賽的最新比賽結果
    :return: 包含英超聯(lián)賽最近比賽的JSON響應
    """
    url = f"{BASE_URL}/competitions/PL/matches"
    params = {
       'status': 'FINISHED',
        'limit': 10, 
        'competitions': 'PL'
    }
    response = requests.get(url, headers=HEADERS, params=params)
    data = response.json()
    
   ...
    
    return {'latest_results': cleaned_results}

這樣就設置好了所有主要工具。

注意,??get_team_results???和??get_team_fixtures???函數(shù)需要一個??team_id???參數(shù)。我們不硬編碼??team_id???的選擇,而是可以創(chuàng)建一個額外的工具,為模型提供它需要傳遞給這些函數(shù)的??team_id??。

@mcp.tool()
def get_team_ids():
    """
    返回一個包含球隊名稱及其對應ID的字典
    """
    return {
        'arsenal': 57,
        'aston villa': 58,
        'bournemouth': 1044,
        'brentford': 402,
        'brighton': 397,
        'chelsea': 61,
        'crystal palace': 354,
        'everton': 62,
        'fulham': 63,
        'liverpool': 64,
       'manchester city': 65,
       'manchester united': 66,
        'newcastle': 67,
        'nottingham forest': 351,
        'tottenham': 73,
        'west ham': 563,
        'wolves': 76,
       'southampton': 340,
        'ipswich town': 349,
        'leicester city': 338
    }

這使我們可以將解析用戶請求中的球隊名稱的工作交給模型。由于大語言模型非常擅長理解自然語言,無論用戶輸入的球隊名稱拼寫如何,模型都能識別出用戶提到的球隊。例如,“Manchester United”、“Man United”、“Man U”、“Man Utd”甚至“the Red Devils”,模型都應該選擇ID為66的球隊。在這種情況下,這特別有用,因為體育團隊通常會用昵稱來稱呼。

五、測試 

在部署服務器之前,可以在開發(fā)模式下測試服務器,以確保所有工具都按預期工作。為此,在終端中輸入以下命令:

fastmcp dev server.py

這會啟動一個Web界面,可以在其中測試工具、監(jiān)控服務器性能并查看任何錯誤消息。在將服務器部署到客戶端之前,這對于調試服務器非常有用。

只需5分鐘,教你用Python搭建MCP Server-AI.x社區(qū)

六、部署 

現(xiàn)在開始部署到客戶端。FastMCP已經(jīng)內置了與Claude桌面應用的集成。要進行安裝,在終端中運行以下命令:

fastmcp install server.py

服務器已上線。

重新啟動Claude桌面應用程序,你應該會在文本框下方看到一個小工具圖標。服務器上所有可用的工具都將顯示在這里。

只需5分鐘,教你用Python搭建MCP Server-AI.x社區(qū)

現(xiàn)在已經(jīng)創(chuàng)建了MCP服務器,讓Claude能夠訪問英超聯(lián)賽的最新比賽結果和統(tǒng)計數(shù)據(jù),讓我們用之前的提示來測試一下,看看表現(xiàn)如何:

只需5分鐘,教你用Python搭建MCP Server-AI.x社區(qū)

只需5分鐘,教你用Python搭建MCP Server-AI.x社區(qū)

如你所見,剛剛創(chuàng)建的MCP服務器現(xiàn)在使Claude能夠獲取最新信息,并針對有關英超足球的提示提供準確的回復。

這個設置展示了MCP如何彌合靜態(tài)知識與動態(tài)的現(xiàn)實世界信息之間的差距。只需幾個工具和一些簡單的設置,就可以大幅增強大語言模型在特定實時任務中的實用性。

本文轉載自??AI科技論談??,作者:AI科技論談

1
收藏
回復
舉報
回復
相關推薦