MCP(Model Context Protocol)是專為LLM(大語言模型)應用設計的標準化協議

核心定義

MCP(Model Context Protocol)是專為LLM(大語言模型)應用設計的標準化協議,通過安全可控的方式向AI應用暴露數據和功能。主要提供以下能力:

  • 標準化的上下文管理
  • 安全的功能調用接口
  • 跨平臺的數據交互協議
  • 可審計的操作日志記錄

MCP三大原語

MCP Server 提供了三種核心原語,每種原語都有其特定的用途和特點:

  1. Tool(工具):服務器公開可執行的函數,供客戶端和LLM調用,實現主動操作和數據寫入。
  2. Resource(資源):服務器提供的只讀數據,如文件、數據庫記錄、圖片等,供客戶端或應用獲取上下文。
  3. Prompt(提示模板):可重用的交互模板,引導或標準化與LLM的對話流程。

技術架構

+----------------+     +----------------+     +----------------+
|   MCP Client   | ← → |   MCP Server   | ← → |   MCP Host    |
+----------------+     +----------------+     +----------------+↓                       ↓                       ↓
+----------------+     +----------------+     +----------------+
|  LLM Application |   |  API Endpoints |   |  Data Sources   |
+----------------+     +----------------+     +----------------+

通信方式

MCP服務端支持兩種與客戶端的數據通信方式:

1. 標準輸入輸出(stdio)

  • 原理:客戶端將服務端作為子進程啟動,通過標準輸入輸出進行數據交換。
  • 適用場景:本地運行,低延遲、高效率,適合快速響應的本地應用。

2. 基于HTTP的服務器推送事件(SSE)

  • 原理:客戶端與服務端通過HTTP協議通信,利用SSE實現服務端向客戶端實時推送數據。
  • 適用場景:分布式或遠程部署,適合跨物理位置的服務集成。

開發指南

Python環境管理與FastMCP安裝

推薦使用uv進行Python環境管理:

  • 安裝uv(Windows):
    powershell -ExecutionPolicy ByPass -c “irm https://astral.sh/uv/install.ps1 | iex”
  • 初始化項目并指定Python版本:
    uv init py-app -p 3.11.9
  • 創建并激活虛擬環境:
    uv venv
    source .venv/bin/activate
  • 安裝FastMCP庫:
    pip install fastmcp

版本推薦

  • Python 3.10及以上,支持async/await
  • FastMCP庫需通過pip安裝

Python服務端開發示例

以下為基于FastMCP的MCP服務端完整示例,包含Tool與Resource原語:

from mcp.server.fastmcp import FastMCPmcp = FastMCP("Demo 🚀")@mcp.tool()
def add(a: int, b: int) -> int:"""兩個數字相加"""return a + b@mcp.tool()
async def calculate(expression: str) -> str:"""計算一個簡單的數學表達式。Args:expression: 要計算的數學表達式(如"1 + 2")Returns:str: 計算結果"""try:result = eval(expression)return f"計算結果: {result}"except Exception as e:return f"計算錯誤: {str(e)}"@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""獲取個性化問候語"""return f"Hello, {name}!"if __name__ == "__main__":mcp.run(transport='stdio')

TypeScript 集成

import { MCPServer } from 'mcp-ts';
const server = new MCPServer('GitHubIntegrator');server.registerTool({name: 'search_repos',description: '搜索GitHub倉庫',execute: async (query: string) => {// 調用GitHub API}
});

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

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

相關文章

Fiori學習專題三十四:Responsiveness

在這一步中,我們提高了應用程序的響應能力。SAPUI5應用程序可以在手機、平板電腦和臺式機設備上運行,我們可以配置應用程序以充分利用每種場景的屏幕狀態。幸運的是,像sap.m.Table這樣的SAPUI5控件已經提供了許多我們可以使用的功能。 1.修改…

解決 TimeoutError: [WinError 10060] 在 FramePack項目中連接 Hugging Face 超時的問題

#工作記錄 以下是針對 TimeoutError: [WinError 10060] 的完整排查方案,適用于 FramePack項目中。 (一般該錯誤的發生原因請重點排查Hugging Face模型倉庫受限需要登錄的情形) FramePack項目參考資料 FramePack部署(從PyCharm解…

obj = null; 賦值null之前沒有其他引用指向obj對象,那么,當obj=null時,會被垃圾回收機制立即回收嗎?

不會立即回收。 具體原因是: 賦值 obj null; 后,對象變成“不可達”,符合垃圾回收條件,但垃圾回收器并不會立刻回收它。垃圾回收是CLR自動控制的非確定性過程,什么時候執行回收取決于系統內存壓力、GC策略、分代情況…

【Ubuntu 安裝Docker CE-Jenkins】

安裝Docker CE(Ubuntu) Install | Docker Docs官網 使用apt倉庫安裝 DNS配置(可選) #手動替換 sudo vim /etc/systemd/resolved.conf #典型配置如下 [Resolve] DNS8.8.8.8 DNS114.114.114.114 FallbackDNS1.1.1.1 # 備用 DNS#sed替換 sudo sed -i /^#DNS/ {s/#DNS/DNS8.8.8…

5、開放式PLC梯形圖編程組件 - /自動化與控制組件/open-plc-programming

76個工業組件庫示例匯總 開放式PLC編程環境 這是一個開放式PLC編程環境的自定義組件,提供了一個面向智能倉儲堆垛機控制的開放式PLC編程環境。該組件采用蘋果科技風格設計,支持多廠商PLC硬件,具有直觀的界面和豐富的功能。 功能特點 多語…

內網和外網怎么互通?外網訪問內網的幾種簡單方式

在企業或家庭網絡中,經常會遇到不同內網環境下網絡互通問題。例如,當公司本地局域網內有個辦公OA網站,在辦公室內電腦上網可以登錄使用,但在家帶寬下就無法直接通信訪問到。這就需要我們采取一些實用的內外網互通技巧來解決這個問…

使用大語言模型進行機器人規劃(Robot planning with LLMs)

李升偉 編譯 長期規劃在機器人學領域可以從經典控制方法與大型語言模型在現實世界知識能力的結合中獲益。 在20世紀80年代,機器人學和人工智能(AI)領域的專家提出了莫雷奇悖論,觀察到人類看似簡單的涉及移動和感知的任務&#x…

【計算機視覺】OpenCV實戰項目: opencv-text-deskew:實時文本圖像校正

opencv-text-deskew:基于OpenCV的實時文本圖像校正 一、項目概述與技術背景1.1 核心功能與創新點1.2 技術指標對比1.3 技術演進路線 二、環境配置與算法原理2.1 硬件要求2.2 軟件部署2.3 核心算法流程 三、核心算法解析3.1 文本區域定位3.2 角度檢測優化3.3 仿射變換…

可視化圖解算法33:判斷是不是平衡二叉樹

1. 題目 描述 輸入一棵節點數為 n 的二叉樹,判斷該二叉樹是否是平衡二叉樹。 在這里,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹 平衡二叉樹(Balanced Binary Tree),具有以下性質&#xff1…

【Linux網絡】應用層自定義協議與序列化

應用層自定義協議與序列化 應用層 我們程序員寫的一個個解決我們實際問題,滿足我們日常需求的網絡程序,都是在應用層. 協議是一種"約定".Socket的接口,在讀寫數據時,都是按"字符串"的方式來發送接收的.如果我們要傳輸一些"結構化的數據"怎么辦…

MySQL + Elasticsearch:為什么要使用ES,使用場景與架構設計詳解

MySQL Elasticsearch:為什么要使用ES,使用場景與架構設計詳解 前言一、MySQL Elasticsearch的背景與需求1.1 為什么要使用Elasticsearch(ES)?1.2 為什么MySQL在某些場景下不足以滿足需求?1.3 MySQL Elas…

PPL困惑度的計算

1. 公式 PPL(Perplexity)困惑度 是自然語言處理(NLP)中常用的評估語言模型(Language Model)性能的指標。PPL 用于衡量語言模型對語言序列的預測能力,數值越小,說明模型的預測能力越…

MegaCLI Raid管理工具

整理在CentOS 7.9和Ubuntu 24.04上,MegaCLI 工具的安裝與常用命令。 1. 參考 下載和安裝MegaCLI工具 MegaCli RAID管理工具 Megacli 批量磁盤巡檢 ubuntu24.04 No such file libncursesw.so.5 dell服務器硬盤的狀態變成外來(foreign)命…

HTML9:頁面結構分析

頁面結構分析 元素名描述header標題頭部區域的內容(用于頁面或頁面中的一塊區域)footer標記腳部區域的內容(用于整個頁面或頁面的一塊區域)sectionWeb頁面的一塊獨立區域article獨立的文章內容aside相關的內容或應用(…

分布式處理架構

分布式處理架構是一種將計算任務分散到多臺計算機或服務器上協同完成的系統設計方法。這種架構通過將工作負載分配到多個節點(可以是物理機、虛擬機或容器)來提高性能、可靠性和可擴展性。下面我將從多個角度詳細解釋這一概念: 分布式架構的…

算法每日一題 | 入門-分支結構-Apples Prologue/蘋果和蟲子

Apples Prologue/蘋果和蟲子 題目描述 小 B 喜歡吃蘋果。她現在有 m m m(1 ≤ m ≤100)個蘋果,吃完一個蘋果需要花費 t t t(0 ≤ t≤ 100)分鐘,吃完一個后立刻開始吃下一個。 現在時間過去了 s s s&a…

RT Thread Studio創建軟件和硬件RTC工程

MCU型號:STM32F103RET6 一.配置軟件模擬RTC 1.生成一個帶串口輸出的工程文件,新建RT-Thread項目工程文件。 2.查看電路圖中的串口輸出管腳,根據STMCubeMx軟件可知此串口為USART1,選擇芯片型號為STM32F103RET6,控制臺…

STC32G12K128-旋轉編碼器-軟件去抖

STC32G12K128-旋轉編碼器-軟件去抖 簡介代碼 簡介 EC11旋轉編碼器是一種可以連續旋轉的器件A,B,C為旋轉編碼引腳,帶按鍵的有D,E引腳。引腳功能: A:編碼器A相;B:編碼器B相;C:公共端-一般接到GN…

配置Jupyter Notebook環境及Token認證(Linux服務器)

配置Jupyter Notebook環境及Token認證(Linux服務器) 背景 在Ubuntu 18.04.6 LTS服務器(IP: 39.105.167.2)上,基于虛擬環境pytorch_env,通過Mac終端(SSH)配置Jupyter Notebook環境&…

從零開始學Flink:開啟實時計算的魔法之旅

在凌晨三點的數據監控大屏前,某電商平臺的技術負責人突然發現一個異常波動:支付成功率驟降15%。傳統的數據倉庫此時還在沉睡,而基于Flink搭建的實時風控系統早已捕捉到這個信號,自動觸發預警機制。當運維團隊趕到時,系…